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 2015/04/01 14:53:42 UTC

[1/2] olingo-odata4 git commit: [OLINGO-603] Action Parameter deserialization based on type kind

Repository: olingo-odata4
Updated Branches:
  refs/heads/master 26be7d2e7 -> d067037f4


[OLINGO-603] Action Parameter deserialization based on type kind


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

Branch: refs/heads/master
Commit: ef6ed4e3efea2464faa5c08bdffad6f50bf2cccd
Parents: 26be7d2
Author: Christian Amend <ch...@apache.org>
Authored: Wed Apr 1 10:18:52 2015 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Wed Apr 1 14:29:02 2015 +0200

----------------------------------------------------------------------
 .../commons/api/edm/constants/EdmTypeKind.java  |  2 +-
 .../api/deserializer/DeserializerException.java |  4 +++-
 .../json/ODataJsonDeserializer.java             | 20 ++++++++++++++++----
 .../server-core-exceptions-i18n.properties      |  2 ++
 .../core/edm/provider/EdmTypeImplTest.java      |  4 ++--
 5 files changed, 24 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef6ed4e3/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/EdmTypeKind.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/EdmTypeKind.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/EdmTypeKind.java
index bf24673..b55ec16 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/EdmTypeKind.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/EdmTypeKind.java
@@ -23,6 +23,6 @@ package org.apache.olingo.commons.api.edm.constants;
  */
 public enum EdmTypeKind {
 
-  UNDEFINED, PRIMITIVE, ENUM, DEFINITION, COMPLEX, ENTITY, NAVIGATION, ACTION, FUNCTION, SYSTEM
+  PRIMITIVE, ENUM, DEFINITION, COMPLEX, ENTITY, NAVIGATION, ACTION, FUNCTION
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef6ed4e3/lib/server-api/src/main/java/org/apache/olingo/server/api/deserializer/DeserializerException.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/deserializer/DeserializerException.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/deserializer/DeserializerException.java
index 8ccb253..1989df1 100644
--- a/lib/server-api/src/main/java/org/apache/olingo/server/api/deserializer/DeserializerException.java
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/deserializer/DeserializerException.java
@@ -45,7 +45,9 @@ public class DeserializerException extends ODataTranslatedException {
     /** parameter: navigationPropertyName */NAVIGATION_PROPERTY_NOT_FOUND, 
     /** parameter: annotationName */INVALID_ANNOTATION_TYPE, 
     /** parameter: annotationName */INVALID_NULL_ANNOTATION, 
-    /** parameter: binding link */INVALID_ENTITY_BINDING_LINK;
+    /** parameter: binding link */INVALID_ENTITY_BINDING_LINK, 
+    /** parameter: action parameter name */INVALID_ACTION_PARAMETER_TYPE, 
+    /** parameter: parameterName */ INVALID_NULL_PARAMETER;
 
     @Override
     public String getKey() {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef6ed4e3/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
index 74c73c8..b9fe770 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
@@ -215,13 +215,17 @@ public class ODataJsonDeserializer implements ODataDeserializer {
       ParameterImpl parameter = new ParameterImpl();
       parameter.setName(name);
       JsonNode jsonNode = node.get(name);
-      if (jsonNode == null) {
+      if (jsonNode == null || jsonNode.isNull()) {
         if (!edmParameter.isNullable()) {
-          // TODO: new message key.
           throw new DeserializerException("Non-nullable parameter not present or null",
-              DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, name);
+              DeserializerException.MessageKeys.INVALID_NULL_PARAMETER, name);
         }
-      } else {
+      }
+
+      switch (edmParameter.getType().getKind()) {
+      case PRIMITIVE:
+      case DEFINITION:
+      case ENUM:
         Property consumePropertyNode =
             consumePropertyNode(edmParameter.getName(), edmParameter.getType(), edmParameter.isCollection(),
                 edmParameter.isNullable(), edmParameter.getMaxLength(), edmParameter.getPrecision(), edmParameter
@@ -231,6 +235,14 @@ public class ODataJsonDeserializer implements ODataDeserializer {
         parameter.setValue(consumePropertyNode.getValueType(), consumePropertyNode.getValue());
         parameters.add(parameter);
         node.remove(name);
+        break;
+      case COMPLEX:
+      case ENTITY:
+        throw new DeserializerException("Entity an complex parameters currently not Implemented",
+            DeserializerException.MessageKeys.NOT_IMPLEMENTED);
+      default:
+        throw new DeserializerException("Invalid type kind " + edmParameter.getType().getKind().toString()
+            + " for action parameter: " + name, DeserializerException.MessageKeys.INVALID_ACTION_PARAMETER_TYPE, name);
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef6ed4e3/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties b/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties
index 76266ea..71013d2 100644
--- a/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties
+++ b/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties
@@ -115,6 +115,8 @@ DeserializerException.UNKNOWN_PRIMITIVE_TYPE=Unknown primitive type '%1$s' for p
 DeserializerException.NAVIGATION_PROPERTY_NOT_FOUND=Can`t find navigation property with name: '%1$s'.
 DeserializerException.INVALID_ANNOTATION_TYPE=The annotation '%1$s' has the wrong JSON type.
 DeserializerException.INVALID_ENTITY_BINDING_LINK=The binding link '%1$s' is malformed.
+DeserializerException.INVALID_ACTION_PARAMETER_TYPE=The action parameter '%1$s' must be either primitive, complex or an entity or a collection of those types.
+DeserializerException.INVALID_NULL_PARAMETER=The parameter '%1$s' must not be null.
 
 BatchDeserializerException.INVALID_BOUNDARY=Invalid boundary at line '%1$s'.
 BatchDeserializerException.INVALID_CHANGESET_METHOD=Invalid method: a ChangeSet cannot contain retrieve requests at line '%1$s'.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef6ed4e3/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeImplTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeImplTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeImplTest.java
index ddfd15d..b9f6db6 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeImplTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmTypeImplTest.java
@@ -37,10 +37,10 @@ public class EdmTypeImplTest {
 
   @Test
   public void getterTest() {
-    EdmType type = new EdmTypeImplTester(new FullQualifiedName("namespace", "name"), EdmTypeKind.UNDEFINED);
+    EdmType type = new EdmTypeImplTester(new FullQualifiedName("namespace", "name"), EdmTypeKind.PRIMITIVE);
     assertEquals("name", type.getName());
     assertEquals("namespace", type.getNamespace());
-    assertEquals(EdmTypeKind.UNDEFINED, type.getKind());
+    assertEquals(EdmTypeKind.PRIMITIVE, type.getKind());
     EdmAnnotatable an = (EdmAnnotatable) type;
     assertNotNull(an.getAnnotations().get(0));
   }


[2/2] olingo-odata4 git commit: [OLINGO-603] Further refactoring

Posted by ch...@apache.org.
[OLINGO-603] Further refactoring


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

Branch: refs/heads/master
Commit: d067037f40766f10c6b8d95566436cba67755abb
Parents: ef6ed4e
Author: Christian Amend <ch...@apache.org>
Authored: Wed Apr 1 14:23:26 2015 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Wed Apr 1 14:30:27 2015 +0200

----------------------------------------------------------------------
 .../proxy/commons/EntityInvocationHandler.java  |   2 +-
 .../org/apache/olingo/fit/AbstractServices.java |  10 +-
 .../api/communication/request/ODataRequest.java |   2 -
 .../cud/ODataReferenceAddingRequest.java        |  20 +--
 .../response/ODataBatchResponse.java            |   2 +-
 .../response/ODataReferenceAddingResponse.java  |   2 +-
 .../olingo/client/api/uri/URIBuilder.java       |   2 +-
 .../apache/olingo/client/api/uri/URIFilter.java |   2 +-
 .../request/AbstractODataRequest.java           |   2 -
 .../olingo/client/core/uri/FilterConst.java     |   2 +-
 .../olingo/client/core/uri/FilterLiteral.java   |   2 +-
 .../olingo/client/core/uri/FilterProperty.java  |   2 +-
 .../apache/olingo/client/core/uri/URIUtils.java |   1 -
 .../commons/api/domain/ODataComplexValue.java   |   1 -
 .../commons/api/domain/ODataInlineEntity.java   |   2 -
 .../olingo/commons/api/domain/ODataLink.java    |   1 -
 .../commons/api/domain/ODataLinkType.java       |   1 -
 .../commons/api/edm/EdmPrimitiveTypeKind.java   |   2 -
 .../olingo/commons/api/edm/provider/Schema.java |   4 +-
 .../olingo/commons/api/format/ODataFormat.java  |   1 -
 .../api/serializer/FixedFormatSerializer.java   |   2 +-
 .../json/ODataJsonDeserializer.java             |  45 +++---
 .../server/tecsvc/provider/ActionProvider.java  | 161 +++++++++----------
 ...ataJsonDeserializerActionParametersTest.java |  31 ++++
 .../core/uri/testutil/FilterValidator.java      |   2 +-
 .../core/uri/testutil/ParserValidator.java      |   6 +-
 26 files changed, 161 insertions(+), 149 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java
index 20ab3a5..d3d7476 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java
@@ -277,7 +277,7 @@ public class EntityInvocationHandler extends AbstractStructuredInvocationHandler
   /**
    * Gets the current ETag defined into the wrapped entity.
    *
-   * @return
+   * @return the current etag
    */
   public String getETag() {
     return getEntity().getETag();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java b/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
index a2ccbae..de8c10e 100644
--- a/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
+++ b/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
@@ -1463,7 +1463,7 @@ public abstract class AbstractServices {
    * @param path
    * @param format
    * @param changes
-   * @return
+   * @return response
    */
   @PUT
   @Path("/{entitySetName}({entityId})/{path:.*}/$value")
@@ -1491,7 +1491,7 @@ public abstract class AbstractServices {
    * @param path
    * @param format
    * @param changes
-   * @return
+   * @return response
    */
   @MERGE
   @Path("/{entitySetName}({entityId})/{path:.*}")
@@ -1519,7 +1519,7 @@ public abstract class AbstractServices {
    * @param path
    * @param format
    * @param changes
-   * @return
+   * @return response
    */
   @PATCH
   @Path("/{entitySetName}({entityId})/{path:.*}")
@@ -1587,7 +1587,7 @@ public abstract class AbstractServices {
    * @param path
    * @param format
    * @param changes
-   * @return
+   * @return response
    */
   @PUT
   @Path("/{entitySetName}({entityId})/{path:.*}")
@@ -1650,7 +1650,7 @@ public abstract class AbstractServices {
    * @param entityId
    * @param path
    * @param format
-   * @return
+   * @return response
    */
   @DELETE
   @Path("/{entitySetName}({entityId})/{path:.*}/$value")

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataRequest.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataRequest.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataRequest.java
index b97085f..55831b7 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataRequest.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataRequest.java
@@ -28,9 +28,7 @@ import org.apache.olingo.commons.api.http.HttpMethod;
 /**
  * Abstract representation of an OData request. Get instance by using factories.
  *
- * @see org.apache.olingo.client.api.communication.request.cud.v3.CUDRequestFactory
  * @see org.apache.olingo.client.api.communication.request.cud.CUDRequestFactory
- * @see org.apache.olingo.client.api.communication.request.batch.v3.BatchRequestFactory
  * @see org.apache.olingo.client.api.communication.request.batch.BatchRequestFactory
  * @see org.apache.olingo.client.api.communication.request.invoke.InvokeRequestFactory
  */

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/ODataReferenceAddingRequest.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/ODataReferenceAddingRequest.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/ODataReferenceAddingRequest.java
index ad34ecb..82f001a 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/ODataReferenceAddingRequest.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/ODataReferenceAddingRequest.java
@@ -1,18 +1,18 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
+ * 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
- *
+ * 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
+ * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
@@ -28,12 +28,12 @@ import org.apache.olingo.client.api.communication.response.ODataReferenceAddingR
  * ODataReferenceAdding requests eighter add or change the reference of navigation properties.
  * 
  * If the navigation property is a collection of navigation references, the request adds a new reference to the
- * collection.  [OData Protocol 4.0 - 11.4.6.1]
+ * collection. [OData Protocol 4.0 - 11.4.6.1]
  * 
  * If the request addresses an navigation property, which references a single entity, the reference will
  * be changed to the value provided by the request. [OData-Protocol 4.0 - 11.4.6.3]
  */
-public interface ODataReferenceAddingRequest
-        extends ODataBasicRequest<ODataReferenceAddingResponse>, ODataBatchableRequest {
+public interface ODataReferenceAddingRequest extends ODataBasicRequest<ODataReferenceAddingResponse>,
+    ODataBatchableRequest {
 //No additional methods needed for now.
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataBatchResponse.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataBatchResponse.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataBatchResponse.java
index 744758e..358c441 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataBatchResponse.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataBatchResponse.java
@@ -25,7 +25,7 @@ import org.apache.olingo.client.api.communication.request.batch.ODataBatchRespon
 /**
  * This class implements a response to a batch request.
  *
- * @see org.apache.olingo.client.api.communication.request.batch.CommonODataBatchRequest
+ * @see org.apache.olingo.client.api.communication.request.batch.ODataBatchRequest
  */
 public interface ODataBatchResponse extends ODataResponse {
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataReferenceAddingResponse.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataReferenceAddingResponse.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataReferenceAddingResponse.java
index adae485..51bba0c 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataReferenceAddingResponse.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataReferenceAddingResponse.java
@@ -25,7 +25,7 @@ package org.apache.olingo.client.api.communication.response;
  * If the request was successful, the service response has status code 204 and
  * the body has to be empty.
  *
- * @see org.apache.olingo.client.api.communication.request.cud.api.request.cud.v4.ODataReferenceAddingRequest
+ * @see org.apache.olingo.client.api.communication.request.cud.ODataReferenceAddingRequest
  */
 public interface ODataReferenceAddingResponse extends ODataResponse {
 //No additional methods needed for now.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIBuilder.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIBuilder.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIBuilder.java
index d0eaac9..af6beb7 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIBuilder.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIBuilder.java
@@ -175,7 +175,7 @@ public interface URIBuilder {
    * @return current URIBuilder instance
    * @see QueryOption#FILTER
    * @see URIFilter
-   * @see org.apache.olingo.client.api.uri.CommonFilterFactory
+   * @see org.apache.olingo.client.api.uri.FilterFactory
    */
   URIBuilder filter(URIFilter filter);
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIFilter.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIFilter.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIFilter.java
index 2162b87..517079d 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIFilter.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIFilter.java
@@ -21,7 +21,7 @@ package org.apache.olingo.client.api.uri;
 /**
  * Interface for any available filter; obtain instances via <tt>FilterFactory</tt>.
  *
- * @see org.apache.olingo.client.api.uri.CommonFilterFactory
+ * @see org.apache.olingo.client.api.uri.FilterFactory
  */
 public interface URIFilter {
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
index d10960a..bdfd118 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
@@ -47,9 +47,7 @@ import org.apache.olingo.commons.api.http.HttpMethod;
 /**
  * Abstract representation of an OData request. Get instance by using factories.
  *
- * @see org.apache.olingo.client.api.communication.request.cud.v3.CUDRequestFactory
  * @see org.apache.olingo.client.api.communication.request.cud.CUDRequestFactory
- * @see org.apache.olingo.client.api.communication.request.batch.v3.BatchRequestFactory
  * @see org.apache.olingo.client.api.communication.request.batch.BatchRequestFactory
  * @see org.apache.olingo.client.api.communication.request.invoke.InvokeRequestFactory
  */

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterConst.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterConst.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterConst.java
index c3e7669..f1732cc 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterConst.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterConst.java
@@ -23,7 +23,7 @@ import org.apache.olingo.client.api.uri.FilterArg;
 /**
  * Filter property path; obtain instances via <tt>FilterArgFactory</tt>.
  *
- * @see org.apache.olingo.client.api.uri.CommonFilterArgFactory
+ * @see org.apache.olingo.client.api.uri.FilterArgFactory
  */
 public class FilterConst implements FilterArg {
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterLiteral.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterLiteral.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterLiteral.java
index 4842a96..501a734 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterLiteral.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterLiteral.java
@@ -23,7 +23,7 @@ import org.apache.olingo.client.api.uri.FilterArg;
 /**
  * Filter value literals; obtain instances via <tt>FilterArgFactory</tt>.
  *
- * @see org.apache.olingo.client.api.uri.v3.FilterArgFactory
+ * @see org.apache.olingo.client.api.uri.FilterArgFactory
  */
 public class FilterLiteral implements FilterArg {
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterProperty.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterProperty.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterProperty.java
index bc99eb4..6073112 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterProperty.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/FilterProperty.java
@@ -23,7 +23,7 @@ import org.apache.olingo.client.api.uri.FilterArg;
 /**
  * Filter property path; obtain instances via <tt>FilterArgFactory</tt>.
  *
- * @see org.apache.olingo.client.api.uri.CommonFilterArgFactory
+ * @see org.apache.olingo.client.api.uri.FilterArgFactory
  */
 public class FilterProperty implements FilterArg {
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
index 26399c2..608dc3a 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
@@ -179,7 +179,6 @@ public final class URIUtils {
   /**
    * Turns primitive values into their respective URI representation.
    *
-   * @param version OData protocol version
    * @param obj primitive value
    * @return URI representation
    */

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataComplexValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataComplexValue.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataComplexValue.java
index 04888d7..ad64559 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataComplexValue.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataComplexValue.java
@@ -23,7 +23,6 @@ import java.util.Map;
 /**
  * OData complex property value.
  * 
- * @param <OP> The actual ODataProperty interface.
  */
 public interface ODataComplexValue extends ODataValue, ODataLinked, ODataAnnotatable, Iterable<ODataProperty> {
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataInlineEntity.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataInlineEntity.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataInlineEntity.java
index ff9a420..6ba0ad6 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataInlineEntity.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataInlineEntity.java
@@ -30,7 +30,6 @@ public class ODataInlineEntity extends ODataLink {
   /**
    * Constructor.
    * 
-   * @param version OData service version.
    * @param uri edit link.
    * @param type type.
    * @param title title.
@@ -45,7 +44,6 @@ public class ODataInlineEntity extends ODataLink {
   /**
    * Constructor.
    * 
-   * @param version OData service version.
    * @param baseURI base URI.
    * @param href href.
    * @param type type.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLink.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLink.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLink.java
index 4bc8bdb..8593679 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLink.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLink.java
@@ -105,7 +105,6 @@ public class ODataLink extends ODataItem implements ODataAnnotatable {
   /**
    * Constructor.
    * 
-   * @param version OData service version.
    * @param uri URI.
    * @param type type.
    * @param title title.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLinkType.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLinkType.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLinkType.java
index f99aa3e..5ae427c 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLinkType.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataLinkType.java
@@ -73,7 +73,6 @@ public enum ODataLinkType {
    * Gets
    * <code>LinkType</code> instance from the given rel and type.
    * 
-   * @param version OData protocol version.
    * @param rel rel.
    * @param type type.
    * @return <code>ODataLinkType</code> object.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmPrimitiveTypeKind.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmPrimitiveTypeKind.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmPrimitiveTypeKind.java
index b7efca7..78dd013 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmPrimitiveTypeKind.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmPrimitiveTypeKind.java
@@ -81,7 +81,6 @@ public enum EdmPrimitiveTypeKind {
   /**
    * Gets <tt>EdmPrimitiveTypeKind</tt> from a full-qualified type name, for the given OData protocol version.
    * 
-   * @param version OData protocol version.
    * @param fqn full-qualified type name.
    * @return <tt>EdmPrimitiveTypeKind</tt> object.
    */
@@ -93,7 +92,6 @@ public enum EdmPrimitiveTypeKind {
    * Gets <tt>EdmPrimitiveTypeKind</tt> from a full type expression (as <tt>Edm.Int32</tt>), for the given OData
    * protocol version.
    * 
-   * @param version OData protocol version.
    * @param fqn string value type.
    * @return <tt>EdmPrimitiveTypeKind</tt> object.
    */

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/Schema.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/Schema.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/Schema.java
index 183478f..7ed2704 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/Schema.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/Schema.java
@@ -131,7 +131,7 @@ public class Schema extends AbstractEdmItem implements Annotatable{
   /**
    * All actions with the given name
    * @param name
-   * @return
+   * @return a list of actions
    */
   public List<Action> getActions(final String name) {
     return getAllByName(name, getActions());
@@ -149,7 +149,7 @@ public class Schema extends AbstractEdmItem implements Annotatable{
   /**
    * All functions with the given name
    * @param name
-   * @return
+   * @return a list of functions
    */
   public List<Function> getFunctions(final String name) {
     return getAllByName(name, getFunctions());

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/commons-api/src/main/java/org/apache/olingo/commons/api/format/ODataFormat.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/format/ODataFormat.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/format/ODataFormat.java
index 6a4b494..52e4bec 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/format/ODataFormat.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/format/ODataFormat.java
@@ -57,7 +57,6 @@ public enum ODataFormat {
 
   /**
    * Gets format as {@link ContentType}.
-   * @param version OData service version.
    * @return format as ContentType.
    */
   public ContentType getContentType() {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/FixedFormatSerializer.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/FixedFormatSerializer.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/FixedFormatSerializer.java
index a62531b..9a0e693 100644
--- a/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/FixedFormatSerializer.java
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/FixedFormatSerializer.java
@@ -53,7 +53,7 @@ public interface FixedFormatSerializer {
    * Serializes a batch response
    * @param batchResponses
    * @param boundary
-   * @return
+   * @return response as an input stream
    * @throws BatchSerializerException
    */
   InputStream batchResponse(List<ODataResponsePart> batchResponses, String boundary) throws BatchSerializerException;

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
index b9fe770..22e570e 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
@@ -183,7 +183,7 @@ public class ODataJsonDeserializer implements ODataDeserializer {
   public List<Parameter> actionParameters(InputStream stream, final EdmAction edmAction) throws DeserializerException {
     try {
       ObjectNode tree = parseJsonTree(stream);
-      ArrayList<Parameter> parameters = new ArrayList<Parameter>();
+      List<Parameter> parameters = new ArrayList<Parameter>();
       consumeParameters(edmAction, tree, parameters);
       assertJsonNodeIsEmpty(tree);
       return parameters;
@@ -208,33 +208,42 @@ public class ODataJsonDeserializer implements ODataDeserializer {
     return tree;
   }
 
-  private void consumeParameters(final EdmAction edmAction, ObjectNode node, ArrayList<Parameter> parameters)
+  private void consumeParameters(final EdmAction edmAction, ObjectNode node, List<Parameter> parameters)
       throws DeserializerException {
-    for (final String name : edmAction.getParameterNames()) {
+    List<String> parameterNames = edmAction.getParameterNames();
+    if (edmAction.isBound()) {
+      // The binding parameter must not occur in the payload.
+      parameterNames = parameterNames.subList(1, parameterNames.size());
+    }
+    for (final String name : parameterNames) {
       final EdmParameter edmParameter = edmAction.getParameter(name);
       ParameterImpl parameter = new ParameterImpl();
       parameter.setName(name);
       JsonNode jsonNode = node.get(name);
-      if (jsonNode == null || jsonNode.isNull()) {
-        if (!edmParameter.isNullable()) {
-          throw new DeserializerException("Non-nullable parameter not present or null",
-              DeserializerException.MessageKeys.INVALID_NULL_PARAMETER, name);
-        }
-      }
 
       switch (edmParameter.getType().getKind()) {
       case PRIMITIVE:
       case DEFINITION:
       case ENUM:
-        Property consumePropertyNode =
-            consumePropertyNode(edmParameter.getName(), edmParameter.getType(), edmParameter.isCollection(),
-                edmParameter.isNullable(), edmParameter.getMaxLength(), edmParameter.getPrecision(), edmParameter
-                    .getScale(),
-                true, edmParameter.getMapping(),
-                jsonNode);
-        parameter.setValue(consumePropertyNode.getValueType(), consumePropertyNode.getValue());
-        parameters.add(parameter);
-        node.remove(name);
+        if (jsonNode == null || jsonNode.isNull()) {
+          if (!edmParameter.isNullable()) {
+            throw new DeserializerException("Non-nullable parameter not present or null",
+                DeserializerException.MessageKeys.INVALID_NULL_PARAMETER, name);
+          }
+          if (edmParameter.isCollection()) {
+            throw new DeserializerException("Collection must not be null for parameter: " + name,
+                DeserializerException.MessageKeys.INVALID_NULL_PARAMETER, name);
+          }
+          parameter.setValue(ValueType.PRIMITIVE, null);
+        } else {
+          Property consumePropertyNode =
+              consumePropertyNode(edmParameter.getName(), edmParameter.getType(), edmParameter.isCollection(),
+                  edmParameter.isNullable(), edmParameter.getMaxLength(), edmParameter.getPrecision(), edmParameter
+                      .getScale(), true, edmParameter.getMapping(), jsonNode);
+          parameter.setValue(consumePropertyNode.getValueType(), consumePropertyNode.getValue());
+          parameters.add(parameter);
+          node.remove(name);
+        }
         break;
       case COMPLEX:
       case ENTITY:

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ActionProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ActionProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ActionProvider.java
index 4318353..d00b953 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ActionProvider.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ActionProvider.java
@@ -50,7 +50,7 @@ public class ActionProvider {
       new FullQualifiedName(SchemaProvider.NAMESPACE, "BAETTwoKeyNavRTETTwoKeyNav");
   
   public static final FullQualifiedName nameBAETAllPrimRT = 
-      new FullQualifiedName(SchemaProvider.NAMESPACE, "BAESAllPrimRT");
+      new FullQualifiedName(SchemaProvider.NAMESPACE, "BAETAllPrimRT");
   
   // Unbound Actions
   public static final FullQualifiedName nameUARTString = new FullQualifiedName(SchemaProvider.NAMESPACE,
@@ -77,74 +77,67 @@ public class ActionProvider {
 
   public List<Action> getActions(final FullQualifiedName actionName) throws ODataException {
     if (actionName.equals(nameUARTString)) {
-      return Arrays.asList(
-              new Action().setName(nameUARTString.getName())
-                          .setReturnType(new ReturnType().setType(PropertyProvider.nameString))
-      );
+      return Collections.singletonList(
+          new Action().setName(nameUARTString.getName())
+              .setReturnType(new ReturnType().setType(PropertyProvider.nameString)));
+
     } else if (actionName.equals(nameUARTCollStringTwoParam)) {
-        return Arrays.asList(
-              new Action().setName(nameUARTCollStringTwoParam.getName())
-                          .setParameters(Arrays.asList(
-                                  new Parameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16),
-                                  new Parameter().setName("ParameterDuration").setType(PropertyProvider.nameDuration)))
-                          .setReturnType(new ReturnType().setType(PropertyProvider.nameString).setCollection(true))
-              );
+        return Collections.singletonList(
+            new Action().setName(nameUARTCollStringTwoParam.getName())
+                .setParameters(Arrays.asList(
+                    new Parameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16),
+                    new Parameter().setName("ParameterDuration").setType(PropertyProvider.nameDuration)))
+                .setReturnType(new ReturnType().setType(PropertyProvider.nameString).setCollection(true)));
 
     } else if (actionName.equals(nameUARTCTTwoPrimParam)) {
-      return Arrays.asList(
-              new Action().setName(nameUARTCTTwoPrimParam.getName())
-                          .setParameters(Arrays.asList(
-                                  new Parameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)
-                                      .setNullable(false)))
-                          .setReturnType(
-                                  new ReturnType().setType(ComplexTypeProvider.nameCTTwoPrim).setNullable(false))
-      );
-
+      return Collections.singletonList(
+          new Action().setName(nameUARTCTTwoPrimParam.getName())
+              .setParameters(Collections.singletonList(
+                  new Parameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)
+                      .setNullable(false)))
+              .setReturnType(
+                  new ReturnType().setType(ComplexTypeProvider.nameCTTwoPrim).setNullable(false)));
+      
     } else if (actionName.equals(nameUARTCollCTTwoPrimParam)) {
-      return Arrays.asList(
-              new Action().setName(nameUARTCollCTTwoPrimParam.getName())
-                          .setParameters(Arrays.asList(
-                                  new Parameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)))
-                          .setReturnType(
-                                  new ReturnType().setType(ComplexTypeProvider.nameCTTwoPrim).setCollection(true))
-      );
+      return Collections.singletonList(
+          new Action().setName(nameUARTCollCTTwoPrimParam.getName())
+              .setParameters(Collections.singletonList(
+                  new Parameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)))
+              .setReturnType(
+                  new ReturnType().setType(ComplexTypeProvider.nameCTTwoPrim).setCollection(true)));
 
     } else if (actionName.equals(nameUARTETTwoKeyTwoPrimParam)) {
-      return Arrays.asList(
-              new Action().setName(nameUARTETTwoKeyTwoPrimParam.getName())
-                          .setParameters(Arrays.asList(
-                                  new Parameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)))
-                          .setReturnType(
-                                  new ReturnType().setType(EntityTypeProvider.nameETTwoKeyTwoPrim))
-      );
+      return Collections.singletonList(
+          new Action().setName(nameUARTETTwoKeyTwoPrimParam.getName())
+              .setParameters(Collections.singletonList(
+                  new Parameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)))
+              .setReturnType(
+                  new ReturnType().setType(EntityTypeProvider.nameETTwoKeyTwoPrim)));
 
     } else if (actionName.equals(nameUARTCollETKeyNavParam)) {
-      return Arrays.asList(
-              new Action().setName(nameUARTCollETKeyNavParam.getName())
-                          .setParameters(Arrays.asList(
-                                  new Parameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)))
-                          .setReturnType(
-                                  new ReturnType().setType(EntityTypeProvider.nameETKeyNav).setCollection(true))
-          );
+      return Collections.singletonList(
+          new Action().setName(nameUARTCollETKeyNavParam.getName())
+              .setParameters(Collections.singletonList(
+                  new Parameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)))
+              .setReturnType(
+                  new ReturnType().setType(EntityTypeProvider.nameETKeyNav).setCollection(true)));
 
     } else if (actionName.equals(nameUARTETAllPrimParam)) {
-      return Arrays.asList(
-              new Action().setName(nameUARTETAllPrimParam.getName())
-                          .setParameters(Arrays.asList(
-                              new Parameter().setName("ParameterDate").setType(PropertyProvider.nameDate)))
-                          .setReturnType(
-                              new ReturnType().setType(EntityTypeProvider.nameETAllPrim))
-          );
+      return Collections.singletonList(
+          new Action().setName(nameUARTETAllPrimParam.getName())
+              .setParameters(Collections.singletonList(
+                  new Parameter().setName("ParameterDate").setType(PropertyProvider.nameDate)))
+              .setReturnType(
+                  new ReturnType().setType(EntityTypeProvider.nameETAllPrim)));
 
     } else if (actionName.equals(nameUARTCollETAllPrimParam)) {
-      return Arrays.asList(
-              new Action().setName(nameUARTCollETAllPrimParam.getName())
-                          .setParameters(Arrays.asList(
-                                  new Parameter().setName("ParameterTimeOfDay")
-                                                 .setType(PropertyProvider.nameTimeOfDay)))
-                          .setReturnType(
-                                  new ReturnType().setType(EntityTypeProvider.nameETAllPrim).setCollection(true))
-      );
+      return Collections.singletonList(
+          new Action().setName(nameUARTCollETAllPrimParam.getName())
+              .setParameters(Collections.singletonList(
+                  new Parameter().setName("ParameterTimeOfDay")
+                      .setType(PropertyProvider.nameTimeOfDay)))
+              .setReturnType(
+                  new ReturnType().setType(EntityTypeProvider.nameETAllPrim).setCollection(true)));
 
     } else if (actionName.equals(nameUART)) {
       return Collections.singletonList(new Action().setName(nameUART.getName()));
@@ -186,26 +179,22 @@ public class ActionProvider {
     } else if (actionName.equals(nameBAESAllPrimRTETAllPrim)) {
       return Arrays.asList(
           new Action().setName("BAESAllPrimRTETAllPrim")
-              .setParameters(
-                  Arrays.asList(
-                      new Parameter().setName("ParameterESAllPrim").setType(EntityTypeProvider.nameETAllPrim)
-                          .setCollection(true).setNullable(false)))
+              .setParameters(Arrays.asList(
+                  new Parameter().setName("ParameterESAllPrim").setType(EntityTypeProvider.nameETAllPrim)
+                      .setCollection(true).setNullable(false)))
               .setBound(true)
               .setReturnType(
-                  new ReturnType().setType(EntityTypeProvider.nameETAllPrim))
-          );
+                  new ReturnType().setType(EntityTypeProvider.nameETAllPrim)));
 
     } else if (actionName.equals(nameBAESTwoKeyNavRTESTwoKeyNav)) {
       return Arrays.asList(
           new Action().setName("BAESTwoKeyNavRTESTwoKeyNav")
-              .setParameters(
-                  Arrays.asList(
-                      new Parameter().setName("ParameterETTwoKeyNav").setType(EntityTypeProvider.nameETTwoKeyNav)
-                          .setCollection(true).setNullable(false)))
+              .setParameters(Arrays.asList(
+                  new Parameter().setName("ParameterETTwoKeyNav").setType(EntityTypeProvider.nameETTwoKeyNav)
+                      .setCollection(true).setNullable(false)))
               .setBound(true)
               .setReturnType(
-                  new ReturnType().setType(EntityTypeProvider.nameETTwoKeyNav).setCollection(true))
-          );
+                  new ReturnType().setType(EntityTypeProvider.nameETTwoKeyNav).setCollection(true)));
     
     } else if(actionName.equals(nameBAESTwoKeyNavRTESKeyNav)) {
       return Arrays.asList(
@@ -214,12 +203,12 @@ public class ActionProvider {
           .setEntitySetPath("BindingParam/NavPropertyETKeyNavMany")
           .setParameters(Arrays.asList(
               new Parameter().setName("ParameterETTwoKeyNav")
-                             .setType(EntityTypeProvider.nameETTwoKeyNav)
-                             .setCollection(true)
-                             .setNullable(false)
-              ))
-          .setReturnType(new ReturnType().setType(EntityTypeProvider.nameETKeyNav).setCollection(true))
-          );
+                  .setType(EntityTypeProvider.nameETTwoKeyNav)
+                  .setCollection(true)
+                  .setNullable(false)))
+          .setReturnType(
+              new ReturnType().setType(EntityTypeProvider.nameETKeyNav).setCollection(true)));
+
     } else if (actionName.equals(nameBAETBaseTwoKeyNavRTETBaseTwoKeyNav)) {
       return Arrays.asList(
           new Action().setName("BAETBaseTwoKeyNavRTETBaseTwoKeyNav")
@@ -228,20 +217,19 @@ public class ActionProvider {
                       .setNullable(false)))
               .setBound(true)
               .setReturnType(
-                  new ReturnType().setType(EntityTypeProvider.nameETTwoKeyNav))
-          );
+                  new ReturnType().setType(EntityTypeProvider.nameETTwoKeyNav)));
 
     } else if (actionName.equals(nameBAETTwoBaseTwoKeyNavRTETBaseTwoKeyNav)) {
       return Arrays.asList(
           new Action().setName("BAETTwoBaseTwoKeyNavRTETBaseTwoKeyNav")
-              .setParameters(
-                  Arrays.asList(
-                      new Parameter().setName("ParameterETTwoBaseTwoKeyNav").setType(
-                          EntityTypeProvider.nameETTwoBaseTwoKeyNav).setNullable(false)))
+              .setParameters(Arrays.asList(
+                  new Parameter().setName("ParameterETTwoBaseTwoKeyNav")
+                      .setType(EntityTypeProvider.nameETTwoBaseTwoKeyNav)
+                      .setNullable(false)))
               .setBound(true)
               .setReturnType(
-                  new ReturnType().setType(EntityTypeProvider.nameETBaseTwoKeyNav))
-          );
+                  new ReturnType().setType(EntityTypeProvider.nameETBaseTwoKeyNav)));
+
     } else if(actionName.equals(nameBAETAllPrimRT)) {
       return Arrays.asList(
           new Action().setName("BAETAllPrimRT")
@@ -249,17 +237,14 @@ public class ActionProvider {
               .setParameters(Arrays.asList(
                   new Parameter().setName("ParameterETAllPrim")
                       .setNullable(false)
-                      .setType(EntityTypeProvider.nameETAllPrim)
-                  )),
+                      .setType(EntityTypeProvider.nameETAllPrim))),
           new Action().setName("BAETAllPrimRT")
               .setBound(true)
               .setParameters(Arrays.asList(
                   new Parameter().setName("ParameterETAllPrim")
                       .setNullable(false)
                       .setCollection(true)
-                      .setType(EntityTypeProvider.nameETAllPrim)
-                  ))
-          );
+                      .setType(EntityTypeProvider.nameETAllPrim))));
     }    
 
     return null;

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerActionParametersTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerActionParametersTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerActionParametersTest.java
index 80668eb..58777ab 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerActionParametersTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerActionParametersTest.java
@@ -57,6 +57,29 @@ public class ODataJsonDeserializerActionParametersTest extends AbstractODataDese
     assertEquals(BigDecimal.valueOf(3669753), parameter.getValue());
   }
 
+  @Test
+  public void boundEmpty() throws Exception {
+    final String input = "{}";
+    final List<Parameter> parameters = deserialize(input, "BAETAllPrimRT", "ETAllPrim");
+    assertNotNull(parameters);
+    assertTrue(parameters.isEmpty());
+  }
+
+  @Test(expected = DeserializerException.class)
+  public void bindingParameter() throws Exception {
+    deserialize("{\"ParameterETAllPrim\":{\"PropertyInt16\":42}}", "BAETAllPrimRT", "ETAllPrim");
+  }
+
+  @Test(expected = DeserializerException.class)
+  public void wrongName() throws Exception {
+    deserialize("{\"ParameterWrong\":null}", "UARTParam");
+  }
+
+  @Test(expected = DeserializerException.class)
+  public void nullNotNullable() throws Exception {
+    deserialize("{\"ParameterInt16\":null}", "UARTCTTwoPrimParam");
+  }
+
   @Test(expected = DeserializerException.class)
   public void missingParameter() throws Exception {
     deserialize("{}", "UARTCTTwoPrimParam");
@@ -77,4 +100,12 @@ public class ODataJsonDeserializerActionParametersTest extends AbstractODataDese
         .actionParameters(new ByteArrayInputStream(input.getBytes()),
             edm.getUnboundAction(new FullQualifiedName("Namespace1_Alias", actionName)));
   }
+
+  private List<Parameter> deserialize(final String input, final String actionName, final String typeName)
+      throws DeserializerException {
+    return OData.newInstance().createDeserializer(ODataFormat.JSON)
+        .actionParameters(new ByteArrayInputStream(input.getBytes()),
+            edm.getBoundAction(new FullQualifiedName("Namespace1_Alias", actionName),
+                new FullQualifiedName("Namespace1_Alias", typeName), false));
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/testutil/FilterValidator.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/testutil/FilterValidator.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/testutil/FilterValidator.java
index f530456..4d67fcd 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/testutil/FilterValidator.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/testutil/FilterValidator.java
@@ -286,7 +286,7 @@ public class FilterValidator implements TestValidator {
    * Validates the serialized filterTree against a given filterString
    * The given expected filterString is compressed before to allow better readable code in the unit tests
    * @param toBeCompr
-   * @return
+   * @return {@link FilterValidator}
    */
   public FilterValidator isCompr(final String toBeCompr) {
     return is(compress(toBeCompr));

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d067037f/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/testutil/ParserValidator.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/testutil/ParserValidator.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/testutil/ParserValidator.java
index aeb1309..da65ff0 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/testutil/ParserValidator.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/testutil/ParserValidator.java
@@ -57,7 +57,7 @@ public class ParserValidator {
    * Used in fast LL Parsing:
    * Don't stop the parsing process when the slower full context parsing (with prediction mode SLL) is
    * required
-   * @return
+   * @return {@link ParserValidator}
    */
   public ParserValidator aFC() {
     allowFullContext = true;
@@ -68,7 +68,7 @@ public class ParserValidator {
    * Used in fast LL Parsing:
    * Allows ContextSensitifity Errors which occur often when using the slower full context parsing
    * and indicate that there is a context sensitivity ( which may not be an error).
-   * @return
+   * @return {@link ParserValidator}
    */
   public ParserValidator aCS() {
     allowContextSensitifity = true;
@@ -78,7 +78,7 @@ public class ParserValidator {
   /**
    * Used in fast LL Parsing:
    * Allows ambiguities
-   * @return
+   * @return {@link ParserValidator}
    */
   public ParserValidator aAM() {
     allowAmbiguity = true;