public void GenericApplicationContextConstructorTests()
        {
            IApplicationContext       ctx        = new XmlApplicationContext("assembly://Oragon.Spring.Core.Tests/Oragon.Spring.Context/contextlifecycle.xml");
            GenericApplicationContext genericCtx = new GenericApplicationContext(ctx);

            genericCtx = new GenericApplicationContext("test", true, ctx);
        }
        /// <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>
        /// Scans the specified context.
        /// </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>
        /// <param name="assembliesToScan">The assemblies to scan.</param>
        public static void Scan(this GenericApplicationContext context, string assemblyScanPath, Func <Assembly, bool> assemblyPredicate, Func <Type, bool> typePredicate, params string[] assembliesToScan)
        {
            AssemblyObjectDefinitionScanner scanner =
                ArrayUtils.HasElements(assembliesToScan) ? new AssemblyObjectDefinitionScanner(assembliesToScan) : new AssemblyObjectDefinitionScanner();

            scanner.ScanStartFolderPath = 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 GenericApplicationContextWithXmlObjectDefinitions()
        {
            GenericApplicationContext ctx    = new GenericApplicationContext();
            XmlObjectDefinitionReader reader = new XmlObjectDefinitionReader(ctx);

            reader.LoadObjectDefinitions("assembly://Oragon.Spring.Core.Tests/Oragon.Spring.Context.Support/contextB.xml");
            reader.LoadObjectDefinitions("assembly://Oragon.Spring.Core.Tests/Oragon.Spring.Context.Support/contextC.xml");
            reader.LoadObjectDefinitions("assembly://Oragon.Spring.Core.Tests/Oragon.Spring.Context.Support/contextA.xml");
            ctx.Refresh();

            Assert.IsTrue(ctx.ContainsObject("service"));
            Assert.IsTrue(ctx.ContainsObject("logicOne"));
            Assert.IsTrue(ctx.ContainsObject("logicTwo"));
            ctx.Dispose();
        }
        private void AssertExpectedObjectsAreRegisteredWith(GenericApplicationContext context, int expectedDefinitionCount)
        {
            // only check names that are not part of configuration namespace test
            List <string> names = new List <string>(context.DefaultListableObjectFactory.GetObjectDefinitionNames());

            names.RemoveAll(x => x.StartsWith("ConfigurationNameSpace"));


            if (names.Count != expectedDefinitionCount)
            {
                Console.WriteLine("Actual types registered with the container:");
                foreach (var name in names)
                {
                    Console.WriteLine(name);
                }
            }


            Assert.That(names.Count, Is.EqualTo(expectedDefinitionCount));
        }
        public void ClearWithDynamicProxies()
        {
            CompositionProxyTypeBuilder typeBuilder = new CompositionProxyTypeBuilder();

            typeBuilder.TargetType = typeof(TestObject);
            Type proxyType = typeBuilder.BuildProxyType();

            DefaultListableObjectFactory of  = new DefaultListableObjectFactory();
            RootObjectDefinition         od1 = new RootObjectDefinition(proxyType, false);

            od1.PropertyValues.Add("Name", "Bruno");
            of.RegisterObjectDefinition("testObject", od1);

            GenericApplicationContext ctx1 = new GenericApplicationContext(of);

            ContextRegistry.RegisterContext(ctx1);

            ITestObject to1 = ContextRegistry.GetContext().GetObject("testObject") as ITestObject;

            Assert.IsNotNull(to1);
            Assert.AreEqual("Bruno", to1.Name);

            DefaultListableObjectFactory of2 = new DefaultListableObjectFactory();
            RootObjectDefinition         od2 = new RootObjectDefinition(proxyType, false);

            od2.PropertyValues.Add("Name", "Baia");
            of2.RegisterObjectDefinition("testObject", od2);
            GenericApplicationContext ctx2 = new GenericApplicationContext(of2);

            ContextRegistry.Clear();

            ITestObject to2 = ctx2.GetObject("testObject") as ITestObject;

            Assert.IsNotNull(to2);
            Assert.AreEqual("Baia", to2.Name);
        }
 /// <summary>
 /// Scans for types using the default scanner.
 /// </summary>
 /// <param name="context">The context.</param>
 public static void ScanAllAssemblies(this GenericApplicationContext context)
 {
     Scan(context, new AssemblyObjectDefinitionScanner());
 }
 /// <summary>
 /// Scans for types that satisfy specified predicates.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="assemblyPredicate">The assembly predicate.</param>
 /// <param name="typePredicate">The type predicate.</param>
 public static void Scan(this GenericApplicationContext context, Func <Assembly, bool> assemblyPredicate, Func <Type, bool> typePredicate)
 {
     Scan(context, null, assemblyPredicate, typePredicate);
 }
 /// <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 GenericApplicationContext context, string assemblyScanPath, Func <Assembly, bool> assemblyPredicate,
                         Func <Type, bool> typePredicate)
 {
     Scan(context, assemblyScanPath, assemblyPredicate, typePredicate, new string[0]);
 }
 /// <summary>
 /// Scans the with type filter.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="typePredicate">The type predicate.</param>
 public static void ScanWithTypeFilter(this GenericApplicationContext context, Func <Type, bool> typePredicate)
 {
     Scan(context, null, obj => true, typePredicate);
 }
 /// <summary>
 /// Scans the with assembly filter.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="assemblyPredicate">The assembly predicate.</param>
 public static void ScanWithAssemblyFilter(this GenericApplicationContext context, Func <Assembly, bool> assemblyPredicate)
 {
     Scan(context, null, assemblyPredicate, obj => true);
 }