You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by il...@apache.org on 2014/08/04 13:13:35 UTC

[20/20] git commit: [OLINGO-365] Adding checks for enhanced composable invoker

[OLINGO-365] Adding checks for enhanced composable invoker


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

Branch: refs/heads/master
Commit: 34f0825604a76a8803a357bd9c9ccaf88657d264
Parents: a13a0d8
Author: Francesco Chicchiriccò <--global>
Authored: Mon Aug 4 13:09:47 2014 +0200
Committer: Francesco Chicchiriccò <--global>
Committed: Mon Aug 4 13:09:47 2014 +0200

----------------------------------------------------------------------
 .../java/org/apache/olingo/fit/V4Services.java  | 67 ++++++++++++++------
 .../fit/proxy/v4/APIBasicDesignTestITCase.java  | 22 ++++++-
 2 files changed, 68 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/34f08256/fit/src/main/java/org/apache/olingo/fit/V4Services.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/V4Services.java b/fit/src/main/java/org/apache/olingo/fit/V4Services.java
index 5b59ddc..4f751aa 100644
--- a/fit/src/main/java/org/apache/olingo/fit/V4Services.java
+++ b/fit/src/main/java/org/apache/olingo/fit/V4Services.java
@@ -112,19 +112,6 @@ public class V4Services extends AbstractServices {
     super(ODataServiceVersion.V40, metadata);
   }
 
-  @POST
-  @Path("/GetAllProducts()/Discount")
-  public Response discount() {
-    try {
-      final String basePath = "Products" + File.separatorChar + "feed";
-
-      final InputStream feed = FSManager.instance(version).readFile(basePath, Accept.JSON_FULLMETA);
-      return xml.createResponse(null, feed, Commons.getETag(basePath, version), Accept.JSON_FULLMETA);
-    } catch (Exception e) {
-      return xml.createFaultResponse(Accept.JSON_FULLMETA.toString(version), e);
-    }
-  }
-
   @GET
   @Path("/redirect/{name}({id})")
   public Response conformanceRedirect(
@@ -386,7 +373,7 @@ public class V4Services extends AbstractServices {
     return StringUtils.isBlank(filter) && StringUtils.isBlank(search)
             ? NumberUtils.isNumber(type)
             ? super.getEntityInternal(
-            uriInfo.getRequestUri().toASCIIString(), accept, "People", type, format, null, null)
+                    uriInfo.getRequestUri().toASCIIString(), accept, "People", type, format, null, null)
             : super.getEntitySet(accept, "People", type)
             : super.getEntitySet(uriInfo, accept, "People", top, skip, format, count, filter, orderby, skiptoken);
   }
@@ -767,7 +754,7 @@ public class V4Services extends AbstractServices {
 
       return utils.getValue().createResponse(
               FSManager.instance(version).readFile(Constants.get(version, ConstantKey.REF)
-              + File.separatorChar + filename, utils.getKey()),
+                      + File.separatorChar + filename, utils.getKey()),
               null,
               utils.getKey());
     } catch (Exception e) {
@@ -807,7 +794,7 @@ public class V4Services extends AbstractServices {
 
     final Response response =
             getEntityInternal(uriInfo.getRequestUri().toASCIIString(),
-            accept, entitySetName, entityId, accept, StringUtils.EMPTY, StringUtils.EMPTY);
+                    accept, entitySetName, entityId, accept, StringUtils.EMPTY, StringUtils.EMPTY);
     return response.getStatus() >= 400
             ? super.postNewEntity(uriInfo, accept, contentType, prefer, entitySetName, changes)
             : super.patchEntity(uriInfo, accept, contentType, prefer, ifMatch, entitySetName, entityId, changes);
@@ -1033,7 +1020,7 @@ public class V4Services extends AbstractServices {
       // 1. Fetch the contained entity to be removed
       final InputStream entry = FSManager.instance(version).
               readFile(containedPath(entityId, containedEntitySetName).
-              append('(').append(containedEntityId).append(')').toString(), Accept.ATOM);
+                      append('(').append(containedEntityId).append(')').toString(), Accept.ATOM);
       final ResWrap<Entity> container = atomDeserializer.toEntity(entry);
 
       // 2. Remove the contained entity
@@ -1161,6 +1148,37 @@ public class V4Services extends AbstractServices {
   }
 
   @GET
+  @Path("/GetPerson2({param:.*})/Emails")
+  public Response functionGetPerson2Emails(
+          @Context final UriInfo uriInfo,
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) final String accept,
+          @QueryParam("$format") @DefaultValue(StringUtils.EMPTY) final String format) {
+
+    return getPath(accept, "Customers", "1", "Emails", format);
+  }
+
+  @GET
+  @Path("/GetPerson2({param:.*})/HomeAddress")
+  public Response functionGetPerson2HomeAddress(
+          @Context final UriInfo uriInfo,
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) final String accept,
+          @QueryParam("$format") @DefaultValue(StringUtils.EMPTY) final String format) {
+
+    return getPath(accept, "Customers", "1", "HomeAddress", format);
+  }
+
+  @GET
+  @Path("/GetPerson2({param:.*})/Parent")
+  public Response functionGetPerson2Parent(
+          @Context final UriInfo uriInfo,
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) final String accept,
+          @QueryParam("$format") @DefaultValue(StringUtils.EMPTY) final String format) {
+
+    return getEntityInternal(
+            uriInfo.getRequestUri().toASCIIString(), accept, "Customers", "2", format, null, null);
+  }
+
+  @GET
   @Path("/GetPerson({param:.*})")
   public Response functionGetPerson(
           @Context final UriInfo uriInfo,
@@ -1284,6 +1302,19 @@ public class V4Services extends AbstractServices {
   }
 
   @POST
+  @Path("/GetAllProducts()/Discount")
+  public Response actionBoundDiscount() {
+    try {
+      final String basePath = "Products" + File.separatorChar + "feed";
+
+      final InputStream feed = FSManager.instance(version).readFile(basePath, Accept.JSON_FULLMETA);
+      return xml.createResponse(null, feed, Commons.getETag(basePath, version), Accept.JSON_FULLMETA);
+    } catch (Exception e) {
+      return xml.createFaultResponse(Accept.JSON_FULLMETA.toString(version), e);
+    }
+  }
+
+  @POST
   @Path("/ResetBossAddress()")
   public Response actionResetBossAddress(
           @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) final String accept,
@@ -1307,7 +1338,7 @@ public class V4Services extends AbstractServices {
 
       final ResWrap<Property> result = new ResWrap<Property>(
               URI.create(Constants.get(version, ConstantKey.ODATA_METADATA_PREFIX)
-              + "Microsoft.Test.OData.Services.ODataWCFService.Address"),
+                      + "Microsoft.Test.OData.Services.ODataWCFService.Address"),
               null,
               entity.getProperty("address"));
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/34f08256/fit/src/test/java/org/apache/olingo/fit/proxy/v4/APIBasicDesignTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/APIBasicDesignTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/APIBasicDesignTestITCase.java
index ce537de..7d592c6 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/APIBasicDesignTestITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/APIBasicDesignTestITCase.java
@@ -550,10 +550,26 @@ public class APIBasicDesignTestITCase extends AbstractTestITCase {
             expand("ProductDetail").
             orderBy("Name").skip(3).top(5).execute();
 
+    // Complex/Entity
     final PersonComposableInvoker invoker2 = container.operations().getPerson2("London");
 
-    // Complex/Entity (available only select and expand: after query option composition is not available anymore)
-    invoker2.select("Name"). // after the first query option no composition is possible
-            expand("Order").execute();
+    // a. whole entity
+    final Person person = invoker2.select("Name").expand("Order").execute();
+    assertNotNull(person);
+    assertEquals(1, person.getPersonID(), 0);
+
+    // b. primitive collection property
+    final PrimitiveCollection<String> emails = invoker2.getEmails().execute();
+    assertNotNull(emails);
+    assertFalse(emails.isEmpty());
+
+    // c. complex property
+    final Address homeAddress = invoker2.getHomeAddress().load();
+    assertNotNull(homeAddress);
+
+    // d. navigation property
+    final Person parent = invoker2.getParent().load();
+    assertNotNull(parent);
+    assertEquals(2, parent.getPersonID(), 0);
   }
 }