コード例 #1
0
 public ExtensionsFromPluginProvider(Lifetime lifetime, ExtensionLocations extensionLocations,
                                     PluginsDirectory pluginsDirectory)
 {
     this.lifetime           = lifetime;
     this.extensionLocations = extensionLocations;
     this.pluginsDirectory   = pluginsDirectory;
     extensions = new CollectionEvents <IExtension>(lifetime, "ExtensionsFromPluginProvider");
 }
コード例 #2
0
 public ExtensionsSyncSource(Lifetime lifetime, ExtensionLocations extensionLocations, IProductNameAndVersion product, AnyProductSettingsLocation anyProductSettingsLocation)
 {
     FilesToSync = new CollectionEvents <IProperty <FileSystemPath> >(lifetime, "ExtensionsSyncSource")
     {
         new Property <FileSystemPath>(lifetime, "ExtensionsSyncSource::ExtensionsSettings1", extensionLocations.UserExtensionSettingsFilePath),
         new Property <FileSystemPath>(lifetime, "ExtensionsSyncSource::ExtensionsSettings2", extensionLocations.UserExtensionSettingsFilePath.ChangeExtension(".xml")),
         new Property <FileSystemPath>(lifetime, "ExtensionsSyncSource::NuGetPackages.config",
                                       extensionLocations.GetBaseLocation(Environment.SpecialFolder.ApplicationData, anyProductSettingsLocation, product).Combine("packages.config"))
     };
 }
コード例 #3
0
 public ExtensionsSyncSource(Lifetime lifetime, ExtensionLocations extensionLocations, IProductNameAndVersion product, AnyProductSettingsLocation anyProductSettingsLocation)
 {
     FilesToSync = new CollectionEvents<IProperty<FileSystemPath>>(lifetime, "ExtensionsSyncSource")
       {
     new Property<FileSystemPath>(lifetime, "ExtensionsSyncSource::ExtensionsSettings1", extensionLocations.UserExtensionSettingsFilePath),
     new Property<FileSystemPath>(lifetime, "ExtensionsSyncSource::ExtensionsSettings2", extensionLocations.UserExtensionSettingsFilePath.ChangeExtension(".xml")),
     new Property<FileSystemPath>(lifetime, "ExtensionsSyncSource::NuGetPackages.config",
       extensionLocations.GetBaseLocation(Environment.SpecialFolder.ApplicationData, anyProductSettingsLocation, product).Combine("packages.config"))
       };
 }
コード例 #4
0
 public ExtensionFromPlugin(Lifetime lifetime, Plugin plugin, IExtensionProvider provider,
                            ExtensionLocations extensionLocations)
 {
     this.plugin             = plugin;
     this.extensionLocations = extensionLocations;
     Id                 = plugin.ID;
     Enabled            = new Property <bool?>(lifetime, string.Format("ExtensionFromPlugin:{0}", Id));
     RuntimeInfoRecords = new ListEvents <ExtensionRecord>(lifetime,
                                                           string.Format("ExtensionFromPlugin:{0}", Id));
     Source   = provider;
     Metadata = new ExtensionFromPluginMetadata(plugin);
 }
コード例 #5
0
 public DynamicExtensionLoaderAccessor(
     IBuildManager buildManager,
     IVirtualPathProvider virtualPathProvider,
     IVirtualPathMonitor virtualPathMonitor,
     IHostEnvironment hostEnvironment,
     IAssemblyProbingFolder assemblyProbingFolder,
     IDependenciesFolder dependenciesFolder,
     IProjectFileParser projectFileParser,
     ExtensionLocations extensionLocations)
     : base(buildManager, virtualPathProvider, virtualPathMonitor, hostEnvironment, assemblyProbingFolder, dependenciesFolder, projectFileParser, extensionLocations)
 {
 }
コード例 #6
0
        public override void PreInitialize()
        {
            ExtensionLocations extensionLocations = new ExtensionLocations();

            IocManager.Register <IExtensionFolders, ModuleFolders>((IKernel kernel, IDictionary parameters) =>
            {
                parameters.Add("paths", extensionLocations.ModuleLocations);
            });
            IocManager.Register <IExtensionFolders, ThemeFolders>((IKernel kernel, IDictionary parameters) =>
            {
                parameters.Add("paths", extensionLocations.ThemeLocations);
            });
        }
コード例 #7
0
        public override void PreInitialize()
        {
            IocManager.IocContainer.Kernel.ComponentModelBuilder.AddContributor(new ProcessModelEvent());
            IocManager.AddConventionalRegistrar(new DependencyConventionalRegistrar(IocManager));
            ExtensionLocations extensionLocations = new ExtensionLocations();

            IocManager.Register <IExtensionFolders, ModuleFolders>((IKernel kernel, IDictionary parameters) =>
            {
                parameters.Add("paths", extensionLocations.ModuleLocations);
            });
            IocManager.Register <IExtensionFolders, ThemeFolders>((IKernel kernel, IDictionary parameters) =>
            {
                parameters.Add("paths", extensionLocations.ThemeLocations);
            });
        }
コード例 #8
0
        public VsixExtension(IExtensionProvider provider, NuSpec nuSpec, FileSystemPath location, 
      ExtensionLocations extensionLocations)
        {
            var source = GetType().Name;

              this.nuSpec = nuSpec;
              this.location = location;
              this.extensionLocations = extensionLocations;

              Version = new Version(nuSpec.Version);
              Metadata = new VsixExtensionMetadata(nuSpec);
              Supported = true; // TODO
              Enabled = new Property<bool?>(string.Format("{0}::Enabled", source), null);
              RuntimeInfoRecords = new ListEvents<ExtensionRecord>(string.Format("{0}::RuntimeInfoRecords", source));
              Source = provider;
        }
コード例 #9
0
        public DynamicExtensionLoader(
            IBuildManager buildManager,
            IVirtualPathProvider virtualPathProvider,
            IVirtualPathMonitor virtualPathMonitor,
            IHostEnvironment hostEnvironment,
            IAssemblyProbingFolder assemblyProbingFolder,
            IDependenciesFolder dependenciesFolder,
            IProjectFileParser projectFileParser,
            ExtensionLocations extensionLocations)
            : base(dependenciesFolder)
        {
            _buildManager          = buildManager;
            _virtualPathProvider   = virtualPathProvider;
            _virtualPathMonitor    = virtualPathMonitor;
            _hostEnvironment       = hostEnvironment;
            _assemblyProbingFolder = assemblyProbingFolder;
            _projectFileParser     = projectFileParser;
            _dependenciesFolder    = dependenciesFolder;

            Logger = NullLogger.Instance;

            _extensionsVirtualPathPrefixes = extensionLocations.ModuleAndThemeLocations;
        }
コード例 #10
0
        public static IContainer CreateHostContainer(Action <ContainerBuilder> registrations)
        {
            ExtensionLocations extensionLocations = new ExtensionLocations();

            var builder = new ContainerBuilder();

            // Application paths and parameters
            builder.RegisterInstance(extensionLocations);

            builder.RegisterModule(new CollectionOrderModule());
            builder.RegisterModule(new LoggingModule());
            builder.RegisterModule(new EventsModule());
            builder.RegisterModule(new CacheModule());

            // a single default host implementation is needed for bootstrapping a web app domain
            builder.RegisterType <DefaultOrchardEventBus>().As <IEventBus>().SingleInstance();
            builder.RegisterType <DefaultCacheHolder>().As <ICacheHolder>().SingleInstance();
            builder.RegisterType <DefaultCacheContextAccessor>().As <ICacheContextAccessor>().SingleInstance();
            builder.RegisterType <DefaultParallelCacheContext>().As <IParallelCacheContext>().SingleInstance();
            builder.RegisterType <DefaultAsyncTokenProvider>().As <IAsyncTokenProvider>().SingleInstance();
            builder.RegisterType <DefaultHostEnvironment>().As <IHostEnvironment>().SingleInstance();
            builder.RegisterType <DefaultHostLocalRestart>().As <IHostLocalRestart>().Named <IEventHandler>(typeof(IShellSettingsManagerEventHandler).Name).SingleInstance();
            builder.RegisterType <DefaultBuildManager>().As <IBuildManager>().SingleInstance();
            builder.RegisterType <DynamicModuleVirtualPathProvider>().As <ICustomVirtualPathProvider>().SingleInstance();
            builder.RegisterType <AppDataFolderRoot>().As <IAppDataFolderRoot>().SingleInstance();
            builder.RegisterType <DefaultExtensionCompiler>().As <IExtensionCompiler>().SingleInstance();
            builder.RegisterType <DefaultRazorCompilationEvents>().As <IRazorCompilationEvents>().SingleInstance();
            builder.RegisterType <DefaultProjectFileParser>().As <IProjectFileParser>().SingleInstance();
            builder.RegisterType <DefaultAssemblyLoader>().As <IAssemblyLoader>().SingleInstance();
            builder.RegisterType <AppDomainAssemblyNameResolver>().As <IAssemblyNameResolver>().SingleInstance();
            builder.RegisterType <GacAssemblyNameResolver>().As <IAssemblyNameResolver>().SingleInstance();
            builder.RegisterType <OrchardFrameworkAssemblyNameResolver>().As <IAssemblyNameResolver>().SingleInstance();
            builder.RegisterType <HttpContextAccessor>().As <IHttpContextAccessor>().InstancePerDependency();
            builder.RegisterType <ViewsBackgroundCompilation>().As <IViewsBackgroundCompilation>().SingleInstance();
            builder.RegisterType <DefaultExceptionPolicy>().As <IExceptionPolicy>().SingleInstance();
            builder.RegisterType <DefaultCriticalErrorProvider>().As <ICriticalErrorProvider>().SingleInstance();
            //builder.RegisterType<RazorTemplateCache>().As<IRazorTemplateProvider>().SingleInstance();

            RegisterVolatileProvider <WebSiteFolder, IWebSiteFolder>(builder);
            RegisterVolatileProvider <AppDataFolder, IAppDataFolder>(builder);
            RegisterVolatileProvider <DefaultLockFileManager, ILockFileManager>(builder);
            RegisterVolatileProvider <Clock, IClock>(builder);
            RegisterVolatileProvider <DefaultDependenciesFolder, IDependenciesFolder>(builder);
            RegisterVolatileProvider <DefaultExtensionDependenciesManager, IExtensionDependenciesManager>(builder);
            RegisterVolatileProvider <DefaultAssemblyProbingFolder, IAssemblyProbingFolder>(builder);
            RegisterVolatileProvider <DefaultVirtualPathMonitor, IVirtualPathMonitor>(builder);
            RegisterVolatileProvider <DefaultVirtualPathProvider, IVirtualPathProvider>(builder);

            builder.RegisterType <DefaultOrchardHost>().As <IOrchardHost>().As <IEventHandler>()
            .Named <IEventHandler>(typeof(IShellSettingsManagerEventHandler).Name)
            .Named <IEventHandler>(typeof(IShellDescriptorManagerEventHandler).Name)
            .SingleInstance();
            {
                builder.RegisterType <ShellSettingsManager>().As <IShellSettingsManager>().SingleInstance();

                builder.RegisterType <ShellContextFactory>().As <IShellContextFactory>().SingleInstance();
                {
                    builder.RegisterType <ShellDescriptorCache>().As <IShellDescriptorCache>().SingleInstance();

                    builder.RegisterType <CompositionStrategy>().As <ICompositionStrategy>().SingleInstance();
                    {
                        builder.RegisterType <ShellContainerRegistrations>().As <IShellContainerRegistrations>().SingleInstance();
                        builder.RegisterType <ExtensionLoaderCoordinator>().As <IExtensionLoaderCoordinator>().SingleInstance();
                        builder.RegisterType <ExtensionMonitoringCoordinator>().As <IExtensionMonitoringCoordinator>().SingleInstance();
                        builder.RegisterType <ExtensionManager>().As <IExtensionManager>().SingleInstance();
                        {
                            builder.RegisterType <ExtensionHarvester>().As <IExtensionHarvester>().SingleInstance();
                            builder.RegisterType <ModuleFolders>().As <IExtensionFolders>().SingleInstance()
                            .WithParameter(new NamedParameter("paths", extensionLocations.ModuleLocations));
                            builder.RegisterType <CoreModuleFolders>().As <IExtensionFolders>().SingleInstance()
                            .WithParameter(new NamedParameter("paths", extensionLocations.CoreLocations));
                            builder.RegisterType <ThemeFolders>().As <IExtensionFolders>().SingleInstance()
                            .WithParameter(new NamedParameter("paths", extensionLocations.ThemeLocations));

                            builder.RegisterType <CoreExtensionLoader>().As <IExtensionLoader>().SingleInstance();
                            builder.RegisterType <ReferencedExtensionLoader>().As <IExtensionLoader>().SingleInstance();
                            builder.RegisterType <PrecompiledExtensionLoader>().As <IExtensionLoader>().SingleInstance();
                            builder.RegisterType <DynamicExtensionLoader>().As <IExtensionLoader>().SingleInstance();
                            builder.RegisterType <RawThemeExtensionLoader>().As <IExtensionLoader>().SingleInstance();
                        }
                    }

                    builder.RegisterType <ShellContainerFactory>().As <IShellContainerFactory>().SingleInstance();
                }

                builder.RegisterType <DefaultProcessingEngine>().As <IProcessingEngine>().SingleInstance();
            }

            builder.RegisterType <RunningShellTable>().As <IRunningShellTable>().SingleInstance();
            builder.RegisterType <DefaultOrchardShell>().As <IOrchardShell>().InstancePerMatchingLifetimeScope("shell");
            builder.RegisterType <SessionConfigurationCache>().As <ISessionConfigurationCache>().InstancePerMatchingLifetimeScope("shell");

            registrations(builder);

            var autofacSection = ConfigurationManager.GetSection(ConfigurationSettingsReaderConstants.DefaultSectionName);

            if (autofacSection != null)
            {
                builder.RegisterModule(new ConfigurationSettingsReader());
            }

            var optionalHostConfig = HostingEnvironment.MapPath("~/Config/Host.config");

            if (File.Exists(optionalHostConfig))
            {
                builder.RegisterModule(new ConfigurationSettingsReader(ConfigurationSettingsReaderConstants.DefaultSectionName, optionalHostConfig));
            }

            var optionalComponentsConfig = HostingEnvironment.MapPath("~/Config/HostComponents.config");

            if (File.Exists(optionalComponentsConfig))
            {
                builder.RegisterModule(new HostComponentsConfigModule(optionalComponentsConfig));
            }

            var container = builder.Build();

            //
            // Register Virtual Path Providers
            //
            if (HostingEnvironment.IsHosted)
            {
                foreach (var vpp in container.Resolve <IEnumerable <ICustomVirtualPathProvider> >())
                {
                    HostingEnvironment.RegisterVirtualPathProvider(vpp.Instance);
                }
            }

            ControllerBuilder.Current.SetControllerFactory(new OrchardControllerFactory());
            FilterProviders.Providers.Add(new OrchardFilterProvider());

            GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerSelector), new DefaultOrchardWebApiHttpControllerSelector(GlobalConfiguration.Configuration));
            GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator), new DefaultOrchardWebApiHttpControllerActivator(GlobalConfiguration.Configuration));
            GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);

            GlobalConfiguration.Configuration.Filters.Add(new OrchardApiActionFilterDispatcher());
            GlobalConfiguration.Configuration.Filters.Add(new OrchardApiExceptionFilterDispatcher());
            GlobalConfiguration.Configuration.Filters.Add(new OrchardApiAuthorizationFilterDispatcher());

            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(new ThemeAwareViewEngineShim());

            var hostContainer = new DefaultOrchardHostContainer(container);

            //MvcServiceLocator.SetCurrent(hostContainer);
            OrchardHostContainerRegistry.RegisterHostContainer(hostContainer);

            // Register localized data annotations
            ModelValidatorProviders.Providers.Clear();
            ModelValidatorProviders.Providers.Add(new LocalizedModelValidatorProvider());

            return(container);
        }
コード例 #11
0
 public VsixExtensionProvider(Lifetime lifetime, ExtensionLocations extensionLocations)
 {
     this.extensionLocations = extensionLocations;
       extensions = new CollectionEvents<IExtension>(lifetime, "VsixExtensionProvider");
 }
コード例 #12
0
        public DynamicModuleVirtualPathProvider(IExtensionDependenciesManager extensionDependenciesManager, ExtensionLocations extensionLocations)
        {
            _extensionDependenciesManager = extensionDependenciesManager;
            Logger = NullLogger.Instance;

            _extensionsVirtualPathPrefixes = extensionLocations.ExtensionsVirtualPathPrefixes;
        }