/// <summary> /// Additional media types per payload kind for the WCF DS client on pre-v3 payloads. /// Anything that normally accepts application/atom+xml should also accept application/xml, and vice versa. /// </summary> private void AddV2ClientMediaTypes() { MediaTypeWithFormat appAtomXmlMediaType = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; MediaTypeWithFormat appXmlMediaType = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; IList <MediaTypeWithFormat> feedMediaTypes = this.mediaTypesForPayloadKind[(int)ODataPayloadKind.Feed]; feedMediaTypes.Add(new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = new MediaType(MimeConstants.MimeApplicationType, MimeConstants.MimeXmlSubType, new KeyValuePair <string, string>(MimeConstants.MimeTypeParameterName, MimeConstants.MimeTypeParameterValueFeed)) }); feedMediaTypes.Add(appXmlMediaType); IList <MediaTypeWithFormat> entryMediaTypes = this.mediaTypesForPayloadKind[(int)ODataPayloadKind.Entry]; entryMediaTypes.Add(new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = new MediaType(MimeConstants.MimeApplicationType, MimeConstants.MimeXmlSubType, new KeyValuePair <string, string>(MimeConstants.MimeTypeParameterName, MimeConstants.MimeTypeParameterValueEntry)) }); entryMediaTypes.Add(appXmlMediaType); this.mediaTypesForPayloadKind[(int)ODataPayloadKind.Property].Add(appAtomXmlMediaType); this.mediaTypesForPayloadKind[(int)ODataPayloadKind.EntityReferenceLink].Add(appAtomXmlMediaType); this.mediaTypesForPayloadKind[(int)ODataPayloadKind.EntityReferenceLinks].Add(appAtomXmlMediaType); this.mediaTypesForPayloadKind[(int)ODataPayloadKind.Collection].Add(appAtomXmlMediaType); this.mediaTypesForPayloadKind[(int)ODataPayloadKind.ServiceDocument].Add(appAtomXmlMediaType); this.mediaTypesForPayloadKind[(int)ODataPayloadKind.MetadataDocument].Add(appAtomXmlMediaType); this.mediaTypesForPayloadKind[(int)ODataPayloadKind.Error].Add(appAtomXmlMediaType); }
/// <summary> /// Adds the given media type/format for all the payload kinds which support JSON. /// </summary> /// <param name="mediaTypeWithFormat">The media type/format pair to add.</param> private void AddForJsonPayloadKinds(MediaTypeWithFormat mediaTypeWithFormat) { foreach (ODataPayloadKind kind in JsonPayloadKinds) { this.mediaTypesForPayloadKind[(int)kind].Add(mediaTypeWithFormat); } }
/// <summary> /// Inserts the given media type/format for all the payload kinds which support JSON before the first media type with the given format. /// </summary> /// <param name="mediaTypeWithFormat">The media type/format pair to add.</param> /// <param name="beforeFormat">The format of the media type before which <paramref name="mediaTypeWithFormat"/> should be inserted.</param> private void InsertForJsonPayloadKinds(MediaTypeWithFormat mediaTypeWithFormat, ODataFormat beforeFormat) { foreach (ODataPayloadKind kind in JsonPayloadKinds) { AddMediaTypeEntryOrdered(this.mediaTypesForPayloadKind[(int)kind], mediaTypeWithFormat, beforeFormat); } }
/// <summary> /// Configure the media type tables so that Json Light is the first JSON format in the table. /// </summary> /// <remarks> /// This is only used in V3 and beyond. /// </remarks> private void AddJsonLightMediaTypes() { var optionalParameters = new[] { new { ParameterName = MimeConstants.MimeODataParameterName, Values = new[] { MimeConstants.MimeODataParameterValueMinimalMetadata, MimeConstants.MimeODataParameterValueFullMetadata, MimeConstants.MimeODataParameterValueNoMetadata } }, new { ParameterName = MimeConstants.MimeStreamingParameterName, Values = new[] { MimeConstants.MimeStreamingParameterValueTrue, MimeConstants.MimeStreamingParameterValueFalse } }, }; // initial seed for the list will be extended in breadth-first passes over the optional parameters var mediaTypesToAdd = new LinkedList <MediaType>(); mediaTypesToAdd.AddFirst(ApplicationJsonMediaType); foreach (var optionalParameter in optionalParameters) { // go through each one so far and extend it for (LinkedListNode <MediaType> currentNode = mediaTypesToAdd.First; currentNode != null; currentNode = currentNode.Next) { MediaType typeToExtend = currentNode.Value; foreach (string valueToAdd in optionalParameter.Values) { var extendedParameters = new List <KeyValuePair <string, string> >(typeToExtend.Parameters ?? Enumerable.Empty <KeyValuePair <string, string> >()) { new KeyValuePair <string, string>(optionalParameter.ParameterName, valueToAdd) }; var extendedMediaType = new MediaType(typeToExtend.TypeName, typeToExtend.SubTypeName, extendedParameters); // always match more specific things first mediaTypesToAdd.AddBefore(currentNode, extendedMediaType); } } } foreach (MediaType mediaType in mediaTypesToAdd) { var mediaTypeWithFormat = new MediaTypeWithFormat { Format = ODataFormat.Json, MediaType = mediaType }; if (mediaType == ApplicationJsonMediaType) { this.AddForJsonPayloadKinds(mediaTypeWithFormat); } else { this.InsertForJsonPayloadKinds(mediaTypeWithFormat, ODataFormat.VerboseJson); } } }
private void AddCustomMediaTypes(Dictionary <ODataPayloadKind, MediaTypeWithFormat[]> customMediaTypes) { foreach (KeyValuePair <ODataPayloadKind, MediaTypeWithFormat[]> pair in customMediaTypes) { MediaTypeWithFormat[] formatArray = pair.Value; MediaTypeWithFormat[] formatArray2 = this.mediaTypesForPayloadKind[(int)pair.Key]; MediaTypeWithFormat[] array = new MediaTypeWithFormat[formatArray2.Length + formatArray.Length]; formatArray2.CopyTo(array, 0); formatArray.CopyTo(array, formatArray2.Length); this.mediaTypesForPayloadKind[(int)pair.Key] = array; } }
private static MediaType GetDefaultMediaType(MediaTypeWithFormat[] supportedMediaTypes, ODataFormat specifiedFormat, out ODataFormat actualFormat) { for (int i = 0; i < supportedMediaTypes.Length; i++) { MediaTypeWithFormat format = supportedMediaTypes[i]; if ((specifiedFormat == null) || (format.Format == specifiedFormat)) { actualFormat = format.Format; return(format.MediaType); } } throw new ODataException(Microsoft.Data.OData.Strings.ODataUtils_DidNotFindDefaultMediaType(specifiedFormat)); }
/// <summary> /// Modifies the MediaTypeResolver to include additional media types. /// </summary> /// <param name="customMediaTypes">The payload kind mappings to add.</param> private void AddCustomMediaTypes(Dictionary <ODataPayloadKind, MediaTypeWithFormat[]> customMediaTypes) { foreach (KeyValuePair <ODataPayloadKind, MediaTypeWithFormat[]> payloadKindMediaTypePair in customMediaTypes) { MediaTypeWithFormat[] newMappings = payloadKindMediaTypePair.Value; MediaTypeWithFormat[] existingMappings = this.mediaTypesForPayloadKind[(int)payloadKindMediaTypePair.Key]; MediaTypeWithFormat[] combinedMappings = new MediaTypeWithFormat[existingMappings.Length + newMappings.Length]; // Copy the existing and new mappings into the combinedMappings array. existingMappings.CopyTo(combinedMappings, 0); newMappings.CopyTo(combinedMappings, existingMappings.Length); this.mediaTypesForPayloadKind[(int)payloadKindMediaTypePair.Key] = combinedMappings; } }
/// <summary> /// Gets the default media type for a given payload kind in a given format. /// </summary> /// <param name="supportedMediaTypes">An array of supported media types and formats.</param> /// <param name="specifiedFormat">The user-specified format in which to write the payload (can be null).</param> /// <param name="actualFormat">The default format for the specified payload kind</param> /// <returns>The default media type for the given payload kind and format.</returns> private static MediaType GetDefaultMediaType( MediaTypeWithFormat[] supportedMediaTypes, ODataFormat specifiedFormat, out ODataFormat actualFormat) { for (int i = 0; i < supportedMediaTypes.Length; ++i) { // NOTE: the supportedMediaTypes are sorted (desc) by format and media type; so the // default format and media type is the first entry in the array MediaTypeWithFormat supportedMediaType = supportedMediaTypes[i]; if (specifiedFormat == null || supportedMediaType.Format == specifiedFormat) { actualFormat = supportedMediaType.Format; return(supportedMediaType.MediaType); } } throw new ODataException(Strings.ODataUtils_DidNotFindDefaultMediaType(specifiedFormat)); }
/// <summary> /// Creates a new media type resolver for writers with the mappings for the specified version. /// </summary> /// <param name="version">The version used to write the payload.</param> private MediaTypeResolver(ODataVersion version) { this.version = version; this.mediaTypesForPayloadKind = CloneDefaultMediaTypes(); if (this.version < ODataVersion.V3) { // Treat "application/json" the same as "application/json;odata=verbose" in < V3. MediaTypeWithFormat jsonMediaTypeWithFormat = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; this.AddForJsonPayloadKinds(jsonMediaTypeWithFormat); } else { // Add JSON-light media types into the media type table this.AddJsonLightMediaTypes(); } }
/// <summary> /// Modifies the MediaTypeResolver to include additional media types. /// </summary> /// <param name="customMediaTypes">The payload kind mappings to add.</param> private void AddCustomMediaTypes(Dictionary<ODataPayloadKind, MediaTypeWithFormat[]> customMediaTypes) { foreach (KeyValuePair<ODataPayloadKind, MediaTypeWithFormat[]> payloadKindMediaTypePair in customMediaTypes) { MediaTypeWithFormat[] newMappings = payloadKindMediaTypePair.Value; MediaTypeWithFormat[] existingMappings = this.mediaTypesForPayloadKind[(int)payloadKindMediaTypePair.Key]; MediaTypeWithFormat[] combinedMappings = new MediaTypeWithFormat[existingMappings.Length + newMappings.Length]; // Copy the existing and new mappings into the combinedMappings array. existingMappings.CopyTo(combinedMappings, 0); newMappings.CopyTo(combinedMappings, existingMappings.Length); this.mediaTypesForPayloadKind[(int)payloadKindMediaTypePair.Key] = combinedMappings; } }
private void AddCustomMediaTypes(Dictionary<ODataPayloadKind, MediaTypeWithFormat[]> customMediaTypes) { foreach (KeyValuePair<ODataPayloadKind, MediaTypeWithFormat[]> pair in customMediaTypes) { MediaTypeWithFormat[] formatArray = pair.Value; MediaTypeWithFormat[] formatArray2 = this.mediaTypesForPayloadKind[(int)pair.Key]; MediaTypeWithFormat[] array = new MediaTypeWithFormat[formatArray2.Length + formatArray.Length]; formatArray2.CopyTo(array, 0); formatArray.CopyTo(array, formatArray2.Length); this.mediaTypesForPayloadKind[(int)pair.Key] = array; } }
static MediaTypeResolver() { MediaTypeWithFormat[][] formatArray = new MediaTypeWithFormat[13][]; MediaTypeWithFormat[] formatArray2 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = new MediaType("application", "atom+xml", new KeyValuePair<string, string>("type", "feed")) }; formatArray2[0] = format; MediaTypeWithFormat format2 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[1] = format2; MediaTypeWithFormat format3 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray2[2] = format3; formatArray[0] = formatArray2; MediaTypeWithFormat[] formatArray3 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format4 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = new MediaType("application", "atom+xml", new KeyValuePair<string, string>("type", "entry")) }; formatArray3[0] = format4; MediaTypeWithFormat format5 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray3[1] = format5; MediaTypeWithFormat format6 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray3[2] = format6; formatArray[1] = formatArray3; MediaTypeWithFormat[] formatArray4 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format7 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray4[0] = format7; MediaTypeWithFormat format8 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = TextXmlMediaType }; formatArray4[1] = format8; MediaTypeWithFormat format9 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray4[2] = format9; formatArray[2] = formatArray4; MediaTypeWithFormat[] formatArray5 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format10 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray5[0] = format10; MediaTypeWithFormat format11 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = TextXmlMediaType }; formatArray5[1] = format11; MediaTypeWithFormat format12 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray5[2] = format12; formatArray[3] = formatArray5; MediaTypeWithFormat[] formatArray6 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format13 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray6[0] = format13; MediaTypeWithFormat format14 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = TextXmlMediaType }; formatArray6[1] = format14; MediaTypeWithFormat format15 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray6[2] = format15; formatArray[4] = formatArray6; MediaTypeWithFormat[] formatArray7 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format16 = new MediaTypeWithFormat { Format = ODataFormat.RawValue, MediaType = new MediaType("text", "plain") }; formatArray7[0] = format16; formatArray[5] = formatArray7; MediaTypeWithFormat[] formatArray8 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format17 = new MediaTypeWithFormat { Format = ODataFormat.RawValue, MediaType = new MediaType("application", "octet-stream") }; formatArray8[0] = format17; formatArray[6] = formatArray8; MediaTypeWithFormat[] formatArray9 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format18 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray9[0] = format18; MediaTypeWithFormat format19 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = TextXmlMediaType }; formatArray9[1] = format19; MediaTypeWithFormat format20 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray9[2] = format20; formatArray[7] = formatArray9; MediaTypeWithFormat[] formatArray10 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format21 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray10[0] = format21; MediaTypeWithFormat format22 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = new MediaType("application", "atomsvc+xml") }; formatArray10[1] = format22; MediaTypeWithFormat format23 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray10[2] = format23; formatArray[8] = formatArray10; MediaTypeWithFormat[] formatArray11 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format24 = new MediaTypeWithFormat { Format = ODataFormat.Metadata, MediaType = ApplicationXmlMediaType }; formatArray11[0] = format24; formatArray[9] = formatArray11; formatArray2 = new MediaTypeWithFormat[2]; MediaTypeWithFormat format25 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray2[0] = format25; MediaTypeWithFormat format26 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray2[1] = format26; formatArray[10] = formatArray2; formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format27 = new MediaTypeWithFormat { Format = ODataFormat.Batch, MediaType = new MediaType("multipart", "mixed") }; formatArray2[0] = format27; formatArray[11] = formatArray2; formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format28 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray2[0] = format28; formatArray[12] = formatArray2; defaultMediaTypes = formatArray; Dictionary<ODataPayloadKind, MediaTypeWithFormat[]> dictionary = new Dictionary<ODataPayloadKind, MediaTypeWithFormat[]>(); formatArray2 = new MediaTypeWithFormat[2]; MediaTypeWithFormat format29 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = new MediaType("application", "xml", new KeyValuePair<string, string>("type", "feed")) }; formatArray2[0] = format29; MediaTypeWithFormat format30 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray2[1] = format30; dictionary.Add(ODataPayloadKind.Feed, formatArray2); formatArray2 = new MediaTypeWithFormat[2]; MediaTypeWithFormat format31 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = new MediaType("application", "xml", new KeyValuePair<string, string>("type", "entry")) }; formatArray2[0] = format31; MediaTypeWithFormat format32 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray2[1] = format32; dictionary.Add(ODataPayloadKind.Entry, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format33 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format33; dictionary.Add(ODataPayloadKind.Property, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format34 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format34; dictionary.Add(ODataPayloadKind.EntityReferenceLink, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format35 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format35; dictionary.Add(ODataPayloadKind.EntityReferenceLinks, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format36 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format36; dictionary.Add(ODataPayloadKind.Collection, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format37 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format37; dictionary.Add(ODataPayloadKind.ServiceDocument, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format38 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format38; dictionary.Add(ODataPayloadKind.MetadataDocument, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format39 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format39; dictionary.Add(ODataPayloadKind.Error, formatArray2); additionalClientV2MediaTypes = dictionary; Dictionary<ODataPayloadKind, MediaTypeWithFormat[]> dictionary2 = new Dictionary<ODataPayloadKind, MediaTypeWithFormat[]>(); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format40 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format40; dictionary2.Add(ODataPayloadKind.Feed, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format41 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format41; dictionary2.Add(ODataPayloadKind.Entry, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format42 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format42; dictionary2.Add(ODataPayloadKind.Property, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format43 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format43; dictionary2.Add(ODataPayloadKind.EntityReferenceLink, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format44 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format44; dictionary2.Add(ODataPayloadKind.EntityReferenceLinks, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format45 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format45; dictionary2.Add(ODataPayloadKind.Collection, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format46 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format46; dictionary2.Add(ODataPayloadKind.ServiceDocument, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format47 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format47; dictionary2.Add(ODataPayloadKind.Error, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format48 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format48; dictionary2.Add(ODataPayloadKind.Parameter, formatArray2); plainAppJsonMeansVerbose = dictionary2; }
/// <summary> /// Inserts the specified media type before the first occurrence of <paramref name="beforeFormat"/>. /// </summary> /// <param name="mediaTypeList">The media type list to insert into.</param> /// <param name="mediaTypeToInsert">The media type to insert.</param> /// <param name="beforeFormat">The format of the media type before which <paramref name="mediaTypeToInsert"/> should be inserted.</param> private static void AddMediaTypeEntryOrdered(IList <MediaTypeWithFormat> mediaTypeList, MediaTypeWithFormat mediaTypeToInsert, ODataFormat beforeFormat) { Debug.Assert(mediaTypeList != null, "mediaTypeList != null"); Debug.Assert(mediaTypeToInsert != null, "mediaTypeToInsert != null"); Debug.Assert(beforeFormat != null, "beforeFormat != null"); // Go through the list and find the first entry that has the specified format to insert before. for (int i = 0; i < mediaTypeList.Count; ++i) { if (mediaTypeList[i].Format == beforeFormat) { mediaTypeList.Insert(i, mediaTypeToInsert); return; } } mediaTypeList.Add(mediaTypeToInsert); }
static MediaTypeResolver() { MediaTypeWithFormat[][] formatArray = new MediaTypeWithFormat[13][]; MediaTypeWithFormat[] formatArray2 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = new MediaType("application", "atom+xml", new KeyValuePair <string, string>("type", "feed")) }; formatArray2[0] = format; MediaTypeWithFormat format2 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[1] = format2; MediaTypeWithFormat format3 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray2[2] = format3; formatArray[0] = formatArray2; MediaTypeWithFormat[] formatArray3 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format4 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = new MediaType("application", "atom+xml", new KeyValuePair <string, string>("type", "entry")) }; formatArray3[0] = format4; MediaTypeWithFormat format5 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray3[1] = format5; MediaTypeWithFormat format6 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray3[2] = format6; formatArray[1] = formatArray3; MediaTypeWithFormat[] formatArray4 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format7 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray4[0] = format7; MediaTypeWithFormat format8 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = TextXmlMediaType }; formatArray4[1] = format8; MediaTypeWithFormat format9 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray4[2] = format9; formatArray[2] = formatArray4; MediaTypeWithFormat[] formatArray5 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format10 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray5[0] = format10; MediaTypeWithFormat format11 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = TextXmlMediaType }; formatArray5[1] = format11; MediaTypeWithFormat format12 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray5[2] = format12; formatArray[3] = formatArray5; MediaTypeWithFormat[] formatArray6 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format13 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray6[0] = format13; MediaTypeWithFormat format14 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = TextXmlMediaType }; formatArray6[1] = format14; MediaTypeWithFormat format15 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray6[2] = format15; formatArray[4] = formatArray6; MediaTypeWithFormat[] formatArray7 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format16 = new MediaTypeWithFormat { Format = ODataFormat.RawValue, MediaType = new MediaType("text", "plain") }; formatArray7[0] = format16; formatArray[5] = formatArray7; MediaTypeWithFormat[] formatArray8 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format17 = new MediaTypeWithFormat { Format = ODataFormat.RawValue, MediaType = new MediaType("application", "octet-stream") }; formatArray8[0] = format17; formatArray[6] = formatArray8; MediaTypeWithFormat[] formatArray9 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format18 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray9[0] = format18; MediaTypeWithFormat format19 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = TextXmlMediaType }; formatArray9[1] = format19; MediaTypeWithFormat format20 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray9[2] = format20; formatArray[7] = formatArray9; MediaTypeWithFormat[] formatArray10 = new MediaTypeWithFormat[3]; MediaTypeWithFormat format21 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray10[0] = format21; MediaTypeWithFormat format22 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = new MediaType("application", "atomsvc+xml") }; formatArray10[1] = format22; MediaTypeWithFormat format23 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray10[2] = format23; formatArray[8] = formatArray10; MediaTypeWithFormat[] formatArray11 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format24 = new MediaTypeWithFormat { Format = ODataFormat.Metadata, MediaType = ApplicationXmlMediaType }; formatArray11[0] = format24; formatArray[9] = formatArray11; formatArray2 = new MediaTypeWithFormat[2]; MediaTypeWithFormat format25 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray2[0] = format25; MediaTypeWithFormat format26 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray2[1] = format26; formatArray[10] = formatArray2; formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format27 = new MediaTypeWithFormat { Format = ODataFormat.Batch, MediaType = new MediaType("multipart", "mixed") }; formatArray2[0] = format27; formatArray[11] = formatArray2; formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format28 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonVerboseMediaType }; formatArray2[0] = format28; formatArray[12] = formatArray2; defaultMediaTypes = formatArray; Dictionary <ODataPayloadKind, MediaTypeWithFormat[]> dictionary = new Dictionary <ODataPayloadKind, MediaTypeWithFormat[]>(); formatArray2 = new MediaTypeWithFormat[2]; MediaTypeWithFormat format29 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = new MediaType("application", "xml", new KeyValuePair <string, string>("type", "feed")) }; formatArray2[0] = format29; MediaTypeWithFormat format30 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray2[1] = format30; dictionary.Add(ODataPayloadKind.Feed, formatArray2); formatArray2 = new MediaTypeWithFormat[2]; MediaTypeWithFormat format31 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = new MediaType("application", "xml", new KeyValuePair <string, string>("type", "entry")) }; formatArray2[0] = format31; MediaTypeWithFormat format32 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationXmlMediaType }; formatArray2[1] = format32; dictionary.Add(ODataPayloadKind.Entry, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format33 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format33; dictionary.Add(ODataPayloadKind.Property, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format34 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format34; dictionary.Add(ODataPayloadKind.EntityReferenceLink, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format35 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format35; dictionary.Add(ODataPayloadKind.EntityReferenceLinks, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format36 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format36; dictionary.Add(ODataPayloadKind.Collection, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format37 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format37; dictionary.Add(ODataPayloadKind.ServiceDocument, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format38 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format38; dictionary.Add(ODataPayloadKind.MetadataDocument, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format39 = new MediaTypeWithFormat { Format = ODataFormat.Atom, MediaType = ApplicationAtomXmlMediaType }; formatArray2[0] = format39; dictionary.Add(ODataPayloadKind.Error, formatArray2); additionalClientV2MediaTypes = dictionary; Dictionary <ODataPayloadKind, MediaTypeWithFormat[]> dictionary2 = new Dictionary <ODataPayloadKind, MediaTypeWithFormat[]>(); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format40 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format40; dictionary2.Add(ODataPayloadKind.Feed, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format41 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format41; dictionary2.Add(ODataPayloadKind.Entry, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format42 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format42; dictionary2.Add(ODataPayloadKind.Property, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format43 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format43; dictionary2.Add(ODataPayloadKind.EntityReferenceLink, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format44 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format44; dictionary2.Add(ODataPayloadKind.EntityReferenceLinks, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format45 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format45; dictionary2.Add(ODataPayloadKind.Collection, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format46 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format46; dictionary2.Add(ODataPayloadKind.ServiceDocument, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format47 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format47; dictionary2.Add(ODataPayloadKind.Error, formatArray2); formatArray2 = new MediaTypeWithFormat[1]; MediaTypeWithFormat format48 = new MediaTypeWithFormat { Format = ODataFormat.VerboseJson, MediaType = ApplicationJsonMediaType }; formatArray2[0] = format48; dictionary2.Add(ODataPayloadKind.Parameter, formatArray2); plainAppJsonMeansVerbose = dictionary2; }