/// <summary> /// Load the module type. /// </summary> /// <param name="moduleInfo">The module Info.</param> /// <exception cref="System.ArgumentNullException">The <paramref name="moduleInfo" /> is <c>null</c>.</exception> public void LoadModuleType(ModuleInfo moduleInfo) { // ReSharper disable once ImplicitlyCapturedClosure Argument.IsNotNull(() => moduleInfo); Dispatcher currentDispatcher = DispatcherHelper.CurrentDispatcher; Log.Debug("Loading module type '{0}' from package '{1}'", moduleInfo.ModuleType, moduleInfo.Ref); new Thread(() => { InstallPackageRequest installPackageRequest; var packageName = moduleInfo.GetPackageName(); if (packageName != null && this.TryCreateInstallPackageRequest(moduleInfo, out installPackageRequest)) { currentDispatcher.BeginInvoke(() => OnModuleDownloadProgressChanged(new ModuleDownloadProgressChangedEventArgs(moduleInfo, 0, 1))); bool installed = false; try { installPackageRequest.Execute(); installed = true; } catch (Exception e) { currentDispatcher.BeginInvoke(() => OnLoadModuleCompleted(new LoadModuleCompletedEventArgs(moduleInfo, e))); } if (installed) { var fileModuleTypeLoader = new FileModuleTypeLoader(); var fileModuleInfo = new ModuleInfo(moduleInfo.ModuleName, moduleInfo.ModuleType) { Ref = installPackageRequest.AssemblyFileRef, InitializationMode = moduleInfo.InitializationMode, DependsOn = moduleInfo.DependsOn }; fileModuleTypeLoader.ModuleDownloadProgressChanged += (sender, args) => { moduleInfo.State = args.ModuleInfo.State; currentDispatcher.BeginInvoke(() => OnModuleDownloadProgressChanged(new ModuleDownloadProgressChangedEventArgs(moduleInfo, args.BytesReceived, args.TotalBytesToReceive))); }; fileModuleTypeLoader.LoadModuleCompleted += (sender, args) => { moduleInfo.State = args.ModuleInfo.State; currentDispatcher.BeginInvoke(() => OnLoadModuleCompleted(new LoadModuleCompletedEventArgs(moduleInfo, args.Error))); }; fileModuleTypeLoader.LoadModuleType(fileModuleInfo); } } else { currentDispatcher.BeginInvoke(() => OnLoadModuleCompleted(new LoadModuleCompletedEventArgs(moduleInfo, new ModuleNotFoundException(moduleInfo.ModuleName, string.Format(CultureInfo.InvariantCulture, "The package '{0}' for module '{1}' was not found", moduleInfo.Ref, moduleInfo.ModuleName))))); } }).Start(); }
public void Returns_The_PackageName_With_Version_As_Null_If_The_Version_Number_Is_Not_Specified_In_The_Ref_ModuleInfo_Property() { var moduleInfo = new ModuleInfo { Ref = PackageId }; var packageName = moduleInfo.GetPackageName(); Assert.IsNull(packageName.Version); }
/// <summary> /// Can load module type. /// </summary> /// <param name="moduleInfo">The module Info.</param> /// <returns>The <see cref="bool" />.</returns> /// <exception cref="System.ArgumentNullException">The <paramref name="moduleInfo" /> is <c>null</c>.</exception> /// <exception cref="System.InvalidOperationException">The <see cref="ModuleInfo.ModuleType" /> property of <paramref name="moduleInfo" /> parameter doesn't speciefied usign qualified name pattern.</exception> public bool CanLoadModuleType(ModuleInfo moduleInfo) { Argument.IsNotNull(() => moduleInfo); return moduleInfo.GetPackageName() != null; }
public void Returns_The_PackageName_With_The_Version_Specified_On_The_Ref_ModuleInfo_Property() { var moduleInfo = new ModuleInfo { Ref = string.Format("{0}, {1}", PackageId, Version) }; var packageName = moduleInfo.GetPackageName(); Assert.AreEqual(packageName.Version.ToString(), Version); }
public void Returns_Null_If_The_Ref_Value_Is_Empty() { var moduleInfo = new ModuleInfo { Ref = string.Empty }; var packageName = moduleInfo.GetPackageName(); Assert.IsNull(packageName); }
public void Returns_Null_If_The_Version_Number_Is_Specified_Incorrectly() { var moduleInfo = new ModuleInfo { Ref = "&#$%2435.234.5, asdfhalksdfhas" }; var packageName = moduleInfo.GetPackageName(); Assert.IsNull(packageName); }
public void Returns_The_PackageName_With_The_Id_Specified_On_The_Ref_ModuleInfo_Property() { var moduleInfo = new ModuleInfo { Ref = PackageId }; var packageName = moduleInfo.GetPackageName(); Assert.AreEqual(packageName.Id, PackageId); }
public void Returns_The_PackageName_If_A_Valid_Ref_Value_Is_Specified_On_ModuleInfo_Property() { var moduleInfo = new ModuleInfo { Ref = PackageId }; var packageName = moduleInfo.GetPackageName(); Assert.IsNotNull(packageName); }