public SiteMapFactoryContainer(
     ConfigurationSettings settings,
     IMvcContextFactory mvcContextFactory,
     IUrlPath urlPath)
 {
     this.settings = settings;
     this.mvcContextFactory = mvcContextFactory;
     this.requestCache = this.mvcContextFactory.GetRequestCache();
     this.urlPath = urlPath;
 }
 public XmlSiteMapResultFactoryContainer(ConfigurationSettings settings)
 {
     var siteMapLoaderContainer = new SiteMapLoaderContainer(settings);
     this.siteMapLoader = siteMapLoaderContainer.ResolveSiteMapLoader();
     this.mvcContextFactory = new MvcContextFactory();
     this.bindingFactory = new BindingFactory();
     this.bindingProvider = new BindingProvider(this.bindingFactory, this.mvcContextFactory);
     this.urlPath = new UrlPath(this.mvcContextFactory, this.bindingProvider);
     this.cultureContextFactory = new CultureContextFactory();
 }
 public ControllerFactoryDecorator(
     IControllerFactory controllerFactory,
     ConfigurationSettings settings
     )
 {
     if (controllerFactory == null)
         throw new ArgumentNullException("controllerFactory");
     if (settings == null)
         throw new ArgumentNullException("settings");
     this.innerControllerFactory = controllerFactory;
     this.settings = settings;
 }
 private ICacheDetails ResolveCacheDetails(ConfigurationSettings settings)
 {
     return new CacheDetails(
         TimeSpan.FromMinutes(settings.CacheDuration),
         TimeSpan.MinValue,
     #if NET35
         new AspNetFileCacheDependency(absoluteFileName)
     #else
         new RuntimeFileCacheDependency(absoluteFileName)
     #endif
         );
 }
 public DependencyResolverDecorator(
     IDependencyResolver dependencyResolver,
     ConfigurationSettings settings
     )
 {
     if (dependencyResolver == null)
         throw new ArgumentNullException("dependencyResolver");
     if (settings == null)
         throw new ArgumentNullException("settings");
     this.innerDependencyResolver = dependencyResolver;
     this.settings = settings;
 }
Exemplo n.º 6
0
        public static void Compose()
        {
#if !MVC2
            // Register global namespaces with Razor so we don't have to import them in Web.config
            WebPageRazorHost.AddGlobalImport("MvcSiteMapProvider.Web.Html");
            WebPageRazorHost.AddGlobalImport("MvcSiteMapProvider.Web.Html.Models");
#endif

            // Get the configuration settings
            var settings = new ConfigurationSettings();

            // If the config specifies to use an external DI container, skip the internal container.
            if (!settings.UseExternalDIContainer)
            {
                if (settings.EnableSiteMapFile)
                {
                    // Validate the Xml File.
                    var validator = new SiteMapXmlValidator();
                    validator.ValidateXml(HostingEnvironment.MapPath(settings.SiteMapFileName));
                }

#if !MVC2
                // If not using a custom DependencyResolver, we prefer to use IControllerFactory
                if (DependencyResolver.Current.GetType().FullName.Equals("System.Web.Mvc.DependencyResolver+DefaultDependencyResolver"))
                {
#endif
                    // Setup the Controller Factory with a decorator that can resolve the internal controllers
                    var currentFactory = ControllerBuilder.Current.GetControllerFactory();
                    ControllerBuilder.Current.SetControllerFactory(
                        new ControllerFactoryDecorator(currentFactory, settings));
#if !MVC2
                }
                else
                {
                    // If using a custom IDependencyResolver, decorate it with our IDependencyResolver so we can resolve
                    // our internal controller.
                    var currentResolver = DependencyResolver.Current;
                    DependencyResolver.SetResolver(new DependencyResolverDecorator(currentResolver, settings));
                }
#endif

                // Set the static loader instance
                var siteMapLoaderContainer = new SiteMapLoaderContainer(settings);
                SiteMaps.Loader = siteMapLoaderContainer.ResolveSiteMapLoader();

                if (settings.EnableSitemapsXml)
                {
                    // Register the route for SiteMaps XML
                    XmlSiteMapController.RegisterRoutes(RouteTable.Routes);
                }
            }
        }
 public SiteMapNodeFactoryContainer(
     ConfigurationSettings settings,
     IMvcContextFactory mvcContextFactory,
     IUrlPath urlPath)
 {
     this.absoluteFileName = HostingEnvironment.MapPath(settings.SiteMapFileName);
     this.settings = settings;
     this.mvcContextFactory = mvcContextFactory;
     this.requestCache = this.mvcContextFactory.GetRequestCache();
     this.urlPath = urlPath;
     this.dynamicNodeProviders = this.ResolveDynamicNodeProviders();
     this.siteMapNodeUrlResolvers = this.ResolveSiteMapNodeUrlResolvers();
     this.siteMapNodeVisibilityProviders = this.ResolveSiteMapNodeVisibilityProviders(settings.DefaultSiteMapNodeVisibiltyProvider);
 }
 public SiteMapNodeFactoryContainer(
     ConfigurationSettings settings,
     IMvcContextFactory mvcContextFactory,
     IUrlPath urlPath)
 {
     this.absoluteFileName = HostingEnvironment.MapPath(settings.SiteMapFileName);
     this.settings = settings;
     this.mvcContextFactory = mvcContextFactory;
     this.requestCache = this.mvcContextFactory.GetRequestCache();
     this.urlPath = urlPath;
     this.assemblyProvider = new AttributeAssemblyProvider(settings.IncludeAssembliesForScan, settings.ExcludeAssembliesForScan);
     this.mvcSiteMapNodeAttributeProvider = new MvcSiteMapNodeAttributeDefinitionProvider();
     this.dynamicNodeProviders = this.ResolveDynamicNodeProviders();
     this.siteMapNodeUrlResolvers = this.ResolveSiteMapNodeUrlResolvers();
     this.siteMapNodeVisibilityProviders = this.ResolveSiteMapNodeVisibilityProviders(settings.DefaultSiteMapNodeVisibiltyProvider);
 }
        public SiteMapLoaderContainer(ConfigurationSettings settings)
        {
            // Singleton instances
            if (settings.EnableSiteMapFile)
            {
                this.absoluteFileName = HostingEnvironment.MapPath(settings.SiteMapFileName);
            }
            this.mvcContextFactory = new MvcContextFactory();
#if NET35
            this.siteMapCache = new SiteMapCache(new AspNetCacheProvider <ISiteMap>(this.mvcContextFactory));
#else
            this.siteMapCache = new SiteMapCache(new RuntimeCacheProvider <ISiteMap>(System.Runtime.Caching.MemoryCache.Default));
#endif
            this.cacheDependency                   = this.ResolveCacheDependency(settings);
            this.requestCache                      = this.mvcContextFactory.GetRequestCache();
            this.bindingFactory                    = new BindingFactory();
            this.bindingProvider                   = new BindingProvider(this.bindingFactory, this.mvcContextFactory);
            this.urlPath                           = new UrlPath(this.mvcContextFactory, this.bindingProvider);
            this.siteMapCacheKeyGenerator          = new SiteMapCacheKeyGenerator(this.mvcContextFactory);
            this.siteMapCacheKeyToBuilderSetMapper = new SiteMapCacheKeyToBuilderSetMapper();
            this.reservedAttributeNameProvider     = new ReservedAttributeNameProvider(settings.AttributesToIgnore);
            var siteMapNodeFactoryContainer = new SiteMapNodeFactoryContainer(settings, this.mvcContextFactory, this.urlPath, this.reservedAttributeNameProvider);
            this.siteMapNodeToParentRelationFactory = new SiteMapNodeToParentRelationFactory();
            this.nodeKeyGenerator                          = new NodeKeyGenerator();
            this.siteMapNodeFactory                        = siteMapNodeFactoryContainer.ResolveSiteMapNodeFactory();
            this.siteMapNodeCreatorFactory                 = this.ResolveSiteMapNodeCreatorFactory();
            this.cultureContextFactory                     = new CultureContextFactory();
            this.dynamicSiteMapNodeBuilderFactory          = new DynamicSiteMapNodeBuilderFactory(this.siteMapNodeCreatorFactory, this.cultureContextFactory);
            this.siteMapHierarchyBuilder                   = new SiteMapHierarchyBuilder();
            this.siteMapNodeHelperFactory                  = this.ResolveSiteMapNodeHelperFactory();
            this.siteMapNodeVisitor                        = this.ResolveSiteMapNodeVisitor(settings);
            this.siteMapXmlNameProvider                    = new SiteMapXmlNameProvider();
            this.attributeAssemblyProviderFactory          = new AttributeAssemblyProviderFactory();
            this.mvcSiteMapNodeAttributeDefinitionProvider = new MvcSiteMapNodeAttributeDefinitionProvider();
            this.siteMapNodeProvider                       = this.ResolveSiteMapNodeProvider(settings);
            this.siteMapBuiderSetStrategy                  = this.ResolveSiteMapBuilderSetStrategy(settings);
            var siteMapFactoryContainer = new SiteMapFactoryContainer(settings, this.mvcContextFactory, this.urlPath);
            this.siteMapFactory = siteMapFactoryContainer.ResolveSiteMapFactory();
            this.siteMapCreator = new SiteMapCreator(this.siteMapCacheKeyToBuilderSetMapper, this.siteMapBuiderSetStrategy, this.siteMapFactory);
        }
        public SiteMapLoaderContainer(ConfigurationSettings settings)
        {
            // Singleton instances
            if (settings.EnableSiteMapFile)
            {
                this.absoluteFileName = HostingEnvironment.MapPath(settings.SiteMapFileName);
            }
            this.mvcContextFactory = new MvcContextFactory();
#if NET35
            this.siteMapCache = new SiteMapCache(new AspNetCacheProvider<ISiteMap>(this.mvcContextFactory));
#else
            this.siteMapCache = new SiteMapCache(new RuntimeCacheProvider<ISiteMap>(System.Runtime.Caching.MemoryCache.Default));
#endif
            this.cacheDependency = this.ResolveCacheDependency(settings);
            this.requestCache = this.mvcContextFactory.GetRequestCache();
            this.bindingFactory = new BindingFactory();
            this.bindingProvider = new BindingProvider(this.bindingFactory, this.mvcContextFactory);
            this.urlPath = new UrlPath(this.mvcContextFactory, this.bindingProvider);
            this.siteMapCacheKeyGenerator = new SiteMapCacheKeyGenerator(this.mvcContextFactory);
            this.siteMapCacheKeyToBuilderSetMapper = new SiteMapCacheKeyToBuilderSetMapper();
            this.reservedAttributeNameProvider = new ReservedAttributeNameProvider(settings.AttributesToIgnore);
            var siteMapNodeFactoryContainer = new SiteMapNodeFactoryContainer(settings, this.mvcContextFactory, this.urlPath, this.reservedAttributeNameProvider);
            this.siteMapNodeToParentRelationFactory = new SiteMapNodeToParentRelationFactory();
            this.nodeKeyGenerator = new NodeKeyGenerator();
            this.siteMapNodeFactory = siteMapNodeFactoryContainer.ResolveSiteMapNodeFactory();
            this.siteMapNodeCreatorFactory = this.ResolveSiteMapNodeCreatorFactory();
            this.cultureContextFactory = new CultureContextFactory();
            this.dynamicSiteMapNodeBuilderFactory = new DynamicSiteMapNodeBuilderFactory(this.siteMapNodeCreatorFactory, this.cultureContextFactory);
            this.siteMapHierarchyBuilder = new SiteMapHierarchyBuilder();
            this.siteMapNodeHelperFactory = this.ResolveSiteMapNodeHelperFactory();
            this.siteMapNodeVisitor = this.ResolveSiteMapNodeVisitor(settings);
            this.siteMapXmlNameProvider = new SiteMapXmlNameProvider();
            this.attributeAssemblyProviderFactory = new AttributeAssemblyProviderFactory();
            this.mvcSiteMapNodeAttributeDefinitionProvider = new MvcSiteMapNodeAttributeDefinitionProvider();
            this.siteMapNodeProvider = this.ResolveSiteMapNodeProvider(settings);
            this.siteMapBuiderSetStrategy = this.ResolveSiteMapBuilderSetStrategy(settings);
            var siteMapFactoryContainer = new SiteMapFactoryContainer(settings, this.mvcContextFactory, this.urlPath);
            this.siteMapFactory = siteMapFactoryContainer.ResolveSiteMapFactory();
            this.siteMapCreator = new SiteMapCreator(this.siteMapCacheKeyToBuilderSetMapper, this.siteMapBuiderSetStrategy, this.siteMapFactory);
        }
 public SiteMapNodeFactoryContainer(
     ConfigurationSettings settings,
     IMvcContextFactory mvcContextFactory,
     IUrlPath urlPath,
     IReservedAttributeNameProvider reservedAttributeNameProvider)
 {
     if (settings.EnableSiteMapFile)
     {
         this.absoluteFileName = HostingEnvironment.MapPath(settings.SiteMapFileName);
     }
     this.settings                        = settings;
     this.mvcContextFactory               = mvcContextFactory;
     this.requestCache                    = this.mvcContextFactory.GetRequestCache();
     this.urlPath                         = urlPath;
     this.reservedAttributeNameProvider   = reservedAttributeNameProvider;
     this.javaScriptSerializer            = new JavaScriptSerializerAdapter();
     this.jsonToDictionaryDeserializer    = new JsonToDictionaryDeserializer(this.javaScriptSerializer, this.mvcContextFactory);
     this.assemblyProvider                = new AttributeAssemblyProvider(settings.IncludeAssembliesForScan, settings.ExcludeAssembliesForScan);
     this.mvcSiteMapNodeAttributeProvider = new MvcSiteMapNodeAttributeDefinitionProvider();
     this.dynamicNodeProviders            = this.ResolveDynamicNodeProviders();
     this.siteMapNodeUrlResolvers         = this.ResolveSiteMapNodeUrlResolvers();
     this.siteMapNodeVisibilityProviders  = this.ResolveSiteMapNodeVisibilityProviders(settings.DefaultSiteMapNodeVisibiltyProvider);
 }
 public SiteMapNodeFactoryContainer(
     ConfigurationSettings settings,
     IMvcContextFactory mvcContextFactory,
     IUrlPath urlPath,
     IReservedAttributeNameProvider reservedAttributeNameProvider)
 {
     if (settings.EnableSiteMapFile)
     {
         this.absoluteFileName = HostingEnvironment.MapPath(settings.SiteMapFileName);
     }
     this.settings = settings;
     this.mvcContextFactory = mvcContextFactory;
     this.requestCache = this.mvcContextFactory.GetRequestCache();
     this.urlPath = urlPath;
     this.reservedAttributeNameProvider = reservedAttributeNameProvider;
     this.javaScriptSerializer = new JavaScriptSerializerAdapter();
     this.jsonToDictionaryDeserializer = new JsonToDictionaryDeserializer(this.javaScriptSerializer, this.mvcContextFactory);
     this.assemblyProvider = new AttributeAssemblyProvider(settings.IncludeAssembliesForScan, settings.ExcludeAssembliesForScan);
     this.mvcSiteMapNodeAttributeProvider = new MvcSiteMapNodeAttributeDefinitionProvider();
     this.dynamicNodeProviders = this.ResolveDynamicNodeProviders();
     this.siteMapNodeUrlResolvers = this.ResolveSiteMapNodeUrlResolvers();
     this.siteMapNodeVisibilityProviders = this.ResolveSiteMapNodeVisibilityProviders(settings.DefaultSiteMapNodeVisibiltyProvider);
 }
        public SiteMapLoaderContainer(ConfigurationSettings settings)
        {
            // Singleton instances
            this.absoluteFileName  = HostingEnvironment.MapPath(settings.SiteMapFileName);
            this.mvcContextFactory = new MvcContextFactory();
#if NET35
            this.siteMapCache = new SiteMapCache(new AspNetCacheProvider <ISiteMap>(this.mvcContextFactory));
#else
            this.siteMapCache = new SiteMapCache(new RuntimeCacheProvider <ISiteMap>(System.Runtime.Caching.MemoryCache.Default));
#endif
            this.requestCache                      = this.mvcContextFactory.GetRequestCache();
            this.urlPath                           = new UrlPath(this.mvcContextFactory);
            this.siteMapCacheKeyGenerator          = new SiteMapCacheKeyGenerator(this.mvcContextFactory);
            this.siteMapCacheKeyToBuilderSetMapper = new SiteMapCacheKeyToBuilderSetMapper();
            this.nodeKeyGenerator                  = new NodeKeyGenerator();
            var siteMapNodeFactoryContainer = new SiteMapNodeFactoryContainer(settings, this.mvcContextFactory, this.urlPath);
            this.siteMapNodeFactory       = siteMapNodeFactoryContainer.ResolveSiteMapNodeFactory();
            this.siteMapXmlNameProvider   = new SiteMapXmlNameProvider();
            this.dynamicNodeBuilder       = new DynamicNodeBuilder(this.nodeKeyGenerator, this.siteMapNodeFactory);
            this.siteMapBuiderSetStrategy = this.ResolveSiteMapBuilderSetStrategy(settings);
            var siteMapFactoryContainer = new SiteMapFactoryContainer(settings, this.mvcContextFactory, this.urlPath);
            this.siteMapFactory = siteMapFactoryContainer.ResolveSiteMapFactory();
            this.siteMapCreator = new SiteMapCreator(this.siteMapCacheKeyToBuilderSetMapper, this.siteMapBuiderSetStrategy, this.siteMapFactory);
        }
 public SiteMapLoaderContainer(ConfigurationSettings settings)
 {
     // Singleton instances
     this.absoluteFileName = HostingEnvironment.MapPath(settings.SiteMapFileName);
     this.mvcContextFactory = new MvcContextFactory();
     #if NET35
     this.siteMapCache = new SiteMapCache(new AspNetCacheProvider<ISiteMap>(this.mvcContextFactory));
     #else
     this.siteMapCache = new SiteMapCache(new RuntimeCacheProvider<ISiteMap>(System.Runtime.Caching.MemoryCache.Default));
     #endif
     this.requestCache = this.mvcContextFactory.GetRequestCache();
     this.urlPath = new UrlPath(this.mvcContextFactory);
     this.siteMapCacheKeyGenerator = new SiteMapCacheKeyGenerator(this.mvcContextFactory);
     this.siteMapCacheKeyToBuilderSetMapper = new SiteMapCacheKeyToBuilderSetMapper();
     this.nodeKeyGenerator = new NodeKeyGenerator();
     var siteMapNodeFactoryContainer = new SiteMapNodeFactoryContainer(settings, this.mvcContextFactory, this.urlPath);
     this.siteMapNodeFactory = siteMapNodeFactoryContainer.ResolveSiteMapNodeFactory();
     this.siteMapXmlNameProvider = new SiteMapXmlNameProvider();
     this.dynamicNodeBuilder = new DynamicNodeBuilder(this.nodeKeyGenerator, this.siteMapNodeFactory);
     this.siteMapBuiderSetStrategy = this.ResolveSiteMapBuilderSetStrategy(settings);
     var siteMapFactoryContainer = new SiteMapFactoryContainer(settings, this.mvcContextFactory, this.urlPath);
     this.siteMapFactory = siteMapFactoryContainer.ResolveSiteMapFactory();
     this.siteMapCreator = new SiteMapCreator(this.siteMapCacheKeyToBuilderSetMapper, this.siteMapBuiderSetStrategy, this.siteMapFactory);
 }
 private ISiteMapBuilderSetStrategy ResolveSiteMapBuilderSetStrategy(ConfigurationSettings settings)
 {
     return new SiteMapBuilderSetStrategy(
         new ISiteMapBuilderSet[] {
             new SiteMapBuilderSet(
                 "default", 
                 settings.SecurityTrimmingEnabled, 
                 settings.EnableLocalization,
                 settings.VisibilityAffectsDescendants,
                 settings.UseTitleIfDescriptionNotProvided,
                 this.ResolveSiteMapBuilder(settings),
                 this.ResolveCacheDetails(settings)
                 )
             }
         );
 }
        private ICacheDependency ResolveCacheDependency(ConfigurationSettings settings)
        {
            if (settings.EnableSiteMapFile)
            {
#if NET35
                return new AspNetFileCacheDependency(absoluteFileName);
#else
                return new RuntimeFileCacheDependency(absoluteFileName);
#endif
            }
            else
            {
                return new NullCacheDependency();
            }
        }
 private ICacheDetails ResolveCacheDetails(ConfigurationSettings settings)
 {
     return new CacheDetails(
         TimeSpan.FromMinutes(settings.CacheDuration),
         TimeSpan.MinValue,
         this.cacheDependency
         );
 }
 private ISiteMapNodeVisitor ResolveSiteMapNodeVisitor(ConfigurationSettings settings)
 {
     if (settings.EnableResolvedUrlCaching)
     {
         return new UrlResolvingSiteMapNodeVisitor();
     }
     else
     {
         return new NullSiteMapNodeVisitor();
     }
 }
 private ISiteMapNodeProvider ResolveSiteMapNodeProvider(ConfigurationSettings settings)
 {
     var providers = new List<ISiteMapNodeProvider>();
     if (settings.EnableSiteMapFile)
     {
         providers.Add(this.ResolveXmlSiteMapNodeProvider(settings.IncludeRootNodeFromSiteMapFile, settings.EnableSiteMapFileNestedDynamicNodeRecursion));
     }
     if (settings.ScanAssembliesForSiteMapNodes)
     {
         providers.Add(this.ResolveReflectionSiteMapNodeProvider(settings.IncludeAssembliesForScan, settings.ExcludeAssembliesForScan));
     }
     return new CompositeSiteMapNodeProvider(providers.ToArray());
 }
 private ISiteMapBuilder ResolveSiteMapBuilder(ConfigurationSettings settings)
 {
     return new SiteMapBuilder(
         this.siteMapNodeProvider,
         this.siteMapNodeVisitor,
         this.siteMapHierarchyBuilder,
         this.siteMapNodeHelperFactory,
         this.cultureContextFactory);
 }
 private ISiteMapBuilder ResolveSiteMapBuilder(ConfigurationSettings settings)
 {
     var builders = new List<ISiteMapBuilder>();
     builders.Add(this.ResolveXmlSiteMapBuilder(settings.SiteMapFileName, settings.AttributesToIgnore));
     if (settings.ScanAssembliesForSiteMapNodes)
     {
         builders.Add(this.ResolveReflectionSiteMapBuilder(settings.IncludeAssembliesForScan, settings.ExcludeAssembliesForScan, settings.AttributesToIgnore));
     }
     if (settings.EnableResolvedUrlCaching)
     {
         builders.Add(this.ResolveVisitingSiteMapBuilder());
     }
     return new CompositeSiteMapBuilder(builders.ToArray());
 }
 public XmlSiteMapResultFactoryContainer(ConfigurationSettings settings)
 {
     var siteMapLoaderContainer = new SiteMapLoaderContainer(settings);
     this.siteMapLoader = siteMapLoaderContainer.ResolveSiteMapLoader();
     this.urlPath = new UrlPath(new MvcContextFactory());
 }
        private ISiteMapBuilder ResolveSiteMapBuilder(ConfigurationSettings settings)
        {
            var xmlSiteMapBuilder = this.ResolveXmlSiteMapBuilder(settings.SiteMapFileName, settings.AttributesToIgnore);
            var visitingSiteMapBuilder = this.ResolveVisitingSiteMapBuilder();

            if (settings.ScanAssembliesForSiteMapNodes)
            {
                var reflectionSiteMapBuilder = this.ResolveReflectionSiteMapBuilder(settings.IncludeAssembliesForScan, settings.ExcludeAssembliesForScan, settings.AttributesToIgnore);
                return new CompositeSiteMapBuilder(xmlSiteMapBuilder, reflectionSiteMapBuilder, visitingSiteMapBuilder);
            }
            else
            {
                return new CompositeSiteMapBuilder(xmlSiteMapBuilder, visitingSiteMapBuilder);
            }
        }
 private ISiteMapBuilderSetStrategy ResolveSiteMapBuilderSetStrategy(ConfigurationSettings settings)
 {
     return new SiteMapBuilderSetStrategy(
         new ISiteMapBuilderSet[] {
             new SiteMapBuilderSet(
                 "default",
                 settings.SecurityTrimmingEnabled,
                 settings.EnableLocalization,
                 this.ResolveSiteMapBuilder(settings),
                 this.ResolveCacheDetails(settings)
                 )
             }
         );
 }