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 <[email protected]> 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 <[email protected]> Authored: Thu Sep 15 13:56:55 2016 +0530 Committer: mibo <[email protected]> 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"));
