Repository: olingo-odata4-js Updated Branches: refs/heads/OLINGO-324 fb0fb593e -> 67c9541a5
[OLINGO-324] modify json.js#jsonParser function Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/commit/67c9541a Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/tree/67c9541a Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/diff/67c9541a Branch: refs/heads/OLINGO-324 Commit: 67c9541a5353b99f5eccf9cdbe8b5d3b5b647669 Parents: fb0fb59 Author: Sven Kobler <[email protected]> Authored: Wed Jun 18 10:07:22 2014 +0200 Committer: Sven Kobler <[email protected]> Committed: Wed Jun 18 10:07:22 2014 +0200 ---------------------------------------------------------------------- datajs/src/lib/odata/json.js | 52 ++++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/67c9541a/datajs/src/lib/odata/json.js ---------------------------------------------------------------------- diff --git a/datajs/src/lib/odata/json.js b/datajs/src/lib/odata/json.js index b273328..28e71fd 100644 --- a/datajs/src/lib/odata/json.js +++ b/datajs/src/lib/odata/json.js @@ -249,19 +249,59 @@ var jsonParser = function (handler, text, context) { var model = context.metadata; var dataServiceVersion = context.dataServiceVersion; var json = (typeof text === "string") ? JSON.parse(text) : text; + var metadataMap = { none : 0, minimal : 1, full : 2, all : 3 }; - var format = context.formatQueryString; - if (utils.isArray(context.metadata)) { + var payloadFormat = 1;//minmal + try { + payloadFormat = metadataMap[context.contentType.properties["odata.metadata"]]; + } catch(err) { + payloadFormat = 1; + } - return json; - } else { - return jsonLightReadPayload(json, model, recognizeDates, inferJsonLightFeedAsObject, context.contentType.properties['odata.metadata']); + var demandedFormat = 1;//minmal + try { + demandedFormat = metadataMap[context.extendMetadataToLevel]; + } catch(err) { + demandedFormat = 1; } + if ( payloadFormat >= demandedFormat) { + if (recognizeDates) { + return convertPrimitivetypesGeneric(json,context); //should be fast + } else { + return json; + } + } else { + if (payloadFormat === 2) { //full, no metadata in context required + //insert the missing type information for strings + return extendMetadataFromPayload(json,context,recognizeDates); + } else if (payloadFormat === 1) { //minmal + if (utils.isArray(context.metadata)) { + //use context metadata to extend the payload metadata + return extendMetadataFromContext(json,context,recognizeDates); + } else { + //error metadata in context required + } + } else { + // the payload contains no context url only guessing possible + return json; + } + } - + //return jsonLightReadPayload(json, model, recognizeDates, inferJsonLightFeedAsObject, context.contentType.properties['odata.metadata']); }; +var convertPrimitivetypesGeneric = function(json,context) { + return json; +} +var extendMetadataFromPayload = function(json,context,recognizeDates) { + return json; +} +var extendMetadataFromContext = function(json,context,recognizeDates) { + return json; +} + + var jsonToString = function (data) { /// <summary>Converts the data into a JSON string.</summary> /// <param name="data">Data to serialize.</param>
