//private static ODataOutputFormatter CreateTextPlain(ODataSerializerProvider serializerProvider)
        //{
        //    ODataOutputFormatter formatter = CreateFormatterWithoutMediaTypes(
        //        serializerProvider,
        //        ODataPayloadKind.Unsupported);
        //    formatter.SupportedMediaTypes.Add(ODataMediaTypes.TextPlain);

        //    //formatter.AddDollarFormatQueryStringMappings();
        //    //formatter.AddQueryStringMapping(DollarFormat, XmlFormat, ODataMediaTypes.ApplicationXml);

        //    return formatter;
        //}

        private static ODataOutputFormatter CreateApplicationJson(ODataSerializerProvider serializerProvider)
        {
            ODataOutputFormatter formatter = CreateFormatterWithoutMediaTypes(
                serializerProvider,
                ODataPayloadKind.Feed,
                ODataPayloadKind.Entry,
                ODataPayloadKind.Property,
                ODataPayloadKind.EntityReferenceLink,
                ODataPayloadKind.EntityReferenceLinks,
                ODataPayloadKind.Collection,
                ODataPayloadKind.ServiceDocument,
                ODataPayloadKind.Error,
                ODataPayloadKind.Parameter,
                ODataPayloadKind.Delta);

            // Add minimal metadata as the first media type so it gets used when the request doesn't
            // ask for a specific content type
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationJsonODataMinimalMetadataStreamingTrue);
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationJsonODataMinimalMetadataStreamingFalse);
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationJsonODataMinimalMetadata);
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationJsonODataFullMetadataStreamingTrue);
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationJsonODataFullMetadataStreamingFalse);
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationJsonODataFullMetadata);
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationJsonODataNoMetadataStreamingTrue);
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationJsonODataNoMetadataStreamingFalse);
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationJsonODataNoMetadata);
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationJsonStreamingTrue);
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationJsonStreamingFalse);
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationJson);

            //formatter.AddDollarFormatQueryStringMappings();
            //formatter.AddQueryStringMapping(DollarFormat, JsonFormat, ODataMediaTypes.ApplicationJson);

            return formatter;
        }
		/// <summary>
		/// Initializes a new instance of the <see cref="ODataEdmTypeSerializer"/> class.
		/// </summary>
		/// <param name="payloadKind">The kind of OData payload that this serializer generates.</param>
		/// <param name="serializerProvider">The <see cref="ODataSerializerProvider"/> to use to write inner objects.</param>
		protected ODataEdmTypeSerializer(ODataPayloadKind payloadKind, ODataSerializerProvider serializerProvider)
			: this(payloadKind)
		{
			if (serializerProvider == null)
			{
				throw Error.ArgumentNull("serializerProvider");
			}

			SerializerProvider = serializerProvider;
		}
 private static ODataOutputFormatter CreateRawValue(ODataSerializerProvider serializerProvider)
 {
     ODataOutputFormatter formatter = CreateFormatterWithoutMediaTypes(serializerProvider, ODataPayloadKind.Value);
     //formatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));
     //formatter.MediaTypeMappings.Add(new ODataPrimitiveValueMediaTypeMapping());
     //formatter.MediaTypeMappings.Add(new ODataEnumValueMediaTypeMapping());
     //formatter.MediaTypeMappings.Add(new ODataBinaryValueMediaTypeMapping());
     //formatter.MediaTypeMappings.Add(new ODataCountMediaTypeMapping());
     return formatter;
 }
 /// <summary>
 /// Creates a list of media type formatters to handle OData with the given <paramref name="serializerProvider"/>.
 /// </summary>
 /// <param name="serializerProvider">The serializer provider to use.</param>
 /// <returns>A list of media type formatters to handle OData.</returns>
 public static IList<ODataOutputFormatter> Create(ODataSerializerProvider serializerProvider)
 {
     return new List<ODataOutputFormatter>()
     {
         // Place JSON formatter first so it gets used when the request doesn't ask for a specific content type
         CreateApplicationJson(serializerProvider),
         CreateApplicationXml(serializerProvider),
         CreateRawValue(serializerProvider),
         //CreateTextPlain(serializerProvider)
     };
 }
        public ODataOutputFormatter(ODataSerializerProvider serializerProvider, IEnumerable<ODataPayloadKind> payloadKinds)
        {
            _messageWriterSettings = new ODataMessageWriterSettings
            {
                Indent = true,
                DisableMessageStreamDisposal = true,
                MessageQuotas = new ODataMessageQuotas { MaxReceivedMessageSize = Int64.MaxValue },
                AutoComputePayloadMetadataInJson = true,
            };

            _serializerProvider = serializerProvider;
            _payloadKinds = payloadKinds;
        }
 private static ODataOutputFormatter CreateFormatterWithoutMediaTypes(ODataSerializerProvider serializerProvider, params ODataPayloadKind[] payloadKinds)
 {
     ODataOutputFormatter formatter = new ODataOutputFormatter(serializerProvider, payloadKinds);
     AddSupportedEncodings(formatter);
     return formatter;
 }
        private static ODataOutputFormatter CreateApplicationXml(ODataSerializerProvider serializerProvider)
        {
            ODataOutputFormatter formatter = CreateFormatterWithoutMediaTypes(
                serializerProvider,
                ODataPayloadKind.MetadataDocument);
            formatter.SupportedMediaTypes.Add(ODataMediaTypes.ApplicationXml);

            //formatter.AddDollarFormatQueryStringMappings();
            //formatter.AddQueryStringMapping(DollarFormat, XmlFormat, ODataMediaTypes.ApplicationXml);

            return formatter;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataComplexTypeSerializer"/> class.
 /// </summary>
 /// <param name="serializerProvider">The serializer provider to use to serialize nested objects.</param>
 public ODataComplexTypeSerializer(ODataSerializerProvider serializerProvider)
     : base(ODataPayloadKind.Property, serializerProvider)
 {
 }
 /// <summary>
 /// Initializes a new instance of <see cref="ODataFeedSerializer"/>.
 /// </summary>
 /// <param name="serializerProvider">The <see cref="ODataSerializerProvider"/> to use to write nested entries.</param>
 public ODataFeedSerializer(ODataSerializerProvider serializerProvider)
     : base(ODataPayloadKind.Feed, serializerProvider)
 {
 }
        private ODataSerializer GetSerializer(Type type, object value, IEdmModel model, ODataSerializerProvider serializerProvider, HttpRequest request)
        {
            ODataSerializer serializer;

            IEdmObject edmObject = value as IEdmObject;
            if (edmObject != null)
            {
                IEdmTypeReference edmType = edmObject.GetEdmType();
                if (edmType == null)
                {
                    throw new SerializationException(Error.Format(SRResources.EdmTypeCannotBeNull,
                        edmObject.GetType().FullName, typeof(IEdmObject).Name));
                }

                serializer = serializerProvider.GetEdmTypeSerializer(edmType);
                if (serializer == null)
                {
                    string message = Error.Format(SRResources.TypeCannotBeSerialized, edmType.ToTraceString(), typeof(ODataOutputFormatter).Name);
                    throw new SerializationException(message);
                }
            }
            else
            {
                // get the most appropriate serializer given that we support inheritance.
                type = value == null ? type : value.GetType();
                serializer = serializerProvider.GetODataPayloadSerializer(model, type, request);
                if (serializer == null)
                {
                    string message = Error.Format(SRResources.TypeCannotBeSerialized, type.Name, typeof(ODataOutputFormatter).Name);
                    throw new SerializationException(message);
                }
            }

            return serializer;
        }
		public SampleODataEntityTypeSerializer(ODataSerializerProvider serializerProvider) : base(serializerProvider)
		{
		}
		private ODataSerializer GetSerializer(Type type, object value, IEdmModel model, ODataSerializerProvider serializerProvider)
		{
			ODataSerializer serializer;

			IEdmObject edmObject = value as IEdmObject;
			if (edmObject != null)
			{
				IEdmTypeReference edmType = edmObject.GetEdmType();
				if (edmType == null)
				{
					throw new SerializationException(Error.Format(SRResources.EdmTypeCannotBeNull,
						edmObject.GetType().FullName, typeof(IEdmObject).Name));
				}

				serializer = serializerProvider.GetEdmTypeSerializer(edmType);
				if (serializer == null)
				{
					string message = Error.Format(SRResources.TypeCannotBeSerialized, edmType.ToTraceString(), typeof(ODataJsonSerializer).Name);
					throw new SerializationException(message);
				}
			}
			else
			{
				// TODO: Support $apply
				// Currently don't support $apply
				//var applyClause = Request.ODataProperties().ApplyClause;
				//// get the most appropriate serializer given that we support inheritance.
				//if (applyClause == null)
				//{
				//	type = value == null ? type : value.GetType();
				//}

				serializer = serializerProvider.GetODataPayloadSerializer(model, type, Request);
				if (serializer == null)
				{
					string message = Error.Format(SRResources.TypeCannotBeSerialized, type.Name, typeof(ODataJsonSerializer).Name);
					throw new SerializationException(message);
				}
			}

			return serializer;
		}
 /// <inheritdoc />
 public ODataEntityTypeSerializer(ODataSerializerProvider serializerProvider)
     : base(ODataPayloadKind.Entry, serializerProvider)
 {
 }
Exemple #14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataCollectionSerializer"/> class.
 /// </summary>
 /// <param name="serializerProvider">The serializer provider to use to serialize nested objects.</param>
 public ODataCollectionSerializer(ODataSerializerProvider serializerProvider)
     : base(ODataPayloadKind.Collection, serializerProvider)
 {
 }
Exemple #15
0
 /// <summary>
 /// Initializes a new instance of <see cref="ODataResourceSetSerializer"/>.
 /// </summary>
 /// <param name="serializerProvider">The <see cref="ODataSerializerProvider"/> to use to write nested entries.</param>
 public ODataResourceSetSerializer(ODataSerializerProvider serializerProvider)
     : base(ODataPayloadKind.ResourceSet, serializerProvider)
 {
 }
 /// <summary>
 /// Initializes a new instance of <see cref="ODataDeltaFeedSerializer"/>.
 /// </summary>
 /// <param name="serializerProvider">The <see cref="ODataSerializerProvider"/> to use to write nested entries.</param>
 public ODataDeltaFeedSerializer(ODataSerializerProvider serializerProvider)
     : base(ODataPayloadKind.Delta, serializerProvider)
 {
 }
		/// <summary>
		/// Initializes a new instance of the <see cref="ODataCollectionSerializer"/> class.
		/// </summary>
		/// <param name="serializerProvider">The serializer provider to use to serialize nested objects.</param>
		public ODataCollectionSerializer(ODataSerializerProvider serializerProvider)
			: base(ODataPayloadKind.Collection, serializerProvider)
		{
		}
		/// <inheritdoc />
		public ODataEntityTypeSerializer(ODataSerializerProvider serializerProvider)
			: base(ODataPayloadKind.Entry, serializerProvider)
		{
		}
Exemple #19
0
 public ODataEntityTypeSerializer(Microsoft.AspNetCore.OData.Formatter.Serialization.ODataSerializerProvider serializerProvider)
     : base(serializerProvider)
 {
 }
Exemple #20
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataComplexTypeSerializer"/> class.
 /// </summary>
 /// <param name="serializerProvider">The serializer provider to use to serialize nested objects.</param>
 public ODataComplexTypeSerializer(ODataSerializerProvider serializerProvider)
     : base(ODataPayloadKind.Property, serializerProvider)
 {
 }