/// <summary>Initializes a new instance of the <see cref="DefaultConverterProvider" /> class.</summary>
        /// <param name="converters">System registered converter instances.</param>
        public DefaultConverterProvider(IEnumerable <ILiteralConverter> converters)
        {
            if (converters == null)
            {
                throw new ArgumentNullException(nameof(converters));
            }

            if (!converters.Any())
            {
                throw new ArgumentOutOfRangeException(nameof(converters));
            }

            _fallbackConverter = (_converters = converters).First(converter => !converter.SupportedDataTypes.Any() && (!converter.SupportedTypes.Any()));
        }
Example #2
0
        public void Setup()
        {
            var converters = new ILiteralConverter[]
            {
                new StringConverter(),
                new DecimalConverter(),
                new IntegerConverter(),
                new TestConverter(),
                new FloatingPointLiteralConverter(),
                new UntypedLiteralConverter()
            };
            var converterProvider       = new DefaultConverterProvider(converters);
            var mappingProviderVisitors = new IMappingProviderVisitor[]
            {
                new CollectionStorageModelConventionVisitor()
            };

            Repository = new DefaultMappingsRepository(
                new[] { new AttributesMappingSource(typeof(IProduct).GetTypeInfo().Assembly) },
                new DefaultMappingBuilder(converterProvider, Array.Empty <QIriMapping>(), mappingProviderVisitors));
        }
        private static IEntityMapping BuildMapping <TEntity>(this ICollection <ITermMappingProvider> mappingProviders, out IPropertyMapping firstPropertyMapping)
        {
            firstPropertyMapping = null;
            var entityMapping = new MergingEntityMapping(typeof(TEntity));

            foreach (var mappingProvider in mappingProviders)
            {
                mappingProvider.Accept(MappingVisitors);
                var entityMappingProvider = mappingProvider as IEntityMappingProvider;
                if (entityMappingProvider != null)
                {
                    entityMapping.Classes.Add(new StatementMapping(entityMappingProvider.GetGraph(QIriMappings), entityMappingProvider.GetTerm(QIriMappings)));
                    continue;
                }

                var propertyMappingProvider = mappingProvider as IPropertyMappingProvider;
                if (propertyMappingProvider == null)
                {
                    continue;
                }

                ILiteralConverter valueConverter = null;
                if (propertyMappingProvider.ValueConverterType != null)
                {
                    valueConverter = ConverterProvider.FindConverter(propertyMappingProvider.ValueConverterType);
                }

                var collectionMappingProvider = mappingProvider as ICollectionMappingProvider;
                var propertyMapping           = (collectionMappingProvider != null
                    ? CollectionMapping.CreateFrom(entityMapping, collectionMappingProvider, valueConverter, QIriMappings)
                    : PropertyMapping.CreateFrom(entityMapping, propertyMappingProvider, valueConverter, QIriMappings));
                entityMapping.Properties.Add(propertyMapping);
                if (firstPropertyMapping == null)
                {
                    firstPropertyMapping = propertyMapping;
                }
            }

            return(entityMapping);
        }
Example #4
0
        public void Setup()
        {
            var converters = new ILiteralConverter[]
            {
                new StringConverter(),
                new DecimalConverter(),
                new IntegerConverter(),
                new TestConverter(),
                new FloatingPointLiteralConverter(),
                new UntypedLiteralConverter()
            };
            var converterProvider       = new DefaultConverterProvider(converters);
            var mappingProviderVisitors = new IMappingProviderVisitor[]
            {
                new CollectionStorageModelConventionVisitor(),
                new ConverterConventionVisitor(converterProvider)
            };

            Builder = new DefaultMappingBuilder(converterProvider, new QIriMapping[0], mappingProviderVisitors);
            OpenGenericMappingProviders = new Dictionary <Type, ICollection <ITermMappingProvider> >();
            TheTest();
        }