You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2014/05/12 10:51:59 UTC

[1/2] git commit: [OLINGO-274] fix V4 json error response's deserializing ("details" & "innererror")

Repository: olingo-odata4
Updated Branches:
  refs/heads/master f1cbc4aff -> c32f4a0bb


[OLINGO-274] fix V4 json error response's deserializing ("details" & "innererror")


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/6f1f4d05
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/6f1f4d05
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/6f1f4d05

Branch: refs/heads/master
Commit: 6f1f4d05bda2f3ee75bf2f6fa6a8668f8ab0b18f
Parents: f02d9a0
Author: challenh <ch...@apache.org>
Authored: Wed May 7 12:42:01 2014 +0800
Committer: challenh <ch...@apache.org>
Committed: Wed May 7 12:42:01 2014 +0800

----------------------------------------------------------------------
 fit/src/main/resources/V40/badRequest.json      | 50 ++++++++-----
 fit/src/main/resources/V40/notFound.json        | 44 +++++++++---
 .../olingo/fit/v4/ErrorResponseTestITCase.java  | 76 ++++++++++++++++++++
 .../apache/olingo/commons/api/Constants.java    |  4 ++
 .../olingo/commons/api/domain/ODataError.java   | 17 +++++
 .../commons/api/domain/ODataErrorDetail.java    | 48 +++++++++++++
 .../commons/core/data/AbstractODataError.java   | 32 +++++++--
 .../core/data/JSONODataErrorDeserializer.java   | 34 ++++++++-
 .../data/JSONODataErrorDetailDeserializer.java  | 66 +++++++++++++++++
 .../core/data/JSONODataErrorDetailImpl.java     | 62 ++++++++++++++++
 10 files changed, 402 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6f1f4d05/fit/src/main/resources/V40/badRequest.json
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/V40/badRequest.json b/fit/src/main/resources/V40/badRequest.json
index b6bc3ac..fbc0c63 100644
--- a/fit/src/main/resources/V40/badRequest.json
+++ b/fit/src/main/resources/V40/badRequest.json
@@ -1,17 +1,35 @@
 {
-  "odata.error":
-          {
-            "code": "",
-            "message":
-                    {
-                      "lang": "en-US",
-                      "value": "Bad request."
-                    },
-            "innererror":
-                    {
-                      "message": "Bad request.",
-                      "type": "Microsoft.Data.OData.BadRequest",
-                      "stacktrace": " at Microsoft.Data.OData.MediaTypeUtils.GetContentTypeFromSettings...."
-                    }
-          }
-}
\ No newline at end of file
+
+  "error": {
+
+    "code": "400",
+
+    "message": "Bad request.",
+
+    "target": "query",
+
+    "details": [
+
+      {
+
+       "code": "400",
+
+       "target": "$search" ,
+
+       "message": "Microsoft.Data.OData.BadRequest"
+
+      }
+
+    ],
+
+    "innererror": {
+
+      "trace": ["at Microsoft.Data.OData.MediaTypeUtils.GetContentTypeFromSettings....","callmethod2 etc"],
+
+      "context": {"key1":"for debug deployment only"}
+
+    }
+
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6f1f4d05/fit/src/main/resources/V40/notFound.json
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/V40/notFound.json b/fit/src/main/resources/V40/notFound.json
index fba2ac4..2af4618 100644
--- a/fit/src/main/resources/V40/notFound.json
+++ b/fit/src/main/resources/V40/notFound.json
@@ -1,11 +1,35 @@
 {
-  "odata.error":
-          {
-            "code": "",
-            "message":
-                    {
-                      "lang": "en-US",
-                      "value": "Resource not found for the segment 'Customer'."
-                    }
-          }
-}
\ No newline at end of file
+
+  "error": {
+
+    "code": "501",
+
+    "message": "Unsupported functionality",
+
+    "target": "query",
+
+    "details": [
+
+      {
+
+       "code": "301",
+
+       "target": "$search",
+
+       "message": "$search query option not supported"
+
+      }
+
+    ],
+
+    "innererror": {
+
+      "trace": ["callmethod1 etc","callmethod2 etc"],
+
+      "context": {"key1":"for debug deployment only"}
+
+    }
+
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6f1f4d05/fit/src/test/java/org/apache/olingo/fit/v4/ErrorResponseTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/v4/ErrorResponseTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/v4/ErrorResponseTestITCase.java
new file mode 100644
index 0000000..7e576f0
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/v4/ErrorResponseTestITCase.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.v4;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.net.URI;
+import java.util.Dictionary;
+
+import org.apache.olingo.client.api.communication.ODataClientErrorException;
+import org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest;
+import org.apache.olingo.commons.api.domain.ODataError;
+import org.apache.olingo.commons.api.domain.ODataErrorDetail;
+import org.apache.olingo.commons.api.domain.v4.ODataEntity;
+import org.apache.olingo.commons.api.format.ODataPubFormat;
+import org.junit.Test;
+
+public class ErrorResponseTestITCase extends AbstractTestITCase {
+
+	@Test
+	public void jsonError() {
+
+		ODataPubFormat format = ODataPubFormat.JSON;
+		final URI readURI = getClient().getURIBuilder(testStaticServiceRootURL)
+				.appendEntitySetSegment("Customers").appendKeySegment(32)
+				.build();
+
+		final ODataEntityRequest<ODataEntity> req = getClient()
+				.getRetrieveRequestFactory().getEntityRequest(readURI);
+		try {
+			final ODataEntity read = read(format, readURI);
+		} catch (Exception ex) {
+			ODataError err = ((ODataClientErrorException) ex).getODataError();
+
+			// verify details
+			ODataErrorDetail detail = (ODataErrorDetail) err.getDetails()
+					.get(0);
+			assertEquals("Code should be correct", "301", detail.getCode());
+			assertEquals("Target should be correct", "$search",
+					detail.getTarget());
+			assertEquals("Message should be correct",
+					"$search query option not supported", detail.getMessage());
+
+			// verify inner error dictionary
+			Dictionary<String, Object> innerErr = err.getInnerError();
+			assertEquals("innerError dictionary size should be correct", 2,
+					innerErr.size());
+			assertEquals("innerError['context'] should be correct",
+					"{\"key1\":\"for debug deployment only\"}",
+					innerErr.get("context"));
+			assertEquals("innerError['trace'] should be correct",
+					"[\"callmethod1 etc\",\"callmethod2 etc\"]",
+					innerErr.get("trace"));
+			return;
+		}
+
+		assertNotNull("should have got exception", null);
+	}
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6f1f4d05/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
index 17a65eb..cc6907c 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
@@ -243,6 +243,10 @@ public interface Constants {
 
   public static final String ERROR_TARGET = "target";
 
+  public static final String ERROR_DETAILS = "details";
+  
+  public static final String ERROR_INNERERROR= "innererror";
+
   // canonical functions to be applied via dynamic annotation <tt>Apply</tt>
   public static final String CANONICAL_FUNCTION_CONCAT = "odata.concat";
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6f1f4d05/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataError.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataError.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataError.java
index fc309d3..f899d9a 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataError.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataError.java
@@ -18,6 +18,9 @@
  */
 package org.apache.olingo.commons.api.domain;
 
+import java.util.Dictionary;
+import java.util.List;
+
 /**
  * OData error.
  */
@@ -43,5 +46,19 @@ public interface ODataError {
    * @return error message.
    */
   String getTarget();
+  
+
+  /**
+   * Gets error details.
+   *
+   * @return ODataErrorDetail list.
+   */
+  List<ODataErrorDetail> getDetails();
 
+  /**
+   * Gets server defined key-value pairs for debug environment only.
+   *
+   * @return a Dictionary representing server defined object.
+   */
+  Dictionary<String, Object> getInnerError();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6f1f4d05/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataErrorDetail.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataErrorDetail.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataErrorDetail.java
new file mode 100644
index 0000000..462e91e
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataErrorDetail.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.commons.api.domain;
+
+/**
+ * OData details, for example - { "error": {..., "details":[
+ * {"code": "301","target": "$search" ,"message": "$search query option not supported"}
+ * ],...}}
+ */
+public interface ODataErrorDetail {
+
+  /**
+   * Gets error code.
+   *
+   * @return error code.
+   */
+  String getCode();
+
+  /**
+   * Gets error message.
+   *
+   * @return error message.
+   */
+  String getMessage();
+
+  /**
+   * Gets error target.
+   *
+   * @return error message.
+   */
+  String getTarget();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6f1f4d05/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractODataError.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractODataError.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractODataError.java
index 931a38b..62cbebf 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractODataError.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractODataError.java
@@ -18,9 +18,12 @@
  */
 package org.apache.olingo.commons.core.data;
 
+import java.util.Dictionary;
+import java.util.List;
+
 import org.apache.olingo.commons.api.domain.ODataError;
+import org.apache.olingo.commons.api.domain.ODataErrorDetail;
 
-// TODO p2 supports V4:
 //  {
 //	  "error": {
 //	    "code": "501",
@@ -29,10 +32,10 @@ import org.apache.olingo.commons.api.domain.ODataError;
 //	    "details": [
 //	      {
 //	       "code": "301",
-//	       "target": "$search"  
-//	       "message": "$search query option not supported",
+//	       "target": "$search",
+//	       "message": "$search query option not supported"
 //	      }
-//	    ]
+//	    ],
 //	    "innererror": {
 //	      "trace": [...],
 //	      "context": {...}
@@ -47,6 +50,10 @@ public abstract class AbstractODataError implements ODataError {
 
   private String target;
 
+  private List<ODataErrorDetail> details;
+  
+  private Dictionary<String,Object> innerError;
+  
   @Override
   public String getCode() {
     return code;
@@ -74,4 +81,21 @@ public abstract class AbstractODataError implements ODataError {
     this.target = target;
   }
 
+  @Override
+  public List<ODataErrorDetail> getDetails() {
+    return details;
+  }
+
+  public void setDetails(final List<ODataErrorDetail> detail) {
+    this.details = detail;
+  }
+
+  @Override
+  public Dictionary<String,Object> getInnerError() {
+    return innerError;
+  }
+
+  public void setInnerError(final Dictionary<String,Object> innerError) {
+    this.innerError = innerError;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6f1f4d05/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDeserializer.java
index 43ee06c..50fa1f9 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDeserializer.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDeserializer.java
@@ -20,13 +20,23 @@ package org.apache.olingo.commons.core.data;
 
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+
 import java.io.IOException;
 import java.net.URI;
+import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+
 import org.apache.olingo.commons.api.Constants;
+import org.apache.olingo.commons.api.data.Entity;
 import org.apache.olingo.commons.api.data.ResWrap;
+import org.apache.olingo.commons.api.domain.ODataErrorDetail;
 
 public class JSONODataErrorDeserializer extends AbstractJsonDeserializer<JSONODataErrorImpl> {
 
@@ -54,8 +64,30 @@ public class JSONODataErrorDeserializer extends AbstractJsonDeserializer<JSONODa
       if (errorNode.has(Constants.ERROR_TARGET)) {
         error.setTarget(errorNode.get(Constants.ERROR_TARGET).textValue());
       }
+      if (errorNode.hasNonNull(Constants.ERROR_DETAILS)) {
+    	  List<ODataErrorDetail> details = new ArrayList<ODataErrorDetail>(); 
+          for (final Iterator<JsonNode> itor = errorNode.get(Constants.ERROR_DETAILS).iterator(); itor.hasNext();) {
+        	  details.add(
+                    itor.next().traverse(parser.getCodec()).<ResWrap<JSONODataErrorDetailImpl>>readValueAs(
+                            new TypeReference<JSONODataErrorDetailImpl>() {
+                            }).getPayload());
+          }
+          
+          error.setDetails(details);
+      }
+      if (errorNode.hasNonNull(Constants.ERROR_INNERERROR)) {
+    	  JsonNode innerError = errorNode.get(Constants.ERROR_INNERERROR);
+    	  Dictionary<String, Object> innerErr = new Hashtable<String, Object>(); 
+          for (final Iterator<String> itor = innerError.fieldNames(); itor.hasNext();) {
+        	String keyTmp = itor.next();
+        	String val = innerError.get(keyTmp).toString();
+        	innerErr.put(keyTmp,val);
+          }
+          
+          error.setInnerError(innerErr);
+      }
     }
-
+    
     return new ResWrap<JSONODataErrorImpl>((URI) null, null, error);
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6f1f4d05/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDetailDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDetailDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDetailDeserializer.java
new file mode 100644
index 0000000..9c2ce7b
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDetailDeserializer.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.commons.core.data;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.olingo.commons.api.Constants;
+import org.apache.olingo.commons.api.data.Entity;
+import org.apache.olingo.commons.api.data.ResWrap;
+import org.apache.olingo.commons.api.domain.ODataErrorDetail;
+
+public class JSONODataErrorDetailDeserializer extends
+		AbstractJsonDeserializer<JSONODataErrorDetailImpl> {
+
+	@Override
+	protected ResWrap<JSONODataErrorDetailImpl> doDeserialize(
+			final JsonParser parser, final DeserializationContext ctxt)
+			throws IOException, JsonProcessingException {
+
+		final JSONODataErrorDetailImpl error = new JSONODataErrorDetailImpl();
+		final JsonNode errorNode = parser.getCodec().readTree(parser);
+		if (errorNode.has(Constants.ERROR_CODE)) {
+			error.setCode(errorNode.get(Constants.ERROR_CODE).textValue());
+		}
+		if (errorNode.has(Constants.ERROR_MESSAGE)) {
+			final JsonNode message = errorNode.get(Constants.ERROR_MESSAGE);
+			if (message.isValueNode()) {
+				error.setMessage(message.textValue());
+			} else if (message.isObject()) {
+				error.setMessage(message.get(Constants.VALUE).asText());
+			}
+		}
+		if (errorNode.has(Constants.ERROR_TARGET)) {
+			error.setTarget(errorNode.get(Constants.ERROR_TARGET).textValue());
+		}
+
+		return new ResWrap<JSONODataErrorDetailImpl>((URI) null, null, error);
+	}
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6f1f4d05/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDetailImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDetailImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDetailImpl.java
new file mode 100644
index 0000000..2f4585a
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDetailImpl.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.commons.core.data;
+
+import org.apache.olingo.commons.api.domain.ODataErrorDetail;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+
+/*
+ * JSONODataErrorDetailImpl, using the JSONODataErrorDetailDeserializer similar to JSONODataErrorImpl's.
+ */
+@JsonDeserialize(using = JSONODataErrorDetailDeserializer.class)
+public class JSONODataErrorDetailImpl implements ODataErrorDetail {
+
+	private String code;
+
+	private String message;
+
+	private String target;
+
+	@Override
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(final String code) {
+		this.code = code;
+	}
+
+	@Override
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(final String message) {
+		this.message = message;
+	}
+
+	@Override
+	public String getTarget() {
+		return target;
+	}
+
+	public void setTarget(final String target) {
+		this.target = target;
+	}
+}
\ No newline at end of file


[2/2] git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/olingo-odata4 into olingo274

Posted by ch...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/olingo-odata4 into olingo274


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/c32f4a0b
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/c32f4a0b
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/c32f4a0b

Branch: refs/heads/master
Commit: c32f4a0bb1bf9fa111bd66b439871f908f327e17
Parents: 6f1f4d0 f1cbc4a
Author: challenh <ch...@apache.org>
Authored: Mon May 12 16:22:10 2014 +0800
Committer: challenh <ch...@apache.org>
Committed: Mon May 12 16:22:10 2014 +0800

----------------------------------------------------------------------
 .../ext/proxy/EntityContainerFactory.java       |  115 ++
 .../olingo/ext/proxy/api/AbstractContainer.java |   32 -
 .../apache/olingo/ext/proxy/api/Container.java  |   32 +
 .../olingo/ext/proxy/api/OperationExecutor.java |   27 +
 .../proxy/api/annotations/EntityContainer.java  |    2 +
 .../ext/proxy/api/annotations/Parameter.java    |    5 -
 .../commons/AbstractInvocationHandler.java      |  242 ++++
 .../commons/AbstractTypeInvocationHandler.java  |  307 ++++
 .../commons/ComplexTypeInvocationHandler.java   |  241 +++
 .../commons/CompoundKeyElementWrapper.java      |   57 +
 .../olingo/ext/proxy/commons/ContainerImpl.java |  548 +++++++
 .../EntityCollectionInvocationHandler.java      |  140 ++
 .../EntityContainerInvocationHandler.java       |  108 ++
 .../commons/EntitySetInvocationHandler.java     |  403 +++++
 .../ext/proxy/commons/EntitySetIterator.java    |   85 ++
 .../commons/EntityTypeInvocationHandler.java    |  427 ++++++
 .../proxy/commons/FactoryInvocationHandler.java |   84 ++
 .../commons/OperationInvocationHandler.java     |  218 +++
 .../olingo/ext/proxy/commons/QueryImpl.java     |  173 +++
 .../ext/proxy/context/AttachedEntity.java       |   41 +
 .../ext/proxy/context/AttachedEntityStatus.java |   44 +
 .../olingo/ext/proxy/context/Context.java       |   37 +
 .../olingo/ext/proxy/context/EntityContext.java |  199 +++
 .../ext/proxy/context/EntityLinkDesc.java       |  104 ++
 .../olingo/ext/proxy/context/EntityUUID.java    |  102 ++
 .../olingo/ext/proxy/utils/ClassUtils.java      |  141 ++
 .../olingo/ext/proxy/utils/CoreUtils.java       |  492 +++++++
 ext/pojogen-maven-plugin/pom.xml                |    2 +-
 .../src/it/actionOverloadingService/pom.xml     |   92 --
 .../it/actionOverloadingService/verify.groovy   |   20 -
 .../src/it/defaultService/pom.xml               |   92 --
 .../src/it/defaultService/verify.groovy         |   20 -
 .../src/it/keyAsSegmentService/pom.xml          |   92 --
 .../src/it/keyAsSegmentService/verify.groovy    |   20 -
 .../src/it/northwind/pom.xml                    |   92 --
 .../src/it/northwind/verify.groovy              |   20 -
 .../src/it/odataWriterDefaultService/pom.xml    |   92 --
 .../it/odataWriterDefaultService/verify.groovy  |   20 -
 .../src/it/openTypeService/pom.xml              |   92 --
 .../src/it/openTypeService/verify.groovy        |   20 -
 .../src/it/primitiveKeysService/pom.xml         |   92 --
 .../src/it/primitiveKeysService/verify.groovy   |   20 -
 .../src/it/staticServiceV3/pom.xml              |   92 --
 .../src/it/staticServiceV3/verify.groovy        |   20 -
 .../src/it/staticServiceV4/pom.xml              |   92 --
 .../src/it/staticServiceV4/verify.groovy        |   20 -
 .../ext/pojogen/AbstractMetadataMojo.java       |    1 -
 .../olingo/ext/pojogen/AbstractUtility.java     |   31 +-
 .../olingo/ext/pojogen/V3MetadataMojo.java      |  244 ++--
 .../olingo/ext/pojogen/V4MetadataMojo.java      |  260 ++--
 .../src/main/resources/complexType.vm           |    3 +-
 .../src/main/resources/container.vm             |    8 +-
 .../src/main/resources/entityCollection.vm      |    7 +-
 .../src/main/resources/entitySet.vm             |    6 +-
 .../src/main/resources/entityType.vm            |   40 +-
 .../src/main/resources/entityTypeKey.vm         |    3 +-
 .../src/main/resources/singleton.vm             |    3 +-
 .../src/main/resources/v30/complexType.vm       |   30 +-
 .../src/main/resources/v40/complexType.vm       |   29 +-
 fit/pom.xml                                     |    6 +
 fit/src/it/staticServiceV3/pom.xml              |    2 +-
 fit/src/it/staticServiceV3/verify.groovy        |    2 +-
 fit/src/it/staticServiceV4/pom.xml              |    2 +-
 fit/src/it/staticServiceV4/verify.groovy        |    2 +-
 .../org/apache/olingo/fit/AbstractServices.java |   98 +-
 .../apache/olingo/fit/V3ActionOverloading.java  |    2 +-
 .../java/org/apache/olingo/fit/V3OpenType.java  |    7 +-
 .../java/org/apache/olingo/fit/V3Services.java  |    7 +-
 .../main/java/org/apache/olingo/fit/V4Demo.java |  171 +++
 .../java/org/apache/olingo/fit/V4OpenType.java  |    9 +-
 .../java/org/apache/olingo/fit/V4Services.java  |   55 +-
 .../org/apache/olingo/fit/V4Vocabularies.java   |    8 +-
 .../apache/olingo/fit/metadata/EntityType.java  |   24 +-
 .../apache/olingo/fit/metadata/Metadata.java    |   42 +-
 .../olingo/fit/utils/AbstractUtilities.java     |   76 +-
 .../org/apache/olingo/fit/utils/Commons.java    |   20 +-
 .../org/apache/olingo/fit/utils/Constants.java  |    1 +
 .../org/apache/olingo/fit/utils/DataBinder.java |   61 +-
 .../org/apache/olingo/fit/utils/FSManager.java  |    6 +-
 .../apache/olingo/fit/utils/JSONUtilities.java  |    5 +-
 .../apache/olingo/fit/utils/XMLUtilities.java   |    7 +-
 .../resources/V30/AllGeoTypesSet/-10/entity.xml |  161 ++
 .../main/resources/V30/AllGeoTypesSet/feed.xml  | 1371 ++++++++++++++++++
 fit/src/main/resources/V30/Computer/feed.xml    |  207 +++
 .../V30/CustomerInfo/16/entity.full.json        |   11 +
 .../resources/V30/CustomerInfo/16/entity.xml    |   37 +
 fit/src/main/resources/V30/Message/feed.xml     |  277 ++++
 .../feed.full.json                              |   30 +
 .../feed.xml                                    |   69 +
 fit/src/main/resources/V30/Person/feed.xml      |  307 ++++
 .../$value.bin                                  |    0
 .../entity.full.json                            |   16 +
 .../entity.xml                                  |   40 +
 .../resources/V40/Advertisements/feed.full.json |   31 +
 .../main/resources/V40/Advertisements/feed.xml  |   65 +
 .../feed.full.json                              |   96 ++
 .../feed.xml                                    |  103 ++
 .../feed.full.json                              |  159 ++
 .../feed.xml                                    |  109 ++
 fit/src/main/resources/V40/demoMetadata.xml     |  172 +++
 fit/src/main/resources/V40/openTypeMetadata.xml |   10 +-
 .../main/webapp/WEB-INF/applicationContext.xml  |    1 +
 .../olingo/fit/proxy/v3/AbstractTest.java       |  150 ++
 .../proxy/v3/AuthEntityRetrieveTestITCase.java  |   50 +
 .../fit/proxy/v3/EntityCreateTestITCase.java    |  210 +++
 .../fit/proxy/v3/EntityRetrieveTestITCase.java  |  247 ++++
 .../fit/proxy/v3/EntitySetTestITCase.java       |   98 ++
 .../AllGeoCollectionTypesSet.java               |   55 +
 .../astoriadefaultservice/AllGeoTypesSet.java   |   53 +
 .../services/astoriadefaultservice/Car.java     |   53 +
 .../astoriadefaultservice/Computer.java         |   53 +
 .../astoriadefaultservice/ComputerDetail.java   |   53 +
 .../astoriadefaultservice/Customer.java         |   53 +
 .../astoriadefaultservice/CustomerInfo.java     |   53 +
 .../astoriadefaultservice/DefaultContainer.java |  160 ++
 .../services/astoriadefaultservice/Driver.java  |   53 +
 .../astoriadefaultservice/LastLogin.java        |   53 +
 .../services/astoriadefaultservice/License.java |   53 +
 .../services/astoriadefaultservice/Login.java   |   53 +
 .../astoriadefaultservice/MappedEntityType.java |   53 +
 .../services/astoriadefaultservice/Message.java |   53 +
 .../MessageAttachment.java                      |   53 +
 .../services/astoriadefaultservice/Order.java   |   53 +
 .../astoriadefaultservice/OrderLine.java        |   57 +
 .../astoriadefaultservice/PageView.java         |   55 +
 .../services/astoriadefaultservice/Person.java  |   59 +
 .../astoriadefaultservice/PersonMetadata.java   |   53 +
 .../services/astoriadefaultservice/Product.java |   55 +
 .../astoriadefaultservice/ProductDetail.java    |   53 +
 .../astoriadefaultservice/ProductPhoto.java     |   53 +
 .../astoriadefaultservice/ProductReview.java    |   53 +
 .../astoriadefaultservice/RSAToken.java         |   53 +
 .../astoriadefaultservice/package-info.java     |   21 +
 .../astoriadefaultservice/types/Aliases.java    |   59 +
 .../types/AllSpatialCollectionTypes.java        |   91 ++
 .../AllSpatialCollectionTypesCollection.java    |   47 +
 .../types/AllSpatialCollectionTypes_Simple.java |  230 +++
 ...SpatialCollectionTypes_SimpleCollection.java |   47 +
 .../types/AllSpatialTypes.java                  |  459 ++++++
 .../types/AllSpatialTypesCollection.java        |   47 +
 .../astoriadefaultservice/types/AuditInfo.java  |   81 ++
 .../types/BackOrderLine.java                    |  204 +++
 .../types/BackOrderLine2.java                   |  204 +++
 .../types/BackOrderLine2Collection.java         |   47 +
 .../types/BackOrderLineCollection.java          |   47 +
 .../astoriadefaultservice/types/Car.java        |  163 +++
 .../types/CarCollection.java                    |   47 +
 .../types/ComplexToCategory.java                |   73 +
 .../types/ComplexWithAllPrimitiveTypes.java     |  150 ++
 .../astoriadefaultservice/types/Computer.java   |  135 ++
 .../types/ComputerCollection.java               |   47 +
 .../types/ComputerDetail.java                   |  259 ++++
 .../types/ComputerDetailCollection.java         |   47 +
 .../types/ConcurrencyInfo.java                  |   66 +
 .../types/ContactDetails.java                   |  114 ++
 .../astoriadefaultservice/types/Contractor.java |  217 +++
 .../types/ContractorCollection.java             |   47 +
 .../astoriadefaultservice/types/Customer.java   |  295 ++++
 .../types/CustomerCollection.java               |   47 +
 .../types/CustomerInfo.java                     |  117 ++
 .../types/CustomerInfoCollection.java           |   47 +
 .../astoriadefaultservice/types/Dimensions.java |   73 +
 .../types/DiscontinuedProduct.java              |  383 +++++
 .../types/DiscontinuedProductCollection.java    |   47 +
 .../astoriadefaultservice/types/Driver.java     |  124 ++
 .../types/DriverCollection.java                 |   47 +
 .../astoriadefaultservice/types/Employee.java   |  214 +++
 .../types/EmployeeCollection.java               |   59 +
 .../astoriadefaultservice/types/LastLogin.java  |  170 +++
 .../types/LastLoginCollection.java              |   47 +
 .../astoriadefaultservice/types/License.java    |  193 +++
 .../types/LicenseCollection.java                |   47 +
 .../astoriadefaultservice/types/Login.java      |  164 +++
 .../types/LoginCollection.java                  |   47 +
 .../types/MappedEntityType.java                 |  544 +++++++
 .../types/MappedEntityTypeCollection.java       |   47 +
 .../astoriadefaultservice/types/Message.java    |  259 ++++
 .../types/MessageAttachment.java                |  114 ++
 .../types/MessageAttachmentCollection.java      |   47 +
 .../types/MessageCollection.java                |   47 +
 .../astoriadefaultservice/types/MessageKey.java |   74 +
 .../astoriadefaultservice/types/Order.java      |  165 +++
 .../types/OrderCollection.java                  |   47 +
 .../astoriadefaultservice/types/OrderLine.java  |  203 +++
 .../types/OrderLineCollection.java              |   47 +
 .../types/OrderLineKey.java                     |   74 +
 .../astoriadefaultservice/types/PageView.java   |  193 +++
 .../types/PageViewCollection.java               |   47 +
 .../astoriadefaultservice/types/Person.java     |  124 ++
 .../types/PersonCollection.java                 |   47 +
 .../types/PersonMetadata.java                   |  170 +++
 .../types/PersonMetadataCollection.java         |   47 +
 .../astoriadefaultservice/types/Phone.java      |   66 +
 .../astoriadefaultservice/types/Product.java    |  296 ++++
 .../types/ProductCollection.java                |   47 +
 .../types/ProductDetail.java                    |  124 ++
 .../types/ProductDetailCollection.java          |   47 +
 .../types/ProductPageView.java                  |  240 +++
 .../types/ProductPageViewCollection.java        |   47 +
 .../types/ProductPhoto.java                     |  137 ++
 .../types/ProductPhotoCollection.java           |   47 +
 .../types/ProductPhotoKey.java                  |   74 +
 .../types/ProductReview.java                    |  170 +++
 .../types/ProductReviewCollection.java          |   47 +
 .../types/ProductReviewKey.java                 |   85 ++
 .../astoriadefaultservice/types/RSAToken.java   |  124 ++
 .../types/RSATokenCollection.java               |   47 +
 .../types/SpecialEmployee.java                  |  283 ++++
 .../types/SpecialEmployeeCollection.java        |   47 +
 .../types/package-info.java                     |   21 +
 .../olingo/fit/proxy/v4/AbstractTest.java       |   81 ++
 .../proxy/v4/AuthEntityRetrieveTestITCase.java  |   49 +
 .../fit/proxy/v4/EntityRetrieveTestITCase.java  |  163 +++
 .../fit/proxy/v4/EntitySetTestITCase.java       |   75 +
 .../services/odatawcfservice/Accounts.java      |   53 +
 .../odata/services/odatawcfservice/Boss.java    |   54 +
 .../odata/services/odatawcfservice/Company.java |   53 +
 .../services/odatawcfservice/Customers.java     |   53 +
 .../odatawcfservice/DefaultStoredPI.java        |   52 +
 .../services/odatawcfservice/Departments.java   |   53 +
 .../services/odatawcfservice/Employees.java     |   53 +
 .../odatawcfservice/InMemoryEntities.java       |  165 +++
 .../services/odatawcfservice/LabourUnion.java   |   52 +
 .../services/odatawcfservice/OrderDetails.java  |   53 +
 .../odata/services/odatawcfservice/Orders.java  |   53 +
 .../odata/services/odatawcfservice/People.java  |   57 +
 .../odatawcfservice/ProductDetails.java         |   53 +
 .../odatawcfservice/ProductReviews.java         |   53 +
 .../services/odatawcfservice/Products.java      |   53 +
 .../services/odatawcfservice/PublicCompany.java |   53 +
 .../services/odatawcfservice/StoredPIs.java     |   53 +
 .../odatawcfservice/SubscriptionTemplates.java  |   53 +
 .../services/odatawcfservice/VipCustomer.java   |   52 +
 .../services/odatawcfservice/package-info.java  |   21 +
 .../odatawcfservice/types/AccessLevel.java      |   47 +
 .../services/odatawcfservice/types/Account.java |  211 +++
 .../types/AccountCollection.java                |   47 +
 .../odatawcfservice/types/AccountInfo.java      |   89 ++
 .../services/odatawcfservice/types/Address.java |  106 ++
 .../services/odatawcfservice/types/Asset.java   |  137 ++
 .../odatawcfservice/types/AssetCollection.java  |   47 +
 .../services/odatawcfservice/types/Club.java    |  114 ++
 .../odatawcfservice/types/ClubCollection.java   |   47 +
 .../services/odatawcfservice/types/Color.java   |   45 +
 .../services/odatawcfservice/types/Company.java |  250 ++++
 .../odatawcfservice/types/CompanyAddress.java   |  134 ++
 .../odatawcfservice/types/CompanyCategory.java  |   46 +
 .../types/CompanyCollection.java                |   47 +
 .../odatawcfservice/types/CreditCardPI.java     |  293 ++++
 .../types/CreditCardPICollection.java           |   47 +
 .../odatawcfservice/types/CreditRecord.java     |  160 ++
 .../types/CreditRecordCollection.java           |   47 +
 .../odatawcfservice/types/Customer.java         |  361 +++++
 .../types/CustomerCollection.java               |   47 +
 .../odatawcfservice/types/Department.java       |  124 ++
 .../types/DepartmentCollection.java             |   47 +
 .../odatawcfservice/types/Employee.java         |  328 +++++
 .../types/EmployeeCollection.java               |   47 +
 .../odatawcfservice/types/GiftCard.java         |  173 +++
 .../types/GiftCardCollection.java               |   47 +
 .../odatawcfservice/types/HomeAddress.java      |  124 ++
 .../odatawcfservice/types/LabourUnion.java      |  114 ++
 .../types/LabourUnionCollection.java            |   47 +
 .../services/odatawcfservice/types/Order.java   |  190 +++
 .../odatawcfservice/types/OrderCollection.java  |   47 +
 .../odatawcfservice/types/OrderDetail.java      |  203 +++
 .../types/OrderDetailCollection.java            |   47 +
 .../odatawcfservice/types/OrderDetailKey.java   |   74 +
 .../types/PaymentInstrument.java                |  167 +++
 .../types/PaymentInstrumentCollection.java      |   47 +
 .../services/odatawcfservice/types/Person.java  |  290 ++++
 .../odatawcfservice/types/PersonCollection.java |   47 +
 .../services/odatawcfservice/types/Product.java |  305 ++++
 .../types/ProductCollection.java                |   60 +
 .../odatawcfservice/types/ProductDetail.java    |  192 +++
 .../types/ProductDetailCollection.java          |   47 +
 .../odatawcfservice/types/ProductDetailKey.java |   74 +
 .../odatawcfservice/types/ProductReview.java    |  206 +++
 .../types/ProductReviewCollection.java          |   47 +
 .../odatawcfservice/types/ProductReviewKey.java |   96 ++
 .../odatawcfservice/types/PublicCompany.java    |  286 ++++
 .../types/PublicCompanyCollection.java          |   47 +
 .../odatawcfservice/types/Statement.java        |  160 ++
 .../types/StatementCollection.java              |   47 +
 .../odatawcfservice/types/StoredPI.java         |  160 ++
 .../types/StoredPICollection.java               |   47 +
 .../odatawcfservice/types/Subscription.java     |  183 +++
 .../types/SubscriptionCollection.java           |   47 +
 .../odatawcfservice/types/package-info.java     |   21 +
 .../olingo/fit/v3/AbstractTestITCase.java       |    2 +-
 .../apache/olingo/fit/v3/AsyncTestITCase.java   |    2 +-
 .../apache/olingo/fit/v3/BatchTestITCase.java   |   13 +
 .../olingo/fit/v3/EntityRetrieveTestITCase.java |   24 +-
 .../olingo/fit/v3/MediaEntityTestITCase.java    |  109 +-
 .../olingo/fit/v3/QueryOptionsTestITCase.java   |    2 +-
 .../olingo/fit/v4/AbstractTestITCase.java       |    9 +-
 .../fit/v4/BoundOperationInvokeTestITCase.java  |   20 +-
 .../olingo/fit/v4/DerivedTypeTestITCase.java    |  145 ++
 .../olingo/fit/v4/EntityCreateTestITCase.java   |    2 +-
 .../olingo/fit/v4/EntityRetrieveTestITCase.java |   32 +-
 .../olingo/fit/v4/EntitySetTestITCase.java      |   13 +-
 .../olingo/fit/v4/KeyAsSegmentTestITCase.java   |    9 +-
 .../olingo/fit/v4/MediaEntityTestITCase.java    |  181 +++
 .../olingo/fit/v4/OpenTypeTestITCase.java       |   12 +-
 .../olingo/fit/v4/PropertyTestITCase.java       |   32 +-
 .../olingo/fit/v4/PropertyValueTestITCase.java  |    4 +-
 .../olingo/fit/v4/QueryOptionsTestITCase.java   |   53 +-
 .../olingo/fit/v4/SingletonTestITCase.java      |  102 ++
 ...che.olingo.ext.proxy.api.AbstractComplexType |   14 +
 .../client/api/CommonEdmEnabledODataClient.java |    7 +
 .../olingo/client/api/CommonODataClient.java    |    4 +-
 .../batch/CommonBatchRequestFactory.java        |    8 +
 .../request/batch/v3/BatchRequestFactory.java   |    8 +-
 .../request/batch/v4/BatchRequestFactory.java   |    8 +-
 .../request/cud/v4/CUDRequestFactory.java       |    8 +
 .../retrieve/v4/RetrieveRequestFactory.java     |    5 +-
 .../streamed/CommonStreamedRequestFactory.java  |   67 -
 .../streamed/StreamedRequestFactory.java        |   67 +
 .../streamed/v3/StreamedRequestFactory.java     |   24 -
 .../streamed/v4/StreamedRequestFactory.java     |   24 -
 .../olingo/client/api/op/CommonODataBinder.java |    9 +
 .../olingo/client/api/uri/QueryOption.java      |    7 +
 .../olingo/client/api/uri/v4/SearchFactory.java |   31 +
 .../olingo/client/api/uri/v4/URIBuilder.java    |   12 +-
 .../olingo/client/api/uri/v4/URISearch.java     |   32 +
 .../olingo/client/api/v3/ODataClient.java       |    4 -
 .../olingo/client/api/v4/ODataClient.java       |    7 +-
 .../request/cud/v4/CUDRequestFactoryImpl.java   |   17 +
 .../request/retrieve/ODataMediaRequestImpl.java |    3 +-
 .../retrieve/v4/RetrieveRequestFactoryImpl.java |    6 +
 .../AbstractStreamedRequestFactory.java         |   77 -
 .../streamed/StreamedRequestFactoryImpl.java    |   77 +
 .../streamed/v3/StreamedRequestFactoryImpl.java |   33 -
 .../streamed/v4/StreamedRequestFactoryImpl.java |   33 -
 .../olingo/client/core/edm/EdmClientImpl.java   |    6 +-
 .../olingo/client/core/edm/EdmSchemaImpl.java   |   24 +-
 .../client/core/edm/v3/EdmOperationProxy.java   |   10 +-
 .../client/core/op/AbstractODataBinder.java     |   85 +-
 .../client/core/op/impl/v3/ODataBinderImpl.java |   15 +-
 .../client/core/op/impl/v4/ODataBinderImpl.java |  199 ++-
 .../client/core/uri/AbstractURIBuilder.java     |   15 +-
 .../client/core/uri/v3/URIBuilderImpl.java      |    5 -
 .../client/core/uri/v4/URIBuilderImpl.java      |   19 +-
 .../core/v3/EdmEnabledODataClientImpl.java      |    7 +
 .../olingo/client/core/v3/ODataClientImpl.java  |    4 +-
 .../apache/olingo/client/core/v4/AndSearch.java |   42 +
 .../core/v4/EdmEnabledODataClientImpl.java      |   10 +-
 .../olingo/client/core/v4/LiteralSearch.java    |   35 +
 .../apache/olingo/client/core/v4/NotSearch.java |   35 +
 .../olingo/client/core/v4/ODataClientImpl.java  |   12 +-
 .../apache/olingo/client/core/v4/OrSearch.java  |   42 +
 .../client/core/v4/SearchFactoryImpl.java       |   46 +
 .../client/core/uri/v4/URIBuilderTest.java      |   29 +-
 .../olingo/client/core/v3/EntityTest.java       |    2 +-
 .../olingo/client/core/v3/MetadataTest.java     |   33 +-
 .../client/core/v3/PrimitiveValueTest.java      |    2 +-
 .../olingo/client/core/v4/EntityTest.java       |   79 +-
 .../apache/olingo/client/core/v4/JSONTest.java  |    1 +
 .../olingo/client/core/v4/MetadataTest.java     |   10 +-
 .../client/core/v3/ComputerDetail_-10.json      |   29 +-
 .../client/core/v3/PersonDetails_0_Person.json  |    2 +-
 .../core/v3/Product_-10_Dimensions_Width.json   |    5 +-
 .../apache/olingo/client/core/v4/annotated.json |   62 +
 .../apache/olingo/client/core/v4/annotated.xml  |   76 +
 .../apache/olingo/commons/api/Constants.java    |    2 +
 .../olingo/commons/api/data/Annotatable.java    |   29 +
 .../olingo/commons/api/data/Annotation.java     |   29 +
 .../olingo/commons/api/data/DeletedEntity.java  |   36 +
 .../apache/olingo/commons/api/data/Delta.java   |    8 +-
 .../olingo/commons/api/data/DeltaLink.java      |   36 +
 .../apache/olingo/commons/api/data/Entity.java  |    6 +-
 .../olingo/commons/api/data/EntitySet.java      |    2 +-
 .../apache/olingo/commons/api/data/Link.java    |    2 +-
 .../apache/olingo/commons/api/data/Linked.java  |   16 +
 .../commons/api/data/LinkedComplexValue.java    |    5 +-
 .../olingo/commons/api/data/Property.java       |   10 +-
 .../olingo/commons/api/data/Valuable.java       |   30 +
 .../commons/api/domain/CommonODataEntity.java   |   10 +-
 .../api/domain/CommonODataObjectFactory.java    |    4 +
 .../olingo/commons/api/domain/ODataItem.java    |    9 -
 .../olingo/commons/api/domain/ODataLink.java    |   20 +-
 .../commons/api/domain/ODataPrimitiveValue.java |    4 +
 .../api/domain/v4/ODataAnnotatatable.java       |   26 +
 .../commons/api/domain/v4/ODataAnnotation.java  |   30 +
 .../commons/api/domain/v4/ODataDeltaLink.java   |    2 +-
 .../commons/api/domain/v4/ODataEntity.java      |    2 +-
 .../commons/api/domain/v4/ODataEntitySet.java   |    2 +-
 .../olingo/commons/api/domain/v4/ODataLink.java |   74 +
 .../api/domain/v4/ODataLinkedComplexValue.java  |    3 +-
 .../api/domain/v4/ODataObjectFactory.java       |   14 +
 .../commons/api/domain/v4/ODataProperty.java    |   39 +-
 .../commons/api/domain/v4/ODataValuable.java    |  104 ++
 .../olingo/commons/api/domain/v4/Singleton.java |   22 +
 .../core/data/AbstractAnnotatedObject.java      |   37 +
 .../commons/core/data/AbstractAtomDealer.java   |    4 +
 .../commons/core/data/AbstractEntity.java       |   32 +-
 .../core/data/AbstractJsonDeserializer.java     |  101 +-
 .../core/data/AbstractJsonSerializer.java       |   34 +-
 .../commons/core/data/AbstractODataObject.java  |    2 +-
 .../commons/core/data/AbstractProperty.java     |   23 +-
 .../commons/core/data/AnnotationImpl.java       |   63 +
 .../commons/core/data/AtomDeserializer.java     |  104 +-
 .../core/data/AtomGeoValueDeserializer.java     |    5 +
 .../commons/core/data/AtomSerializer.java       |   47 +-
 .../commons/core/data/DeletedEntityImpl.java    |   50 +
 .../olingo/commons/core/data/DeltaLinkImpl.java |   64 +
 .../core/data/JSONDeltaDeserializer.java        |   11 +-
 .../core/data/JSONEntityDeserializer.java       |   59 +-
 .../commons/core/data/JSONEntitySerializer.java |   17 +-
 .../core/data/JSONEntitySetDeserializer.java    |   18 +
 .../core/data/JSONEntitySetSerializer.java      |    5 +
 .../core/data/JSONPropertyDeserializer.java     |   19 +
 .../core/data/JSONPropertySerializer.java       |   11 +-
 .../olingo/commons/core/data/LinkImpl.java      |    2 +-
 .../core/data/LinkedComplexValueImpl.java       |   29 +
 .../commons/core/data/v4/AbstractDelta.java     |   16 +-
 .../core/domain/AbstractODataEntity.java        |   22 +-
 .../core/domain/AbstractODataObjectFactory.java |   14 -
 .../domain/AbstractODataPrimitiveValue.java     |   12 +-
 .../core/domain/AbstractODataProperty.java      |    9 -
 .../core/domain/v3/ODataObjectFactoryImpl.java  |   24 +
 .../core/domain/v4/ODataAnnotationImpl.java     |  102 ++
 .../core/domain/v4/ODataComplexValueImpl.java   |    9 +
 .../core/domain/v4/ODataDeletedEntityImpl.java  |    8 +-
 .../core/domain/v4/ODataDeltaLinkImpl.java      |   22 +-
 .../commons/core/domain/v4/ODataEntityImpl.java |   11 +-
 .../core/domain/v4/ODataEntitySetImpl.java      |   12 +-
 .../core/domain/v4/ODataObjectFactoryImpl.java  |   32 +
 .../core/domain/v4/ODataPropertyImpl.java       |   37 +-
 .../core/domain/v4/ODataValuableImpl.java       |  120 ++
 .../core/edm/primitivetype/EdmDateTime.java     |   30 +-
 pom.xml                                         |    4 +-
 432 files changed, 31220 insertions(+), 2380 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c32f4a0b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
----------------------------------------------------------------------