You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ar...@apache.org on 2018/04/11 05:15:13 UTC
olingo-odata2 git commit: [OLINGO-1255] is malformed when auto
generation of key is enabled
Repository: olingo-odata2
Updated Branches:
refs/heads/master 2b6be00b3 -> 2db7d0a03
[OLINGO-1255]<id> is malformed when auto generation of key is enabled
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/2db7d0a0
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/2db7d0a0
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/2db7d0a0
Branch: refs/heads/master
Commit: 2db7d0a0325a44fde7dee96d91992dc636b4204c
Parents: 2b6be00
Author: Archana Rai <ar...@sap.com>
Authored: Wed Apr 11 10:45:04 2018 +0530
Committer: Archana Rai <ar...@sap.com>
Committed: Wed Apr 11 10:45:04 2018 +0530
----------------------------------------------------------------------
.../serializer/AtomEntryEntitySerializer.java | 16 ++++-----
.../ep/serializer/AtomEntrySerializerTest.java | 34 ++++++++++++++++++++
.../JsonEntryEntitySerializerTest.java | 2 +-
3 files changed, 42 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2db7d0a0/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntryEntitySerializer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntryEntitySerializer.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntryEntitySerializer.java
index 5881813..dddd058 100644
--- a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntryEntitySerializer.java
+++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntryEntitySerializer.java
@@ -531,7 +531,7 @@ public class AtomEntryEntitySerializer {
}
sb.append(Encoder.encode(eia.getEntitySetName()));
- String keyValue = createEntryKey(eia, data, isKeyAutoGenerated, isIdTag);
+ String keyValue = createEntryKey(eia, data, isKeyAutoGenerated);
if (isIdTag && isKeyAutoGenerated && "".equals(keyValue) && keyValue.length() == 0) {
sb.append(extension == null ? "" : ("/" + extension));
} else {
@@ -542,7 +542,7 @@ public class AtomEntryEntitySerializer {
}
private static String createEntryKey(final EntityInfoAggregator entityInfo, final Map<String, Object> data,
- boolean isKeyAutoGenerated, boolean isIdTag)
+ boolean isKeyAutoGenerated)
throws EntityProviderException {
final List<EntityPropertyInfo> keyPropertyInfos = entityInfo.getKeyPropertyInfos();
@@ -561,13 +561,11 @@ public class AtomEntryEntitySerializer {
try {
String keyValue = null;
if (isKeyAutoGenerated && data.get(name) == null) {
- if (isIdTag) {
- keyValue = "";
- } else {
- Object value = fetchDefaultValue(type.getDefaultType());
- keyValue = Encoder.encode(type.valueToString(value, EdmLiteralKind.URI,
- keyPropertyInfo.getFacets()));
- }
+ // Every time default values for the key is generated
+ // if it is not there and auto generation has to be done by the server
+ Object value = fetchDefaultValue(type.getDefaultType());
+ keyValue = Encoder.encode(type.valueToString(value, EdmLiteralKind.URI,
+ keyPropertyInfo.getFacets()));
} else {
keyValue = Encoder.encode(type.valueToString(data.get(name), EdmLiteralKind.URI,
keyPropertyInfo.getFacets()));
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2db7d0a0/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
index 74cab47..f384bbc 100644
--- a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
+++ b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/AtomEntrySerializerTest.java
@@ -935,6 +935,40 @@ public class AtomEntrySerializerTest extends AbstractProviderTest {
assertXpathEvaluatesTo(BASE_URI.toASCIIString() + "Container2.Photos(Id=1,Type='image%2Fpng')",
"/a:entry/a:id/text()", xmlString);
}
+
+ @Test
+ public void serializeGenIds() throws IOException, XpathException, SAXException, XMLStreamException,
+ FactoryConfigurationError, ODataException {
+ AtomSerializerDeserializer ser = createAtomEntityProvider();
+ EntitySerializerProperties props =
+ EntitySerializerProperties.serviceRoot(
+ BASE_URI).isKeyAutoGenerated(true).includeMetadata(true).build();
+ Entity photo = new Entity();
+ // photo.addProperty("Id", Integer.valueOf(1));
+ photo.addProperty("Name", "Mona Lisa");
+ photo.addProperty("Type", "image/png");
+ photo
+ .addProperty(
+ "ImageUrl",
+ "http://www.mopo.de/image/view/2012/6/4/16548086,13385561,medRes,maxh,234,maxw,234," +
+ "Parodia_Mona_Lisa_Lego_Hamburger_Morgenpost.jpg");
+ Entity imageData = new Entity();
+ imageData.addProperty("Image", new byte[] { 1, 2, 3, 4 });
+ imageData.addProperty("getImageType", "image/png");
+ photo.addProperty("Image", imageData);
+ photo.addProperty("BinaryData", new byte[] { -1, -2, -3, -4 });
+
+ photo.setWriteProperties(props);
+ ODataResponse response =
+ ser.writeEntry(MockFacade.getMockEdm().getEntityContainer("Container2").getEntitySet("Photos"), photo);
+ String xmlString = verifyResponse(response);
+
+ assertXpathExists("/a:entry", xmlString);
+ assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
+ assertXpathExists("/a:entry/a:id", xmlString);
+ assertXpathEvaluatesTo(BASE_URI.toASCIIString() + "Container2.Photos(Id=0,Type='image%2Fpng')",
+ "/a:entry/a:id/text()", xmlString);
+ }
@Test
public void serializeProperties() throws IOException, XpathException, SAXException, XMLStreamException,
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2db7d0a0/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
index f7e0433..e3e06f0 100644
--- a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
+++ b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
@@ -829,7 +829,7 @@ public class JsonEntryEntitySerializerTest extends BaseTest {
final String json = StringHelper.inputStreamToString((InputStream) response.getEntity());
assertNotNull(json);
- assertEquals("{\"__metadata\":{\"id\":\"http://host:80/service/Rooms\","
+ assertEquals("{\"__metadata\":{\"id\":\"http://host:80/service/Rooms('A')\","
+ "\"uri\":\"http://host:80/service/Rooms('A')\",\"type\":\"RefScenario.Room\"},"
+ "\"Version\":1,\"nr_Building\":{\"Name\":\"Building1\"}}", json);
}