public void Initialize()
 {
     this.clientEdmModel = new ClientEdmModel(ODataProtocolVersion.V4);
     this.clientEdmModel.GetOrCreateEdmType(typeof(TestCustomer));
     this.clientEdmModel.GetOrCreateEdmType(typeof(TestOrder));
     this.materializerContext = new TestMaterializerContext() { Model = this.clientEdmModel };
     this.ordersProperty = this.clientEdmModel.GetClientTypeAnnotation(typeof(TestCustomer)).GetProperty("Orders", false);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="EntryValueMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="entityTrackingAdapter">The entity tracking adapter.</param>
 /// <param name="lazyPrimitivePropertyConverter">The lazy primitive property converter.</param>
 /// <param name="nextLinkTable">The next link table.</param>
 internal EntryValueMaterializationPolicy(
     IODataMaterializerContext context, 
     EntityTrackingAdapter entityTrackingAdapter, 
     DSClient.SimpleLazy<PrimitivePropertyConverter> lazyPrimitivePropertyConverter, 
     Dictionary<IEnumerable, DataServiceQueryContinuation> nextLinkTable)
     : base(context, lazyPrimitivePropertyConverter)
 {
     this.nextLinkTable = nextLinkTable;
     this.EntityTrackingAdapter = entityTrackingAdapter;
 }
Example #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EntryValueMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="entityTrackingAdapter">The entity tracking adapter.</param>
 /// <param name="lazyPrimitivePropertyConverter">The lazy primitive property converter.</param>
 /// <param name="nextLinkTable">The next link table.</param>
 internal EntryValueMaterializationPolicy(
     IODataMaterializerContext context,
     EntityTrackingAdapter entityTrackingAdapter,
     DSClient.SimpleLazy <PrimitivePropertyConverter> lazyPrimitivePropertyConverter,
     Dictionary <IEnumerable, DataServiceQueryContinuation> nextLinkTable)
     : base(context, lazyPrimitivePropertyConverter)
 {
     this.nextLinkTable         = nextLinkTable;
     this.EntityTrackingAdapter = entityTrackingAdapter;
 }
Example #4
0
 public void Initialize()
 {
     this.clientEdmModel = new ClientEdmModel(ODataProtocolVersion.V4);
     this.clientEdmModel.GetOrCreateEdmType(typeof(TestCustomer));
     this.clientEdmModel.GetOrCreateEdmType(typeof(TestOrder));
     this.materializerContext = new TestMaterializerContext()
     {
         Model = this.clientEdmModel
     };
     this.ordersProperty = this.clientEdmModel.GetClientTypeAnnotation(typeof(TestCustomer)).GetProperty("Orders", UndeclaredPropertyBehavior.ThrowException);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataEntriesEntityMaterializer" /> class.
 /// </summary>
 /// <param name="entries">The entries.</param>
 /// <param name="materializerContext">The materializer context.</param>
 /// <param name="entityTrackingAdapter">The entity tracking adapter.</param>
 /// <param name="queryComponents">The query components.</param>
 /// <param name="expectedType">The expected type.</param>
 /// <param name="materializeEntryPlan">The materialize entry plan.</param>
 /// <param name="format">The format.</param>
 public ODataEntriesEntityMaterializer(
     IEnumerable<ODataEntry> entries,
     IODataMaterializerContext materializerContext,
     EntityTrackingAdapter entityTrackingAdapter, 
     QueryComponents queryComponents, 
     Type expectedType, 
     ProjectionPlan materializeEntryPlan, 
     ODataFormat format)
     : base(materializerContext, entityTrackingAdapter, queryComponents, expectedType, materializeEntryPlan)
 {
     this.format = format;
     this.feedEntries = entries.GetEnumerator();
 }
Example #6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ODataMaterializer" /> class.
        /// </summary>
        /// <param name="materializerContext">The materializer context.</param>
        /// <param name="expectedType">The expected type.</param>
        protected ODataMaterializer(IODataMaterializerContext materializerContext, Type expectedType)
        {
            this.ExpectedType        = expectedType;
            this.MaterializerContext = materializerContext;
            this.nextLinkTable       = new Dictionary <IEnumerable, DataServiceQueryContinuation>(DSClient.ReferenceEqualityComparer <IEnumerable> .Instance);

            this.lazyPrimitivePropertyConverter       = new DSClient.SimpleLazy <PrimitivePropertyConverter>(() => new PrimitivePropertyConverter(this.Format));
            this.primitiveValueMaterializationPolicy  = new PrimitiveValueMaterializationPolicy(this.MaterializerContext, this.lazyPrimitivePropertyConverter);
            this.collectionValueMaterializationPolicy = new CollectionValueMaterializationPolicy(this.MaterializerContext, this.primitiveValueMaterializationPolicy);
            this.complexValueMaterializerPolicy       = new ComplexValueMaterializationPolicy(this.MaterializerContext, this.lazyPrimitivePropertyConverter);
            this.collectionValueMaterializationPolicy.ComplexValueMaterializationPolicy = this.complexValueMaterializerPolicy;
            this.complexValueMaterializerPolicy.CollectionValueMaterializationPolicy    = this.collectionValueMaterializationPolicy;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataReaderEntityMaterializer" /> class.
 /// </summary>
 /// <param name="odataMessageReader">The odata message reader.</param>
 /// <param name="reader">The reader.</param>
 /// <param name="materializerContext">The materializer context.</param>
 /// <param name="entityTrackingAdapter">The entity tracking adapter.</param>
 /// <param name="queryComponents">The query components.</param>
 /// <param name="expectedType">The expected type.</param>
 /// <param name="materializeEntryPlan">The materialize entry plan.</param>
 public ODataReaderEntityMaterializer(
     ODataMessageReader odataMessageReader,
     ODataReaderWrapper reader,
     IODataMaterializerContext materializerContext,
     EntityTrackingAdapter entityTrackingAdapter,
     QueryComponents queryComponents,
     Type expectedType,
     ProjectionPlan materializeEntryPlan)
     : base(materializerContext, entityTrackingAdapter, queryComponents, expectedType, materializeEntryPlan)
 {
     this.messageReader = odataMessageReader;
     this.feedEntryAdapter = new FeedAndEntryMaterializerAdapter(odataMessageReader, reader, materializerContext.Model, entityTrackingAdapter.MergeOption);
 }
Example #8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataReaderEntityMaterializer" /> class.
 /// </summary>
 /// <param name="odataMessageReader">The odata message reader.</param>
 /// <param name="reader">The reader.</param>
 /// <param name="materializerContext">The materializer context.</param>
 /// <param name="entityTrackingAdapter">The entity tracking adapter.</param>
 /// <param name="queryComponents">The query components.</param>
 /// <param name="expectedType">The expected type.</param>
 /// <param name="materializeEntryPlan">The materialize entry plan.</param>
 public ODataReaderEntityMaterializer(
     ODataMessageReader odataMessageReader,
     ODataReaderWrapper reader,
     IODataMaterializerContext materializerContext,
     EntityTrackingAdapter entityTrackingAdapter,
     QueryComponents queryComponents,
     Type expectedType,
     ProjectionPlan materializeEntryPlan)
     : base(materializerContext, entityTrackingAdapter, queryComponents, expectedType, materializeEntryPlan)
 {
     this.messageReader    = odataMessageReader;
     this.feedEntryAdapter = new FeedAndEntryMaterializerAdapter(odataMessageReader, reader, materializerContext.Model, entityTrackingAdapter.MergeOption);
 }
Example #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataEntriesEntityMaterializer" /> class.
 /// </summary>
 /// <param name="entries">The entries.</param>
 /// <param name="materializerContext">The materializer context.</param>
 /// <param name="entityTrackingAdapter">The entity tracking adapter.</param>
 /// <param name="queryComponents">The query components.</param>
 /// <param name="expectedType">The expected type.</param>
 /// <param name="materializeEntryPlan">The materialize entry plan.</param>
 /// <param name="format">The format.</param>
 public ODataEntriesEntityMaterializer(
     IEnumerable <ODataEntry> entries,
     IODataMaterializerContext materializerContext,
     EntityTrackingAdapter entityTrackingAdapter,
     QueryComponents queryComponents,
     Type expectedType,
     ProjectionPlan materializeEntryPlan,
     ODataFormat format)
     : base(materializerContext, entityTrackingAdapter, queryComponents, expectedType, materializeEntryPlan)
 {
     this.format      = format;
     this.feedEntries = entries.GetEnumerator();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataLoadNavigationPropertyMaterializer" /> class.
 /// </summary>
 /// <param name="odataMessageReader">The odata message reader.</param>
 /// <param name="reader">The reader.</param>
 /// <param name="materializerContext">The materializer context.</param>
 /// <param name="entityTrackingAdapter">The entity tracking adapter.</param>
 /// <param name="queryComponents">The query components.</param>
 /// <param name="expectedType">The expected type.</param>
 /// <param name="materializeEntryPlan">The materialize entry plan.</param>
 /// <param name="responseInfo">LoadProperty Response Info object.</param>
 public ODataLoadNavigationPropertyMaterializer(
     ODataMessageReader odataMessageReader,
     ODataReaderWrapper reader,
     IODataMaterializerContext materializerContext,
     EntityTrackingAdapter entityTrackingAdapter,
     QueryComponents queryComponents,
     Type expectedType,
     ProjectionPlan materializeEntryPlan,
     LoadPropertyResponseInfo responseInfo)
     : base(odataMessageReader, reader, materializerContext, entityTrackingAdapter, queryComponents, expectedType, materializeEntryPlan)
 {
     this.responseInfo = responseInfo;
     this.items        = new List <object>();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataLoadNavigationPropertyMaterializer" /> class.
 /// </summary>
 /// <param name="odataMessageReader">The odata message reader.</param>
 /// <param name="reader">The reader.</param>
 /// <param name="materializerContext">The materializer context.</param>
 /// <param name="entityTrackingAdapter">The entity tracking adapter.</param>
 /// <param name="queryComponents">The query components.</param>
 /// <param name="expectedType">The expected type.</param>
 /// <param name="materializeEntryPlan">The materialize entry plan.</param>
 /// <param name="responseInfo">LoadProperty Response Info object.</param>
 public ODataLoadNavigationPropertyMaterializer(
     ODataMessageReader odataMessageReader,
     ODataReaderWrapper reader,
     IODataMaterializerContext materializerContext,
     EntityTrackingAdapter entityTrackingAdapter,
     QueryComponents queryComponents,
     Type expectedType,
     ProjectionPlan materializeEntryPlan,
     LoadPropertyResponseInfo responseInfo)
     : base(odataMessageReader, reader, materializerContext, entityTrackingAdapter, queryComponents, expectedType, materializeEntryPlan)
 {
     this.responseInfo = responseInfo;
     this.items = new List<object>();
 }
Example #12
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ODataMaterializer" /> class.
        /// </summary>
        /// <param name="materializerContext">The materializer context.</param>
        /// <param name="expectedType">The expected type.</param>
        protected ODataMaterializer(IODataMaterializerContext materializerContext, Type expectedType)
        {
            this.ExpectedType = expectedType;
            this.MaterializerContext = materializerContext;
            this.nextLinkTable = new Dictionary<IEnumerable, DataServiceQueryContinuation>(DSClient.ReferenceEqualityComparer<IEnumerable>.Instance);

            this.enumValueMaterializationPolicy = new EnumValueMaterializationPolicy(this.MaterializerContext);
            this.lazyPrimitivePropertyConverter = new DSClient.SimpleLazy<PrimitivePropertyConverter>(() => new PrimitivePropertyConverter(this.Format));
            this.primitiveValueMaterializationPolicy = new PrimitiveValueMaterializationPolicy(this.MaterializerContext, this.lazyPrimitivePropertyConverter);
            this.collectionValueMaterializationPolicy = new CollectionValueMaterializationPolicy(this.MaterializerContext, this.primitiveValueMaterializationPolicy);
            this.complexValueMaterializerPolicy = new ComplexValueMaterializationPolicy(this.MaterializerContext, this.lazyPrimitivePropertyConverter);
            this.instanceAnnotationMaterializationPolicy = new InstanceAnnotationMaterializationPolicy(this.MaterializerContext);
            this.collectionValueMaterializationPolicy.ComplexValueMaterializationPolicy = this.complexValueMaterializerPolicy;
            this.collectionValueMaterializationPolicy.InstanceAnnotationMaterializationPolicy = this.instanceAnnotationMaterializationPolicy;
            this.complexValueMaterializerPolicy.CollectionValueMaterializationPolicy = this.collectionValueMaterializationPolicy;
            this.complexValueMaterializerPolicy.InstanceAnnotationMaterializationPolicy = this.instanceAnnotationMaterializationPolicy;
            this.instanceAnnotationMaterializationPolicy.ComplexValueMaterializationPolicy = this.complexValueMaterializerPolicy;
            this.instanceAnnotationMaterializationPolicy.CollectionValueMaterializationPolicy = this.collectionValueMaterializationPolicy;
            this.instanceAnnotationMaterializationPolicy.EnumValueMaterializationPolicy = this.enumValueMaterializationPolicy;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ComplexValueMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="materializerContext">The materializer context.</param>
 /// <param name="lazyPrimitivePropertyConverter">The lazy primitive property converter.</param>
 internal ComplexValueMaterializationPolicy(IODataMaterializerContext materializerContext, DSClient.SimpleLazy <PrimitivePropertyConverter> lazyPrimitivePropertyConverter)
     : base(materializerContext, lazyPrimitivePropertyConverter)
 {
 }
Example #14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CollectionValueMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="primitivePolicy">The primitive policy.</param>
 internal CollectionValueMaterializationPolicy(IODataMaterializerContext context, PrimitiveValueMaterializationPolicy primitivePolicy)
 {
     this.materializerContext = context;
     this.primitiveValueMaterializationPolicy = primitivePolicy;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ComplexValueMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="materializerContext">The materializer context.</param>
 /// <param name="lazyPrimitivePropertyConverter">The lazy primitive property converter.</param>
 internal ComplexValueMaterializationPolicy(IODataMaterializerContext materializerContext, DSClient.SimpleLazy<PrimitivePropertyConverter> lazyPrimitivePropertyConverter) 
     : base(materializerContext, lazyPrimitivePropertyConverter)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataPropertyMaterializer"/> class.
 /// </summary>
 /// <param name="reader">The reader.</param>
 /// <param name="materializerContext">The materializer context.</param>
 /// <param name="expectedType">The expected type.</param>
 /// <param name="singleResult">The single result.</param>
 public ODataPropertyMaterializer(ODataMessageReader reader, IODataMaterializerContext materializerContext, Type expectedType, bool? singleResult)
     : base(reader, materializerContext, expectedType, singleResult)
 {
 }
Example #17
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EnumValueMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="context">The context.</param>
 internal EnumValueMaterializationPolicy(IODataMaterializerContext context)
 {
     this.context = context;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="EnumValueMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="context">The context.</param>
 internal EnumValueMaterializationPolicy(IODataMaterializerContext context)
 {
     this.context = context;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PrimitiveValueMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="lazyPrimitivePropertyConverter">The lazy primitive property converter.</param>
 internal PrimitiveValueMaterializationPolicy(IODataMaterializerContext context, SimpleLazy<PrimitivePropertyConverter> lazyPrimitivePropertyConverter)
 {
     this.context = context;
     this.lazyPrimitivePropertyConverter = lazyPrimitivePropertyConverter;
 }
Example #20
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataPropertyMaterializer"/> class.
 /// </summary>
 /// <param name="reader">The reader.</param>
 /// <param name="materializerContext">The materializer context.</param>
 /// <param name="expectedType">The expected type.</param>
 /// <param name="singleResult">The single result.</param>
 public ODataPropertyMaterializer(ODataMessageReader reader, IODataMaterializerContext materializerContext, Type expectedType, bool?singleResult)
     : base(reader, materializerContext, expectedType, singleResult)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="CollectionValueMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="primitivePolicy">The primitive policy.</param>
 internal CollectionValueMaterializationPolicy(IODataMaterializerContext context, PrimitiveValueMaterializationPolicy primitivePolicy)
 {
     this.materializerContext = context;
     this.primitiveValueMaterializationPolicy = primitivePolicy;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ComplexValueMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="materializerContext">The materializer context.</param>
 /// <param name="lazyPrimitivePropertyConverter">The lazy primitive property converter.</param>
 protected StructuralValueMaterializationPolicy(IODataMaterializerContext materializerContext, DSClient.SimpleLazy<PrimitivePropertyConverter> lazyPrimitivePropertyConverter)
 {
     Debug.Assert(materializerContext != null, "materializer!=null");
     this.MaterializerContext = materializerContext;
     this.lazyPrimitivePropertyConverter = lazyPrimitivePropertyConverter;
 }
Example #23
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataMessageReaderMaterializer"/> class.
 /// </summary>
 /// <param name="reader">The reader.</param>
 /// <param name="context">The materializer context.</param>
 /// <param name="expectedType">The expected type.</param>
 /// <param name="singleResult">The single result.</param>
 public ODataMessageReaderMaterializer(ODataMessageReader reader, IODataMaterializerContext context, Type expectedType, bool?singleResult)
     : base(context, expectedType)
 {
     this.messageReader = reader;
     this.SingleResult  = singleResult;
 }
Example #24
0
 /// <summary>
 /// Initializes a new instance of the <see cref="InstanceAnnotationMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="materializerContext">The materializer context.</param>
 internal InstanceAnnotationMaterializationPolicy(IODataMaterializerContext materializerContext)
 {
     Debug.Assert(materializerContext != null, "materializer!=null");
     this.MaterializerContext = materializerContext;
 }
Example #25
0
        internal CollectionValueMaterializationPolicy CreateCollectionValueMaterializationPolicy(IODataMaterializerContext materializerContext)
        {
            var lazyPrimitivePropertyConverter   = new DSClient.SimpleLazy <PrimitivePropertyConverter>(() => new PrimitivePropertyConverter());
            var primitiveValueMaterializerPolicy = new PrimitiveValueMaterializationPolicy(materializerContext, lazyPrimitivePropertyConverter);
            var collectionPolicy         = new CollectionValueMaterializationPolicy(materializerContext, primitiveValueMaterializerPolicy);
            var instanceAnnotationPolicy = new InstanceAnnotationMaterializationPolicy(materializerContext);

            collectionPolicy.InstanceAnnotationMaterializationPolicy = instanceAnnotationPolicy;

            return(collectionPolicy);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="StructuralValueMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="materializerContext">The materializer context.</param>
 /// <param name="lazyPrimitivePropertyConverter">The lazy primitive property converter.</param>
 protected StructuralValueMaterializationPolicy(IODataMaterializerContext materializerContext, DSClient.SimpleLazy <PrimitivePropertyConverter> lazyPrimitivePropertyConverter)
 {
     Debug.Assert(materializerContext != null, "materializer!=null");
     this.MaterializerContext            = materializerContext;
     this.lazyPrimitivePropertyConverter = lazyPrimitivePropertyConverter;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="InstanceAnnotationMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="materializerContext">The materializer context.</param>
 internal InstanceAnnotationMaterializationPolicy(IODataMaterializerContext materializerContext)
 {
     Debug.Assert(materializerContext != null, "materializer!=null");
     this.MaterializerContext = materializerContext;
 }
Example #28
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PrimitiveValueMaterializationPolicy" /> class.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="lazyPrimitivePropertyConverter">The lazy primitive property converter.</param>
 internal PrimitiveValueMaterializationPolicy(IODataMaterializerContext context, SimpleLazy <PrimitivePropertyConverter> lazyPrimitivePropertyConverter)
 {
     this.context = context;
     this.lazyPrimitivePropertyConverter = lazyPrimitivePropertyConverter;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataMessageReaderMaterializer"/> class.
 /// </summary>
 /// <param name="reader">The reader.</param>
 /// <param name="context">The materializer context.</param>
 /// <param name="expectedType">The expected type.</param>
 /// <param name="singleResult">The single result.</param>
 public ODataMessageReaderMaterializer(ODataMessageReader reader, IODataMaterializerContext context, Type expectedType, bool? singleResult)
     : base(context, expectedType)
 {
     this.messageReader = reader;
     this.SingleResult = singleResult;
 }