You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ko...@apache.org on 2014/06/18 10:07:46 UTC

git commit: [OLINGO-324] modify json.js#jsonParser function

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 <sv...@sap.com>
Authored: Wed Jun 18 10:07:22 2014 +0200
Committer: Sven Kobler <sv...@sap.com>
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>