Exemplo n.º 1
0
        /// <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);
 }
Exemplo n.º 3
0
        /// <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);
 }