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 2016/03/17 23:34:34 UTC

olingo-odata4 git commit: OLINGO-911: using json serializer for response purpose, but this will ever be used to just send the 204 in cases of update and delete

Repository: olingo-odata4
Updated Branches:
  refs/heads/master 49b859943 -> 11e040bab


OLINGO-911: using json serializer for response purpose, but this will ever be used to just send the 204 in cases of update and delete


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

Branch: refs/heads/master
Commit: 11e040babc550af1061bae37c5feb63aab4a0868
Parents: 49b8599
Author: Ramesh Reddy <ra...@jboss.org>
Authored: Thu Mar 17 17:34:13 2016 -0500
Committer: Ramesh Reddy <ra...@jboss.org>
Committed: Thu Mar 17 17:34:13 2016 -0500

----------------------------------------------------------------------
 .../olingo/server/core/ServiceRequest.java       |  5 +++++
 .../server/core/responses/PropertyResponse.java  | 19 +++++++++++++------
 .../server/example/TripPinServiceTest.java       | 13 ++++++++++++-
 3 files changed, 30 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/11e040ba/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ServiceRequest.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ServiceRequest.java b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ServiceRequest.java
index 6242975..e85d7ba 100644
--- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ServiceRequest.java
+++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ServiceRequest.java
@@ -275,6 +275,11 @@ public abstract class ServiceRequest {
       SerializerException {
     return this.odata.createSerializer(getResponseContentType());
   }
+  
+  public ODataSerializer getSerializer(ContentType type) throws ContentNegotiatorException,
+      SerializerException {
+    return this.odata.createSerializer(type);
+  }  
 
   public Map<String, String> getPreferences(){
     HashMap<String, String> map = new HashMap<String, String>();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/11e040ba/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java
index f9c35ba..290abb5 100644
--- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java
+++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java
@@ -51,17 +51,24 @@ public class PropertyResponse extends ServiceResponse {
   public static PropertyResponse getInstance(ServiceRequest request, ODataResponse response,
       EdmType edmType, ContextURL contextURL, boolean collection) throws ContentNegotiatorException,
       SerializerException {
+    
+    ContentType type = request.getResponseContentType();
+    ODataSerializer serializer = null;
+    if (type.equals(ContentType.TEXT_PLAIN)) {
+      serializer = request.getSerializer(ContentType.APPLICATION_JSON);
+    } else {
+      serializer = request.getSerializer();
+    }
+    
     if (edmType.getKind() == EdmTypeKind.PRIMITIVE) {
       PrimitiveSerializerOptions options = request.getSerializerOptions(
-          PrimitiveSerializerOptions.class, contextURL, false);
-      ContentType type = request.getResponseContentType();
-      return new PropertyResponse(request.getServiceMetaData(), request.getSerializer(), response,
+          PrimitiveSerializerOptions.class, contextURL, false);      
+      return new PropertyResponse(request.getServiceMetaData(), serializer, response,
           options, type, collection, request.getPreferences());
     }
     ComplexSerializerOptions options = request.getSerializerOptions(ComplexSerializerOptions.class,
-        contextURL, false);
-    ContentType type = request.getResponseContentType();
-    return new PropertyResponse(request.getServiceMetaData(), request.getSerializer(), response,
+        contextURL, false);    
+    return new PropertyResponse(request.getServiceMetaData(), serializer, response,
         options, type, collection, request.getPreferences());
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/11e040ba/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinServiceTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinServiceTest.java b/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinServiceTest.java
index 8bb4d5a..0486439 100644
--- a/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinServiceTest.java
+++ b/lib/server-core-ext/src/test/java/org/apache/olingo/server/example/TripPinServiceTest.java
@@ -203,7 +203,18 @@ public class TripPinServiceTest {
     HttpResponse response = httpGET(baseURL + "/Airlines('AA')/Name/$value", 200);
     assertEquals("American Airlines", IOUtils.toString(response.getEntity().getContent()));
   }
-
+  
+  @Test
+  public void testUpdateRawValue() throws Exception {
+    // Note that in-real services must convert raw value (byte[]) to 
+    // the data type it needs to save in in updateProperty method
+    String editUrl = baseURL + "/Airlines('AF')/Name/$value";
+    HttpPut request = new HttpPut(editUrl);
+    request.setEntity(new StringEntity("Safari"));
+    HttpResponse response = httpSend(request, 204);
+    EntityUtils.consumeQuietly(response.getEntity());
+  }
+  
   @Test @Ignore
   // TODO: Support geometry types to make this run
   public void testReadComplexProperty() throws Exception {