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 2016/11/04 20:00:58 UTC

olingo-odata2 git commit: [OLINGO-1032] Fix for function import return entity having multiplicity true was giving error.

Repository: olingo-odata2
Updated Branches:
  refs/heads/master ed07b2dea -> 066b5fbef


[OLINGO-1032] Fix for function import return entity having multiplicity true was giving error.

Signed-off-by: mibo <mi...@apache.org>


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

Branch: refs/heads/master
Commit: 066b5fbefecae518bdb112500c55eed54862e767
Parents: ed07b2d
Author: moumita_sarkar01 <mo...@infosys.com>
Authored: Thu Sep 15 13:56:55 2016 +0530
Committer: mibo <mi...@apache.org>
Committed: Fri Nov 4 21:00:44 2016 +0100

----------------------------------------------------------------------
 .../odata2/core/ep/JsonEntityProvider.java      |  4 +-
 .../odata2/core/ep/ProviderFacadeImplTest.java  | 66 +++++++++++++++++++-
 2 files changed, 67 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/066b5fbe/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
index c83b128..20a9f9b 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
@@ -326,7 +326,9 @@ public class JsonEntityProvider implements ContentTypeBasedEntityProvider {
       final EntityProviderReadProperties properties) throws EntityProviderException {
     try {
       if (functionImport.getReturnType().getType().getKind() == EdmTypeKind.ENTITY) {
-        return new JsonEntityConsumer().readEntry(functionImport.getEntitySet(), content, properties);
+        return functionImport.getReturnType().getMultiplicity() == EdmMultiplicity.MANY
+            ? new JsonEntityConsumer().readFeed(functionImport.getEntitySet(), content, properties)
+            : new JsonEntityConsumer().readEntry(functionImport.getEntitySet(), content, properties);
       } else {
         final EntityPropertyInfo info = EntityInfoAggregator.create(functionImport);
         return functionImport.getReturnType().getMultiplicity() == EdmMultiplicity.MANY ?

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/066b5fbe/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImplTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImplTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImplTest.java
index 40e5e0b..c51c6de 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImplTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImplTest.java
@@ -35,8 +35,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
-import junit.framework.Assert;
-
 import org.apache.olingo.odata2.api.commons.HttpContentType;
 import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
 import org.apache.olingo.odata2.api.edm.Edm;
@@ -60,6 +58,8 @@ import org.apache.olingo.odata2.testutil.helper.StringHelper;
 import org.apache.olingo.odata2.testutil.mock.MockFacade;
 import org.junit.Test;
 
+import junit.framework.Assert;
+
 /**
  *  
  */
@@ -227,6 +227,68 @@ public class ProviderFacadeImplTest extends AbstractConsumerTest {
   }
 
   @Test
+  public void readMultipleEntityFunctionImport() throws Exception {
+    final EdmFunctionImport functionImport = MockFacade.getMockEdm().getDefaultEntityContainer()
+        .getFunctionImport("EmployeeSearch");
+    InputStream content = new ByteArrayInputStream(
+        ("{\"d\": {"
+            + "\"results\": [{"
+            + "\"__metadata\": {"
+            + "\"type\": \"RefScenario.Employee\","
+            + "\"content_type\": \"image/jpeg\","
+            + "\"media_src\":\"http://localhost:19000/abc/FunctionImportJsonTest/Employees('3')/$value\","
+            + "\"edit_media\":\"http://localhost:19000/abc/FunctionImportJsonTest/Employees('3')/$value\""
+            + "},"
+            + "\"EmployeeId\": \"3\","
+            + "\"EmployeeName\": \"Jonathan Smith\","
+            + "\"ManagerId\": \"1\","
+            + "\"RoomId\": \"2\","
+            + "\"TeamId\": \"1\","
+            + "\"Location\": {"
+            + "\"__metadata\": {"
+            + "\"type\": \"RefScenario.c_Location\""
+            + "},"
+            + "\"City\": {"
+            + "\"__metadata\": {"
+            + "\"type\": \"RefScenario.c_City\""
+            + "},"
+            + "\"PostalCode\": \"69190\","
+            + "\"CityName\": \"Walldorf\""
+            + "},"
+            + "\"Country\": \"Germany\""
+            + "},"
+            + "\"Age\": 56,"
+            + "\"EntryDate\": null,"
+            + "\"ImageUrl\": \"Employees('3')/$value\","
+            + "\"ne_Manager\": {"
+            + "\"__deferred\": {"
+            + "\"uri\": \"http://localhost:19000/abc/FunctionImportJsonTest/Employees('3')/ne_Manager\""
+            + "}"
+            + "},"
+            + "\"ne_Team\": {"
+            + "\"__deferred\": {"
+            + "\"uri\": \"http://localhost:19000/abc/FunctionImportJsonTest/Employees('3')/ne_Team\""
+            + "}"
+            + "},"
+            + "\"ne_Room\": {"
+            + "\"__deferred\": {"
+            + "\"uri\": \"http://localhost:19000/abc/FunctionImportJsonTest/Employees('3')/ne_Room\""
+            + "}"
+            + "}"
+            + "}]"
+            + "}"
+            + "}").getBytes("UTF-8"));
+    final Object result = new ProviderFacadeImpl().readFunctionImport(HttpContentType.APPLICATION_JSON,
+        functionImport, content, EntityProviderReadProperties.init().build());
+    ODataDeltaFeed feed = (ODataDeltaFeed) result;
+    List<ODataEntry> entries = feed.getEntries();
+    int size = entries.size();
+    assertEquals(1, size);
+    String id = (String) entries.get(0).getProperties().get("EmployeeId");
+    assertEquals("3", id);
+  }
+
+  @Test
   public void readLink() throws Exception {
     final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
     InputStream content = new ByteArrayInputStream("{\"d\":{\"uri\":\"http://somelink\"}}".getBytes("UTF-8"));