You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2015/03/05 14:58:34 UTC

olingo-odata4 git commit: [OLINGO-573] Sample for navigation request

Repository: olingo-odata4
Updated Branches:
  refs/heads/olingo-server-extension b25fc8c21 -> c65715987


[OLINGO-573] Sample for navigation request


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

Branch: refs/heads/olingo-server-extension
Commit: c65715987e5c3b288ac4469822d71d7861f5f0d4
Parents: b25fc8c
Author: Michael Bolz <mi...@sap.com>
Authored: Thu Mar 5 14:54:59 2015 +0100
Committer: Michael Bolz <mi...@sap.com>
Committed: Thu Mar 5 14:57:21 2015 +0100

----------------------------------------------------------------------
 .../olingo/server/core/TripPinHandler.java      | 20 +++++++++--
 .../olingo/server/core/TripPinServiceTest.java  | 35 ++++++++++++++++++++
 .../src/test/resources/people.json              |  6 +++-
 3 files changed, 57 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c6571598/lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinHandler.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinHandler.java b/lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinHandler.java
index 4132678..7690ffd 100644
--- a/lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinHandler.java
+++ b/lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinHandler.java
@@ -34,11 +34,13 @@ import java.util.UUID;
 
 import org.apache.olingo.commons.api.data.Entity;
 import org.apache.olingo.commons.api.data.EntitySet;
+import org.apache.olingo.commons.api.data.Link;
 import org.apache.olingo.commons.api.data.Property;
 import org.apache.olingo.commons.api.edm.EdmAction;
 import org.apache.olingo.commons.api.edm.EdmEntitySet;
 import org.apache.olingo.commons.api.edm.EdmEntityType;
 import org.apache.olingo.commons.api.edm.EdmFunction;
+import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
 import org.apache.olingo.commons.api.edm.EdmProperty;
 import org.apache.olingo.commons.api.edm.EdmSingleton;
 import org.apache.olingo.commons.api.http.HttpMethod;
@@ -142,9 +144,15 @@ public class TripPinHandler implements ServiceHandler {
       @Override
       void visit(PropertyResponse response) throws ODataTranslatedException,
           ODataApplicationException {
+        Property property;
         EdmProperty edmProperty = request.getUriResourceProperty().getProperty();
-        Property property = dataEntity.getProperty(edmProperty.getName());
-        response.writeProperty(edmProperty.getType(), property);
+        Entity propEntity = dataEntity;
+        if(request.getUriResourceNavigation() != null) {
+          EdmNavigationProperty navProperty = request.getUriResourceNavigation().getProperty();
+          Link link = dataEntity.getNavigationLink(navProperty.getName());
+          propEntity = link.getInlineEntity();
+        }
+        response.writeProperty(edmProperty.getType(), propEntity.getProperty(edmProperty.getName()));
       }
 
       @Override
@@ -162,7 +170,13 @@ public class TripPinHandler implements ServiceHandler {
       @Override
       public void visit(EntityResponse response) throws ODataTranslatedException,
           ODataApplicationException {
-        response.writeReadEntity(edmEntityType, dataEntity);
+        if(request.getUriResourceNavigation() != null) {
+          EdmNavigationProperty navProperty = request.getUriResourceNavigation().getProperty();
+          Link link = dataEntity.getNavigationLink(navProperty.getName());
+          response.writeReadEntity(navProperty.getType(), link.getInlineEntity());
+        } else {
+          response.writeReadEntity(edmEntityType, dataEntity);
+        }
       }
     });
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c6571598/lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinServiceTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinServiceTest.java b/lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinServiceTest.java
index fecf0cf..645f7ca 100644
--- a/lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinServiceTest.java
+++ b/lib/server-core-ext/src/test/java/org/apache/olingo/server/core/TripPinServiceTest.java
@@ -68,6 +68,22 @@ public class TripPinServiceTest {
   }
 
   @Test
+  public void testMetadata() throws Exception {
+    ContentResponse response = http.newRequest(baseURL + "/$metadata")
+        .method(HttpMethod.GET)
+        .send();
+    System.out.println(response.getContentAsString());
+  }
+
+  @Test
+  public void testServiceDocument() throws Exception {
+    ContentResponse response = http.newRequest(baseURL + "/")
+        .method(HttpMethod.GET)
+        .send();
+    System.out.println(response.getContentAsString());
+  }
+
+  @Test
   public void testEntitySet() throws Exception {
     ContentResponse response = http.newRequest(baseURL + "/People")
     .header("Content-Type", "application/json;odata.metadata=minimal")
@@ -77,6 +93,25 @@ public class TripPinServiceTest {
   }
 
   @Test
+  public void testEntitySetNav() throws Exception {
+    ContentResponse response = http.newRequest(baseURL + "/People('russellwhyte')/Photo")
+        .header("Content-Type", "application/json;odata.metadata=minimal")
+        .method(HttpMethod.GET)
+        .send();
+    System.out.println(response.getContentAsString());
+  }
+
+  @Test
+  public void testEntitySetNavProperty() throws Exception {
+    ContentResponse response = http.newRequest(baseURL + "/People('russellwhyte')/Photo/Name")
+        .header("Content-Type", "application/json;odata.metadata=minimal")
+        .method(HttpMethod.GET)
+        .send();
+    System.out.println(response.getContentAsString());
+  }
+
+
+  @Test
   public void testReadEntitySetWithPaging() throws Exception {
     ContentResponse response = http.newRequest(baseURL + "/People")
         .header("Prefer", "odata.maxpagesize=10").send();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c6571598/lib/server-core-ext/src/test/resources/people.json
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/test/resources/people.json b/lib/server-core-ext/src/test/resources/people.json
index 443b152..08df1f8 100644
--- a/lib/server-core-ext/src/test/resources/people.json
+++ b/lib/server-core-ext/src/test/resources/people.json
@@ -19,7 +19,11 @@
             }
          ],
          "Gender":0,
-         "Concurrency":635585295719432047
+         "Concurrency":635585295719432047,
+        "Photo": {
+          "Id": 2,
+          "Name": "My Photo 2"
+        }
       },
       {
          "UserName":"scottketchum",