You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ra...@apache.org on 2015/07/24 01:05:39 UTC
olingo-odata4 git commit: OLINGO-738: Adding upsertEntity feature for
the server-extension framework
Repository: olingo-odata4
Updated Branches:
refs/heads/master 1ebbbc369 -> cb0f7f2d7
OLINGO-738: Adding upsertEntity feature for the server-extension framework
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/cb0f7f2d
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/cb0f7f2d
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/cb0f7f2d
Branch: refs/heads/master
Commit: cb0f7f2d7012d9e0a46024e7e9fe21bc09704c42
Parents: 1ebbbc3
Author: Ramesh Reddy <ra...@jboss.org>
Authored: Thu Jul 23 18:00:50 2015 -0500
Committer: Ramesh Reddy <ra...@jboss.org>
Committed: Thu Jul 23 18:00:50 2015 -0500
----------------------------------------------------------------------
.../apache/olingo/server/core/ServiceHandler.java | 15 +++++++++++++++
.../server/core/legacy/ProcessorServiceHandler.java | 7 +++++++
.../olingo/server/core/requests/DataRequest.java | 2 +-
.../apache/olingo/server/example/TripPinHandler.java | 12 ++++++++++++
4 files changed, 35 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cb0f7f2d/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ServiceHandler.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ServiceHandler.java b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ServiceHandler.java
index a7753ec..a223120 100644
--- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ServiceHandler.java
+++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ServiceHandler.java
@@ -102,6 +102,21 @@ public interface ServiceHandler extends Processor {
EntityResponse response) throws ODataLibraryException, ODataApplicationException;
/**
+ * Update or create the entity object. If based on passed in entity object's key value, if
+ * entity exists update the entity, else create a new entity
+ * @param request
+ * @param entity - Entity to create or update
+ * @param merge - in the case of update, true to do merge operation with current entity,
+ * false the entity needs to be replaced
+ * @param entityETag - previous entity tag if provided by the user. "*" means allow.
+ * @param response
+ * @throws ODataLibraryException
+ * @throws ODataApplicationException
+ */
+ void upsertEntity(DataRequest request, Entity entity, boolean merge, String entityETag,
+ EntityResponse response) throws ODataLibraryException, ODataApplicationException;
+
+ /**
* Delete the Entity
* @param request
* @param entityETag - entity tag to match, if provided by the user. "*" means allow
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cb0f7f2d/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/legacy/ProcessorServiceHandler.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/legacy/ProcessorServiceHandler.java b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/legacy/ProcessorServiceHandler.java
index acbc8c0..b65f19c 100644
--- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/legacy/ProcessorServiceHandler.java
+++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/legacy/ProcessorServiceHandler.java
@@ -430,4 +430,11 @@ public class ProcessorServiceHandler implements ServiceHandler {
throw new ODataHandlerException("not implemented",
ODataHandlerException.MessageKeys.FUNCTIONALITY_NOT_IMPLEMENTED);
}
+
+ @Override
+ public void upsertEntity(DataRequest request, Entity entity, boolean merge, String entityETag,
+ EntityResponse response) throws ODataLibraryException, ODataApplicationException {
+ throw new ODataHandlerException("not implemented",
+ ODataHandlerException.MessageKeys.FUNCTIONALITY_NOT_IMPLEMENTED);
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cb0f7f2d/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/requests/DataRequest.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/requests/DataRequest.java b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/requests/DataRequest.java
index 7f2273c..2966d86 100644
--- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/requests/DataRequest.java
+++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/requests/DataRequest.java
@@ -317,7 +317,7 @@ public class DataRequest extends ServiceRequest {
getContextURL(odata), false, response, getReturnRepresentation());
handler.createEntity(DataRequest.this, getEntityFromClient(), entityResponse);
} else {
- handler.updateEntity(DataRequest.this, getEntityFromClient(), isPATCH(), getETag(),
+ handler.upsertEntity(DataRequest.this, getEntityFromClient(), isPATCH(), getETag(),
entityResponse);
}
} else if (isPOST()) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cb0f7f2d/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinHandler.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinHandler.java b/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinHandler.java
index 6ca0fcd..db06558 100644
--- a/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinHandler.java
+++ b/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinHandler.java
@@ -544,4 +544,16 @@ public class TripPinHandler implements ServiceHandler {
public void crossJoin(DataRequest dataRequest, List<String> entitySetNames, ODataResponse response) {
response.setStatusCode(200);
}
+
+ @Override
+ public void upsertEntity(DataRequest request, Entity entity, boolean merge, String entityETag,
+ EntityResponse response) throws ODataLibraryException, ODataApplicationException {
+ EdmEntitySet edmEntitySet = request.getEntitySet();
+ Entity currentEntity = this.dataModel.getEntity(edmEntitySet.getName(), request.getKeyPredicates());
+ if(currentEntity == null) {
+ createEntity(request, entity, response);
+ } else {
+ updateEntity(request, entity, merge, entityETag, response);
+ }
+ }
}