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 2014/09/02 13:49:35 UTC
[15/50] [abbrv] git commit: [OLINGO-310] Omit D wrapper in Json
payload if needed
[OLINGO-310] Omit D wrapper in Json payload if needed
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/ebc5c79a
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/ebc5c79a
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/ebc5c79a
Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: ebc5c79a52c27a68fc4a27adce98d2751c9da3ce
Parents: 242d961
Author: Christian Amend <ch...@apache.org>
Authored: Mon Jun 23 09:59:37 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Wed Jun 25 14:37:31 2014 +0200
----------------------------------------------------------------------
.../api/ep/EntityProviderWriteProperties.java | 12 +++++++
.../ep/producer/JsonEntryEntityProducer.java | 4 +--
.../ep/ODataEntityProviderPropertiesTest.java | 4 +++
.../producer/JsonEntryEntityProducerTest.java | 18 +++++++++++
.../ep/producer/JsonFeedEntityProducerTest.java | 33 ++++++++++++++++++++
5 files changed, 69 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ebc5c79a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
index 822fc84..df99f21 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
@@ -24,6 +24,7 @@ import java.util.Map;
import org.apache.olingo.odata2.api.ODataCallback;
import org.apache.olingo.odata2.api.commons.InlineCount;
+import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties.ODataEntityProviderPropertiesBuilder;
import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
/**
@@ -44,9 +45,14 @@ public class EntityProviderWriteProperties {
private URI selfLink;
private boolean includeSimplePropertyType;
private Map<String, Map<String, Object>> additionalLinks;
+ private boolean omitJsonWrapper;
private EntityProviderWriteProperties() {}
+ public final boolean isOmitJsonWrapper() {
+ return omitJsonWrapper;
+ }
+
/**
* Returns if type information of simple properties should be in the payload.
* @return true if information should be in the payload.
@@ -239,6 +245,12 @@ public class EntityProviderWriteProperties {
this.properties.selfLink = properties.getSelfLink();
this.properties.includeSimplePropertyType = properties.includeSimplePropertyType;
this.properties.additionalLinks = properties.additionalLinks;
+ this.properties.omitJsonWrapper = properties.omitJsonWrapper;
+ return this;
+ }
+
+ public ODataEntityProviderPropertiesBuilder omitJsonWrapper(boolean omitJsonWrapper) {
+ properties.omitJsonWrapper = omitJsonWrapper;
return this;
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ebc5c79a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
index 8ad5d42..1f3693b 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
@@ -70,7 +70,7 @@ public class JsonEntryEntityProducer {
try {
jsonStreamWriter = new JsonStreamWriter(writer);
- if (isRootElement) {
+ if (isRootElement && !properties.isOmitJsonWrapper()) {
jsonStreamWriter.beginObject().name(FormatJson.D);
}
@@ -84,7 +84,7 @@ public class JsonEntryEntityProducer {
jsonStreamWriter.endObject();
- if (isRootElement) {
+ if (isRootElement && !properties.isOmitJsonWrapper()) {
jsonStreamWriter.endObject();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ebc5c79a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
index 3b0d5ab..51f39a8 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
@@ -74,6 +74,7 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
.selfLink(selfLink)
.includeSimplePropertyType(true)
.additionalLinks(links)
+ .omitJsonWrapper(true)
.build();
assertEquals("Wrong amount of callbacks.", 1, properties.getCallbacks().size());
@@ -87,6 +88,7 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
assertEquals("Wrong nextLink", "http://localhost", properties.getNextLink());
assertTrue("Simple property types should be true", properties.isIncludeSimplePropertyType());
assertEquals(Collections.emptyMap(), properties.getAdditionalLinks().get("aNavigationProperty"));
+ assertTrue("Json Wrapper should be omitted", properties.isOmitJsonWrapper());
}
@Test
@@ -118,6 +120,7 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
.selfLink(selfLink)
.includeSimplePropertyType(true)
.additionalLinks(links)
+ .omitJsonWrapper(true)
.build();
//
@@ -136,5 +139,6 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
assertEquals("Wrong nextLink", "http://localhost", fromProperties.getNextLink());
assertTrue("Simple property types should be true", fromProperties.isIncludeSimplePropertyType());
assertEquals(Collections.emptyMap(), fromProperties.getAdditionalLinks().get("aNavigationProperty"));
+ assertTrue("Json Wrapper should be omitted", properties.isOmitJsonWrapper());
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ebc5c79a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
index 8efd99a..942edf5 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
@@ -87,6 +87,24 @@ public class JsonEntryEntityProducerTest extends BaseTest {
json);
}
+ @Test
+ public void omitJsonWrapper() throws Exception {
+ final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Teams");
+ Map<String, Object> teamData = new HashMap<String, Object>();
+ teamData.put("Id", "1");
+ teamData.put("isScrumTeam", true);
+
+ EntityProviderWriteProperties properties =
+ EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).build();
+ final ODataResponse response = new JsonEntityProvider().writeEntry(entitySet, teamData, properties);
+ final String json = verifyResponse(response);
+ assertEquals("{\"__metadata\":{\"id\":\"" + BASE_URI + "Teams('1')\","
+ + "\"uri\":\"" + BASE_URI + "Teams('1')\",\"type\":\"RefScenario.Team\"},"
+ + "\"Id\":\"1\",\"Name\":null,\"isScrumTeam\":true,"
+ + "\"nt_Employees\":{\"__deferred\":{\"uri\":\"" + BASE_URI + "Teams('1')/nt_Employees\"}}}",
+ json);
+ }
+
@Test(expected = EntityProviderException.class)
public void entryWithNullData() throws Exception {
final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Teams");
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ebc5c79a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducerTest.java
index a2195ae..418dc8a 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducerTest.java
@@ -79,6 +79,39 @@ public class JsonFeedEntityProducerTest extends BaseTest {
}
@Test
+ public void omitJsonWrapperMustHaveNoEffect() throws Exception {
+ final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Teams");
+ Map<String, Object> team1Data = new HashMap<String, Object>();
+ team1Data.put("Id", "1");
+ team1Data.put("isScrumTeam", true);
+ Map<String, Object> team2Data = new HashMap<String, Object>();
+ team2Data.put("Id", "2");
+ team2Data.put("isScrumTeam", false);
+ List<Map<String, Object>> teamsData = new ArrayList<Map<String, Object>>();
+ teamsData.add(team1Data);
+ teamsData.add(team2Data);
+
+ EntityProviderWriteProperties properties =
+ EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).build();
+ final ODataResponse response = new JsonEntityProvider().writeFeed(entitySet, teamsData, properties);
+ assertNotNull(response);
+ assertNotNull(response.getEntity());
+ assertNull("EntitypProvider must not set content header", response.getContentHeader());
+
+ final String json = StringHelper.inputStreamToString((InputStream) response.getEntity());
+ assertNotNull(json);
+ assertEquals("{\"d\":{\"results\":[{\"__metadata\":{\"id\":\"" + BASE_URI + "Teams('1')\","
+ + "\"uri\":\"" + BASE_URI + "Teams('1')\",\"type\":\"RefScenario.Team\"},"
+ + "\"Id\":\"1\",\"Name\":null,\"isScrumTeam\":true,"
+ + "\"nt_Employees\":{\"__deferred\":{\"uri\":\"" + BASE_URI + "Teams('1')/nt_Employees\"}}},"
+ + "{\"__metadata\":{\"id\":\"" + BASE_URI + "Teams('2')\","
+ + "\"uri\":\"" + BASE_URI + "Teams('2')\",\"type\":\"RefScenario.Team\"},"
+ + "\"Id\":\"2\",\"Name\":null,\"isScrumTeam\":false,"
+ + "\"nt_Employees\":{\"__deferred\":{\"uri\":\"" + BASE_URI + "Teams('2')/nt_Employees\"}}}]}}",
+ json);
+ }
+
+ @Test
public void inlineCount() throws Exception {
final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Buildings");
final ODataResponse response = new JsonEntityProvider().writeFeed(entitySet, new ArrayList<Map<String, Object>>(),