AssemblyTypeScanner that only accepts types that also meet the requirements of being ObjectDefintions.
Inheritance: Spring.Context.Attributes.RequiredConstraintAssemblyTypeScanner
        /// <summary>
        /// Scans for types using the provided scanner.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="scanner">The scanner.</param>
        public static void Scan(this GenericApplicationContext context, AssemblyObjectDefinitionScanner scanner)
        {
            var registry = context.ObjectFactory as IObjectDefinitionRegistry;
            scanner.ScanAndRegisterTypes(registry);

            AttributeConfigUtils.RegisterAttributeConfigProcessors(registry);
        }
        /// <summary>
        /// Configures the scanner.
        /// </summary>
        /// <param name="parserContext">The parser context.</param>
        /// <param name="element">The element.</param>
        /// <returns></returns>
		protected virtual AssemblyObjectDefinitionScanner ConfigureScanner(ParserContext parserContext, XmlElement element)
		{
			var scanner = new AssemblyObjectDefinitionScanner();

            ParseBaseAssembliesAttribute(scanner, element);
            ParseNameGeneratorAttribute(scanner, element);
            ParseTypeFilters(scanner, element);

            scanner.Defaults = parserContext.ParserHelper.Defaults;

            return scanner;
		}
        /// <summary>
        /// Scans for types that satisfy specified predicates located in the specified scan path.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="assemblyScanPath">The assembly scan path.</param>
        /// <param name="assemblyPredicate">The assembly predicate.</param>
        /// <param name="typePredicate">The type predicate.</param>
        public static void Scan(this AbstractApplicationContext context, string assemblyScanPath, Predicate<Assembly> assemblyPredicate,
                                Predicate<Type> typePredicate)
        {
            //create a scanner instance using the scan path
            var scanner = new AssemblyObjectDefinitionScanner(assemblyScanPath);

            //configure the scanner per the provided constraints
            scanner.WithAssemblyFilter(assemblyPredicate).WithIncludeFilter(typePredicate);

            //pass the scanner to primary Scan method to actually do the work
            Scan(context, scanner);
        }
 public void _TestSetup()
 {
     _scanner = new AssemblyObjectDefinitionScanner();
 }
 private void ParseTypeFilters(AssemblyObjectDefinitionScanner scanner, XmlElement element)
 {
     foreach (XmlNode node in element.ChildNodes)
     {
         if (node.Name.Contains(INCLUDE_FILTER_ELEMENT))
             scanner.WithIncludeFilter(CreateTypeFilter(node));
         else if (node.Name.Contains(EXCLUDE_FILTER_ELEMENT))
             scanner.WithExcludeFilter(CreateTypeFilter(node));
     }
 }
 private void ParseNameGeneratorAttribute(AssemblyObjectDefinitionScanner scanner, XmlElement element)
 {
     var nameGeneratorString = element.GetAttribute(NAME_GENERATOR_ATTRIBUTE);
     var nameGenerator = CustomTypeFactory.GetNameGenerator(nameGeneratorString);
     if (nameGenerator != null)
         scanner.ObjectNameGenerator = nameGenerator;
 }
        private void ParseBaseAssembliesAttribute(AssemblyObjectDefinitionScanner scanner, XmlElement element)
        {
            var baseAssemblies = element.GetAttribute(BASE_ASSEMBLIES_ATTRIBUTE);

            if (string.IsNullOrEmpty(baseAssemblies))
                return;

            foreach (var baseAssembly in baseAssemblies.Split(','))
            {
                scanner.WithAssemblyFilter(assy => assy.FullName.StartsWith(baseAssembly));
            }
        }
 public void _TestSetup()
 {
     _context = new CodeConfigApplicationContext();
     _scanner = new AssemblyObjectDefinitionScanner();
 }
        /// <summary>
        /// Configures the scanner.
        /// </summary>
        /// <param name="parserContext">The parser context.</param>
        /// <param name="element">The element.</param>
        /// <returns></returns>
        protected virtual AssemblyObjectDefinitionScanner ConfigureScanner(ParserContext parserContext, XmlElement element)
        {
            XmlReaderContext readerContext = parserContext.ReaderContext;
            bool useDefaultFilters = true;
            if (element.HasAttribute("use-default-filters"))
            {
                useDefaultFilters = bool.Parse(element.GetAttribute("use-default-filters"));
            }

            AssemblyObjectDefinitionScanner scanner = new AssemblyObjectDefinitionScanner();

            return scanner;
        }
 public void _TestSetup()
 {
     _scanner = new AssemblyObjectDefinitionScanner();
 }
Esempio n. 11
0
 public void _SetUp()
 {
     _scanner = new AssemblyObjectDefinitionScanner();
     _context = new CodeConfigApplicationContext();
 }
 private void ParseTypeFilters(AssemblyObjectDefinitionScanner scanner, XmlElement element)
 {
     foreach (XmlNode node in element.ChildNodes)
     {
         if (node.Name.Contains(INCLUDE_FILTER_ELEMENT))
         {
             var filter = CreateTypeFilter(node);
             Logger.Debug(m => m("Inlude Filter: {0}", filter));
             scanner.WithIncludeFilter(filter);
         }
         else if (node.Name.Contains(EXCLUDE_FILTER_ELEMENT))
         {
             var filter = CreateTypeFilter(node);
             Logger.Debug(m => m("Exclude Filter: {0}", filter));
             scanner.WithExcludeFilter(filter);
         }
     }
 }
        public void Can_Filter_For_Specific_Types_With_Multiple_Include_Filters()
        {
            var scanner = new AssemblyObjectDefinitionScanner();
            scanner.WithIncludeFilter(type => type.FullName.Contains(typeof(TheImportedConfigurationClass).Name));
            scanner.WithIncludeFilter(type => type.FullName.Contains(typeof(TheConfigurationClass).Name));

            _context.Scan(scanner);
            _context.Refresh();

            AssertExpectedObjectsAreRegisteredWith(_context);
        }
 public void Scanner()
 {
     AssemblyObjectDefinitionScanner scanner = new AssemblyObjectDefinitionScanner();
     scanner.AssemblyHavingType<TheConfigurationClass>();
 }
 /// <summary>
 /// Scans for types using the provided scanner.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="scanner">The scanner.</param>
 public static void Scan(this AbstractApplicationContext context, AssemblyObjectDefinitionScanner scanner)
 {
     scanner.ScanAndRegisterTypes((IObjectDefinitionRegistry)context.ObjectFactory);
 }