public void GetRelationDefinitions()
        {
            var actualClassDefinitions    = _mappingReflector.GetClassDefinitions().ToDictionary(cd => cd.ClassType);
            var actualRelationDefinitions = _mappingReflector.GetRelationDefinitions(actualClassDefinitions).ToDictionary(rd => rd.ID);

            var relationDefinitionChecker = new RelationDefinitionChecker();

            relationDefinitionChecker.Check(FakeMappingConfiguration.Current.RelationDefinitions.Values, actualRelationDefinitions, true);
        }
        public void SetCurrentRejectsUnresolvedTypes()
        {
            SetupResult.For(_mockMappingLoader.GetClassDefinitions()).Return(_emptyClassDefinitions);
            SetupResult.For(_mockMappingLoader.GetRelationDefinitions(null)).IgnoreArguments().Return(_emptyRelationDefinitions);
            SetupResult.For(_mockMappingLoader.ResolveTypes).Return(false);
            SetupResult.For(_mockMappingLoader.NameResolver).Return(_memberInformationNameResolver);
            SetupResult.For(_mockMappingLoader.CreateClassDefinitionValidator()).Return(new ClassDefinitionValidator());
            SetupResult.For(_mockMappingLoader.CreatePropertyDefinitionValidator()).Return(new PropertyDefinitionValidator());
            SetupResult.For(_mockMappingLoader.CreateRelationDefinitionValidator()).Return(new RelationDefinitionValidator());
            SetupResult.For(_mockMappingLoader.CreateSortExpressionValidator()).Return(new SortExpressionValidator());

            _mockRepository.ReplayAll();

            var configuration = new MappingConfiguration(
                _mockMappingLoader, new PersistenceModelLoader(new StorageGroupBasedStorageProviderDefinitionFinder(DomainObjectsConfiguration.Current.Storage)));

            _mockRepository.VerifyAll();

            MappingConfiguration.SetCurrent(configuration);
        }
Beispiel #3
0
        // construction and disposing

        public MappingConfiguration(IMappingLoader mappingLoader, IPersistenceModelLoader persistenceModelLoader)
        {
            ArgumentUtility.CheckNotNull("mappingLoader", mappingLoader);
            ArgumentUtility.CheckNotNull("persistenceModelLoader", persistenceModelLoader);

            s_log.Info("Building mapping configuration...");

            using (StopwatchScope.CreateScope(s_log, LogLevel.Info, "Time needed to build and validate mapping configuration: {elapsed}."))
            {
                var mappingConfigurationValidationHelper = new MappingConfigurationValidationHelper(mappingLoader, persistenceModelLoader);

                var typeDefinitions = mappingLoader.GetClassDefinitions();
                _typeDefinitions = new ReadOnlyDictionary <Type, ClassDefinition> (typeDefinitions.ToDictionary(td => td.ClassType));
                mappingConfigurationValidationHelper.ValidateDuplicateClassIDs(typeDefinitions.OfType <ClassDefinition>());
                _classDefinitions = new ReadOnlyDictionary <string, ClassDefinition> (typeDefinitions.ToDictionary(cd => cd.ID));

                mappingConfigurationValidationHelper.ValidateClassDefinitions(_typeDefinitions.Values);
                mappingConfigurationValidationHelper.ValidatePropertyDefinitions(_typeDefinitions.Values);

                var relationDefinitions = mappingLoader.GetRelationDefinitions(_typeDefinitions);
                _relationDefinitions = new ReadOnlyDictionary <string, RelationDefinition> (relationDefinitions.ToDictionary(rd => rd.ID));

                mappingConfigurationValidationHelper.ValidateRelationDefinitions(_relationDefinitions.Values);

                foreach (var rootClass in GetInheritanceRootClasses(_typeDefinitions.Values))
                {
                    persistenceModelLoader.ApplyPersistenceModelToHierarchy(rootClass);
                    mappingConfigurationValidationHelper.VerifyPersistenceModelApplied(rootClass);
                    mappingConfigurationValidationHelper.ValidatePersistenceMapping(rootClass);
                }

                _resolveTypes = mappingLoader.ResolveTypes;
                _nameResolver = mappingLoader.NameResolver;

                SetMappingReadOnly();

                mappingConfigurationValidationHelper.ValidateSortExpression(_relationDefinitions.Values);
            }
        }