Пример #1
0
        protected virtual void InitializeConfiguration(string assemblyDirectory)
        {
            ApplicationAssemblyLoaderFilter filter = ApplicationAssemblyLoaderFilter.Instance;

            // TODO: Duplicates logic from AssemblyFinder? The DLL searching part below can probably be removed.
            List <Assembly> assemblies = new List <Assembly>();
            DirectoryInfo   dir        = new DirectoryInfo(assemblyDirectory);

            foreach (FileInfo file in dir.GetFiles("*.dll"))
            {
                Assembly asm = Assembly.LoadFile(file.FullName);
                if (filter.ShouldConsiderAssembly(asm.GetName()) && filter.ShouldIncludeAssembly(asm))
                {
                    assemblies.Add(asm);
                }
            }
            DomainObjectsConfiguration.SetCurrent(
                new FakeDomainObjectsConfiguration(DomainObjectsConfiguration.Current.MappingLoader, GetPersistenceConfiguration(), new QueryConfiguration()));

            var rootAssemblyFinder = new FixedRootAssemblyFinder(assemblies.Select(a => new RootAssembly(a, false)).ToArray());

            var assemblyLoader = new FilteringAssemblyLoader(filter);
            ITypeDiscoveryService typeDiscoveryService =
                new AssemblyFinderTypeDiscoveryService(new AssemblyFinder(rootAssemblyFinder, assemblyLoader));

            var mappingReflector       = new MappingReflector(typeDiscoveryService);
            var persistenceModelLoader =
                new PersistenceModelLoader(new StorageProviderDefinitionFinder(DomainObjectsConfiguration.Current.Storage));
            var mappingConfiguration = new MappingConfiguration(mappingReflector, persistenceModelLoader);

            MappingConfiguration.SetCurrent(mappingConfiguration);
        }
Пример #2
0
        public static void Initialize()
        {
            ProviderCollection <StorageProviderDefinition> providers = new ProviderCollection <StorageProviderDefinition>();

            providers.Add(new RdbmsProviderDefinition("PerformanceTestDomain", new SqlStorageObjectFactory(), ConnectionString));
            StorageConfiguration storageConfiguration = new StorageConfiguration(providers, providers["PerformanceTestDomain"]);

            DomainObjectsConfiguration.SetCurrent(new FakeDomainObjectsConfiguration(storage: storageConfiguration));


            var rootAssemblyFinder = new FixedRootAssemblyFinder(new RootAssembly(typeof(StandardConfiguration).Assembly, true));
            var assemblyLoader     = new FilteringAssemblyLoader(ApplicationAssemblyLoaderFilter.Instance);
            var assemblyFinder     = new CachingAssemblyFinderDecorator(new AssemblyFinder(rootAssemblyFinder, assemblyLoader));
            ITypeDiscoveryService typeDiscoveryService = new AssemblyFinderTypeDiscoveryService(assemblyFinder);
            MappingConfiguration  mappingConfiguration = new MappingConfiguration(
                new MappingReflector(
                    typeDiscoveryService,
                    new ClassIDProvider(),
                    new ReflectionBasedMemberInformationNameResolver(),
                    new PropertyMetadataReflector(),
                    new DomainModelConstraintProvider(),
                    MappingReflector.CreateDomainObjectCreator()),
                new PersistenceModelLoader(new StorageGroupBasedStorageProviderDefinitionFinder(DomainObjectsConfiguration.Current.Storage)));

            MappingConfiguration.SetCurrent(mappingConfiguration);
        }
        private ITypeDiscoveryService GetTypeDiscoveryService(string testDomainNamespace, params Assembly[] rootAssemblies)
        {
            var rootAssemblyFinder = new FixedRootAssemblyFinder(rootAssemblies.Select(asm => new RootAssembly(asm, true)).ToArray());
            var assemblyLoader     = new FilteringAssemblyLoader(ApplicationAssemblyLoaderFilter.Instance);
            var assemblyFinder     = new CachingAssemblyFinderDecorator(new AssemblyFinder(rootAssemblyFinder, assemblyLoader));
            ITypeDiscoveryService typeDiscoveryService = new AssemblyFinderTypeDiscoveryService(assemblyFinder);

            return(FilteringTypeDiscoveryService.CreateFromNamespaceWhitelist(typeDiscoveryService, testDomainNamespace));
        }
        public void GetTypes_UsesAssemblyFinder()
        {
            var service = new AssemblyFinderTypeDiscoveryService(_finderMock);

            _finderMock.Expect(mock => mock.FindAssemblies()).Return(new Assembly[0]);

            _mockRepository.ReplayAll();
            service.GetTypes(typeof(object), true);
            _mockRepository.VerifyAll();
        }
        public void GetTypes_WithoutGlobalTypes()
        {
            var service = new AssemblyFinderTypeDiscoveryService(_finderMock);

            _finderMock.Expect(mock => mock.FindAssemblies()).Return(new[] { _mscorlibAssembly });

            _mockRepository.ReplayAll();
            ICollection types = service.GetTypes(typeof(object), true);

            Assert.That(types, Is.Empty);
            _mockRepository.VerifyAll();
        }
        public void GetTypes_WithValueType()
        {
            var finderMock = _mockRepository.StrictMock <IAssemblyFinder>();

            _mockRepository.ReplayAll();

            var service = new AssemblyFinderTypeDiscoveryService(finderMock);

            ICollection types = service.GetTypes(typeof(ValueType), true);

            Assert.That(types, Is.EquivalentTo(new[] { typeof(ValueType) }));
            finderMock.AssertWasNotCalled(mock => mock.FindAssemblies());
        }
        public void GetTypes_WithoutSpecificBase()
        {
            var service = new AssemblyFinderTypeDiscoveryService(_finderMock);

            _finderMock.Expect(mock => mock.FindAssemblies()).Return(new[] { _testAssembly });

            var allTypes = new List <Type> (_testAssembly.GetTypes());

            _mockRepository.ReplayAll();
            ICollection types = service.GetTypes(null, true);

            Assert.That(allTypes, Is.SubsetOf(types));
            _mockRepository.VerifyAll();
        }
Пример #8
0
        public static Mixer Create(string assemblyName, string assemblyOutputDirectory, int degreeOfParallelism)
        {
            var builderFactory = new MixerPipelineFactory(assemblyName, degreeOfParallelism);

            // Use a custom TypeDiscoveryService with the LoadAllAssemblyLoaderFilter so that mixed types within system assemblies are also considered.
            var assemblyLoader       = new FilteringAssemblyLoader(new LoadAllAssemblyLoaderFilter());
            var rootAssemblyFinder   = SearchPathRootAssemblyFinder.CreateForCurrentAppDomain(false, assemblyLoader);
            var assemblyFinder       = new CachingAssemblyFinderDecorator(new AssemblyFinder(rootAssemblyFinder, assemblyLoader));
            var typeDiscoveryService = new AssemblyFinderTypeDiscoveryService(assemblyFinder);

            var finder = new MixedTypeFinder(typeDiscoveryService);

            return(new Mixer(finder, builderFactory, assemblyOutputDirectory));
        }
        public void GetTypes_WithGlobalTypes_BaseTypeIsNull()
        {
            var service = new AssemblyFinderTypeDiscoveryService(_finderMock);

            _finderMock.Expect(mock => mock.FindAssemblies()).Return(new[] { _testAssembly, _mscorlibAssembly });

            var allTypes = new List <Type> ();

            allTypes.AddRange(_testAssembly.GetTypes());
            allTypes.AddRange(_mscorlibAssembly.GetTypes());

            _mockRepository.ReplayAll();
            ICollection types = service.GetTypes(null, false);

            Assert.That(types, Is.EquivalentTo(allTypes));
            _mockRepository.VerifyAll();
        }
        public void GetTypes_ReturnsTypesFromFoundAssemblies()
        {
            var service = new AssemblyFinderTypeDiscoveryService(_finderMock);

            _finderMock.Expect(mock => mock.FindAssemblies()).Return(new[] { _testAssembly, _coreAssembly });

            var allTypes = new List <Type>();

            allTypes.AddRange(_testAssembly.GetTypes());
            allTypes.AddRange(_coreAssembly.GetTypes());

            _mockRepository.ReplayAll();
            ICollection types = service.GetTypes(typeof(object), true);

            Assert.That(allTypes, Is.SubsetOf(types));
            _mockRepository.VerifyAll();
        }
Пример #11
0
        public void SetUp()
        {
            try
            {
                var serviceLocator = DefaultServiceLocator.Create();
                serviceLocator.RegisterSingle <ISecurityProvider> (() => new NullSecurityProvider());
                serviceLocator.RegisterSingle <IPrincipalProvider> (() => new NullPrincipalProvider());
                ServiceLocator.SetLocatorProvider(() => serviceLocator);

                var providers = new ProviderCollection <StorageProviderDefinition>();
                providers.Add(new RdbmsProviderDefinition("SecurityManager", new SecurityManagerSqlStorageObjectFactory(), TestDomainConnectionString));
                var storageConfiguration = new StorageConfiguration(providers, providers["SecurityManager"]);
                storageConfiguration.StorageGroups.Add(new StorageGroupElement(new SecurityManagerStorageGroupAttribute(), "SecurityManager"));

                DomainObjectsConfiguration.SetCurrent(new FakeDomainObjectsConfiguration(storage: storageConfiguration));

                var rootAssemblyFinder = new FixedRootAssemblyFinder(new RootAssembly(typeof(BaseSecurityManagerObject).Assembly, true));
                var assemblyLoader     = new FilteringAssemblyLoader(ApplicationAssemblyLoaderFilter.Instance);
                var assemblyFinder     = new CachingAssemblyFinderDecorator(new AssemblyFinder(rootAssemblyFinder, assemblyLoader));
                ITypeDiscoveryService typeDiscoveryService = new AssemblyFinderTypeDiscoveryService(assemblyFinder);

                MappingConfiguration.SetCurrent(
                    new MappingConfiguration(
                        new MappingReflector(
                            typeDiscoveryService,
                            new ClassIDProvider(),
                            new ReflectionBasedMemberInformationNameResolver(),
                            new PropertyMetadataReflector(),
                            new DomainModelConstraintProvider(),
                            MappingReflector.CreateDomainObjectCreator()),
                        new PersistenceModelLoader(new StorageGroupBasedStorageProviderDefinitionFinder(DomainObjectsConfiguration.Current.Storage))));

                SqlConnection.ClearAllPools();

                DatabaseAgent masterAgent = new DatabaseAgent(MasterConnectionString);
                masterAgent.ExecuteBatchFile("SecurityManagerCreateDB.sql", false, DatabaseConfiguration.GetReplacementDictionary());
                DatabaseAgent databaseAgent = new DatabaseAgent(TestDomainConnectionString);
                databaseAgent.ExecuteBatchFile("SecurityManagerSetupDB.sql", true);
                databaseAgent.ExecuteBatchFile("SecurityManagerSetupConstraints.sql", true);
                databaseAgent.ExecuteBatchFile("SecurityManagerSetupDBSpecialTables.sql", true);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Пример #12
0
        public int Run()
        {
            try
            {
                ServiceLocator.SetLocatorProvider(() => null);

                var assemblyLoader     = new FilteringAssemblyLoader(ApplicationAssemblyLoaderFilter.Instance);
                var rootAssemblyFinder = new FixedRootAssemblyFinder(new RootAssembly(typeof(BaseSecurityManagerObject).Assembly, true));
                var assemblyFinder     = new CachingAssemblyFinderDecorator(new AssemblyFinder(rootAssemblyFinder, assemblyLoader));

                ITypeDiscoveryService typeDiscoveryService = new AssemblyFinderTypeDiscoveryService(assemblyFinder);
                MappingConfiguration.SetCurrent(
                    new MappingConfiguration(
                        new MappingReflector(
                            typeDiscoveryService,
                            new ClassIDProvider(),
                            new ReflectionBasedMemberInformationNameResolver(),
                            new PropertyMetadataReflector(),
                            new DomainModelConstraintProvider(),
                            MappingReflector.CreateDomainObjectCreator()),
                        new PersistenceModelLoader(new StorageGroupBasedStorageProviderDefinitionFinder(DomainObjectsConfiguration.Current.Storage))));

                ClientTransaction transaction = ClientTransaction.CreateRootTransaction();

                if (_arguments.ImportMetadata)
                {
                    ImportMetadata(transaction);
                }

                transaction.Commit();

                if (_arguments.ImportLocalization)
                {
                    ImportLocalization(transaction);
                }

                transaction.Commit();

                return(0);
            }
            catch (Exception e)
            {
                HandleException(e);
                return(1);
            }
        }
        public static ITypeDiscoveryService GetTypeDiscoveryService(params Assembly[] rootAssemblies)
        {
            var rootAssemblyFinder = new FixedRootAssemblyFinder(rootAssemblies.Select(asm => new RootAssembly(asm, true)).ToArray());
            var assemblyLoader     = new FilteringAssemblyLoader(ApplicationAssemblyLoaderFilter.Instance);
            var assemblyFinder     = new CachingAssemblyFinderDecorator(new AssemblyFinder(rootAssemblyFinder, assemblyLoader));
            ITypeDiscoveryService typeDiscoveryService = new AssemblyFinderTypeDiscoveryService(assemblyFinder);

            return(FilteringTypeDiscoveryService.CreateFromNamespaceBlacklist(
                       typeDiscoveryService,
                       "Remotion.Data.DomainObjects.UnitTests.Mapping.TestDomain.Errors",
                       "Remotion.Data.DomainObjects.UnitTests.Mapping.TestDomain.Integration",
                       "Remotion.Data.DomainObjects.UnitTests.Mapping.TestDomain.RelationReflector",
                       "Remotion.Data.DomainObjects.UnitTests.Mapping.TestDomain.Validation",
                       "Remotion.Data.DomainObjects.UnitTests.Mapping.MappingReflectionIntegrationTests",
                       "Remotion.Data.DomainObjects.UnitTests.Security.TestDomain",
                       "Remotion.Data.DomainObjects.UnitTests.Persistence.Rdbms.SchemaGenerationTestDomain"
                       ));
        }
        public void GetTypes_WithSpecificBase()
        {
            var finderMock = _mockRepository.StrictMock <IAssemblyFinder> ();

            var service = new AssemblyFinderTypeDiscoveryService(finderMock);

            finderMock.Expect(mock => mock.FindAssemblies()).Return(new[] { _testAssembly });

            var allTypes = new List <Type> ();

            allTypes.AddRange(_testAssembly.GetTypes());

            _mockRepository.ReplayAll();
            ICollection types = service.GetTypes(typeof(Base), true);

            Assert.That(types, Is.Not.EquivalentTo(allTypes));
            Assert.That(types, Is.EquivalentTo(new[] { typeof(Base), typeof(Derived1), typeof(Derived2) }));
            _mockRepository.VerifyAll();
        }
        public void GetTypes_WithGlobalTypesButBaseTypeIsNotFromGac_SkippesGacLookUp()
        {
            var service = new AssemblyFinderTypeDiscoveryService(_finderMock);

            _finderMock.Expect(mock => mock.FindAssemblies()).Return(new[] { _testAssembly, _mscorlibAssembly });

            _mockRepository.ReplayAll();
            Dev.Null = service.GetTypes(typeof(object), true);
            _mockRepository.VerifyAll();

            _mockRepository.BackToRecordAll();
            _finderMock.Expect(mock => mock.FindAssemblies()).Return(new[] { _testAssembly, _mscorlibAssembly }).Repeat.Never();
            _mockRepository.ReplayAll();

            ICollection types = service.GetTypes(typeof(Base), false);

            Assert.That(types, Is.EquivalentTo(new [] { typeof(Base), typeof(Derived1), typeof(Derived2) }));
            _mockRepository.VerifyAll();
        }
Пример #16
0
        public void SetUp()
        {
            try
            {
                ProviderCollection <StorageProviderDefinition> providers = new ProviderCollection <StorageProviderDefinition>();
                providers.Add(new RdbmsProviderDefinition("Development.Data.DomainObjects", new SqlStorageObjectFactory(), "ConnectionString"));
                StorageConfiguration storageConfiguration = new StorageConfiguration(providers, providers["Development.Data.DomainObjects"]);

                DomainObjectsConfiguration.SetCurrent(
                    new FakeDomainObjectsConfiguration(
                        new MappingLoaderConfiguration(),
                        storageConfiguration,
                        new QueryConfiguration()));

                var rootAssemblyFinder = new FixedRootAssemblyFinder(new RootAssembly(typeof(TestDomainObject).Assembly, true));
                var assemblyLoader     = new FilteringAssemblyLoader(ApplicationAssemblyLoaderFilter.Instance);
                var assemblyFinder     = new CachingAssemblyFinderDecorator(new AssemblyFinder(rootAssemblyFinder, assemblyLoader));
                ITypeDiscoveryService typeDiscoveryService = new AssemblyFinderTypeDiscoveryService(assemblyFinder);

                MappingConfiguration.SetCurrent(
                    new MappingConfiguration(
                        new MappingReflector(
                            typeDiscoveryService,
                            new ClassIDProvider(),
                            new ReflectionBasedMemberInformationNameResolver(),
                            new PropertyMetadataReflector(),
                            new DomainModelConstraintProvider(),
                            new ThrowingDomainObjectCreator()),
                        new PersistenceModelLoader(new StorageGroupBasedStorageProviderDefinitionFinder(DomainObjectsConfiguration.Current.Storage))));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Пример #17
0
        protected virtual void InitializeConfiguration(string assemblyDirectory)
        {
            ApplicationAssemblyLoaderFilter filter = ApplicationAssemblyLoaderFilter.Instance;

              // TODO: Duplicates logic from AssemblyFinder? The DLL searching part below can probably be removed.
              List<Assembly> assemblies = new List<Assembly>();
              DirectoryInfo dir = new DirectoryInfo (assemblyDirectory);
              foreach (FileInfo file in dir.GetFiles ("*.dll"))
              {
            Assembly asm = Assembly.LoadFile (file.FullName);
            if (filter.ShouldConsiderAssembly (asm.GetName()) && filter.ShouldIncludeAssembly (asm))
              assemblies.Add (asm);
              }
              DomainObjectsConfiguration.SetCurrent (
              new FakeDomainObjectsConfiguration (DomainObjectsConfiguration.Current.MappingLoader, GetPersistenceConfiguration (), new QueryConfiguration()));

              var rootAssemblyFinder = new FixedRootAssemblyFinder(assemblies.Select(a => new RootAssembly(a, false)).ToArray());

              var assemblyLoader = new FilteringAssemblyLoader(filter);
              ITypeDiscoveryService typeDiscoveryService =
              new AssemblyFinderTypeDiscoveryService(new AssemblyFinder(rootAssemblyFinder, assemblyLoader));

              var mappingReflector = new MappingReflector (typeDiscoveryService);
              var persistenceModelLoader =
            new PersistenceModelLoader(new StorageProviderDefinitionFinder(DomainObjectsConfiguration.Current.Storage));
              var mappingConfiguration = new MappingConfiguration (mappingReflector, persistenceModelLoader);
              MappingConfiguration.SetCurrent (mappingConfiguration);
        }
Пример #18
0
 private AssemblyFinder GetAssemblyFinder(AssemblyFinderTypeDiscoveryService service)
 {
     return((AssemblyFinder)((CachingAssemblyFinderDecorator)service.AssemblyFinder).InnerFinder);
 }