You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2014/05/12 10:39:09 UTC
[34/50] [abbrv] git commit: Adding core test for derived entity type
(and derived complex type) CRUD
Adding core test for derived entity type (and derived complex type) CRUD
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/b4976345
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/b4976345
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/b4976345
Branch: refs/heads/olingo274
Commit: b497634529b76284225c5cb470d8ba909394836e
Parents: e5cfd8e
Author: Francesco Chicchiriccò <--global>
Authored: Fri May 9 12:15:48 2014 +0200
Committer: Francesco Chicchiriccò <--global>
Committed: Fri May 9 12:15:48 2014 +0200
----------------------------------------------------------------------
.../apache/olingo/fit/metadata/EntityType.java | 14 +++-
.../apache/olingo/fit/metadata/Metadata.java | 35 +++++++--
.../olingo/fit/utils/AbstractUtilities.java | 44 +++++------
.../org/apache/olingo/fit/utils/Commons.java | 1 +
.../org/apache/olingo/fit/utils/DataBinder.java | 2 +
.../olingo/fit/v4/DerivedTypeTestITCase.java | 77 ++++++++++++++++++++
.../commons/api/domain/ODataPrimitiveValue.java | 4 +
.../core/data/AbstractJsonSerializer.java | 6 ++
.../commons/core/data/JSONEntitySerializer.java | 20 +++--
.../domain/AbstractODataPrimitiveValue.java | 12 ++-
10 files changed, 174 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b4976345/fit/src/main/java/org/apache/olingo/fit/metadata/EntityType.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/metadata/EntityType.java b/fit/src/main/java/org/apache/olingo/fit/metadata/EntityType.java
index 376e3fd..f08c36b 100644
--- a/fit/src/main/java/org/apache/olingo/fit/metadata/EntityType.java
+++ b/fit/src/main/java/org/apache/olingo/fit/metadata/EntityType.java
@@ -27,20 +27,30 @@ public class EntityType extends AbstractMetadataElement {
private final String name;
+ private String baseType;
+
private final Map<String, Property> properties;
private final Map<String, NavigationProperty> navigationProperties;
public EntityType(final String name) {
this.name = name;
- properties = new HashMap<String, Property>();
- navigationProperties = new HashMap<String, NavigationProperty>();
+ this.properties = new HashMap<String, Property>();
+ this.navigationProperties = new HashMap<String, NavigationProperty>();
}
public String getName() {
return name;
}
+ public String getBaseType() {
+ return baseType;
+ }
+
+ public void setBaseType(final String baseType) {
+ this.baseType = baseType;
+ }
+
public Collection<NavigationProperty> getNavigationProperties() {
return new HashSet<NavigationProperty>(navigationProperties.values());
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b4976345/fit/src/main/java/org/apache/olingo/fit/metadata/Metadata.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/metadata/Metadata.java b/fit/src/main/java/org/apache/olingo/fit/metadata/Metadata.java
index 360b565..b55f91d 100644
--- a/fit/src/main/java/org/apache/olingo/fit/metadata/Metadata.java
+++ b/fit/src/main/java/org/apache/olingo/fit/metadata/Metadata.java
@@ -31,10 +31,10 @@ import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
import org.apache.olingo.fit.utils.ConstantKey;
import org.apache.olingo.fit.utils.Constants;
-import org.codehaus.plexus.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -135,14 +135,33 @@ public class Metadata extends AbstractMetadataElement {
}
public EntityType getEntityType(final String fqn) {
- final int lastDotIndex = fqn.lastIndexOf('.');
- final String ns = fqn.substring(0, lastDotIndex).replaceAll("^#", "");
- final String name = fqn.substring(lastDotIndex + 1);
- return getSchema(ns) == null ? null : getSchema(ns).getEntityType(name);
+ EntityType result = null;
+
+ final String ns = StringUtils.substringBeforeLast(fqn, ".");
+ if (getSchema(ns) != null) {
+ final String name = StringUtils.substringAfterLast(fqn, ".");
+ result = getSchema(ns).getEntityType(name);
+ if (result != null && result.getBaseType() != null) {
+ final String baseNS = StringUtils.substringBeforeLast(result.getBaseType(), ".");
+ if (getSchema(baseNS) != null) {
+ final String baseName = StringUtils.substringAfterLast(result.getBaseType(), ".");
+ final EntityType baseType = getSchema(baseNS).getEntityType(baseName);
+ if (baseType != null) {
+ for (Map.Entry<String, Property> entry : baseType.getPropertyMap().entrySet()) {
+ result.addProperty(entry.getKey(), entry.getValue());
+ }
+ for (Map.Entry<String, NavigationProperty> entry : baseType.getNavigationPropertyMap().entrySet()) {
+ result.addNavigationProperty(entry.getKey(), entry.getValue());
+ }
+ }
+ }
+ }
+ }
+
+ return result;
}
public Map<String, NavigationProperty> getNavigationProperties(final String entitySetName) {
-
for (Schema schema : getSchemas()) {
for (Container container : schema.getContainers()) {
final EntitySet entitySet = container.getEntitySet(entitySetName);
@@ -279,6 +298,10 @@ public class Metadata extends AbstractMetadataElement {
private EntityType getEntityType(final StartElement start, final XMLEventReader reader) throws XMLStreamException {
final EntityType entityType = new EntityType(start.getAttributeByName(new QName("Name")).getValue());
+ final Attribute baseType = start.getAttributeByName(new QName("BaseType"));
+ if (baseType != null) {
+ entityType.setBaseType(baseType.getValue());
+ }
boolean completed = false;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b4976345/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
index 4dbd912..9ff37d7 100644
--- a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
@@ -681,13 +681,13 @@ public abstract class AbstractUtilities {
return res;
}
- public String getDefaultEntryKey(final String entitySetName, final AtomEntityImpl entry) throws IOException {
+ public String getDefaultEntryKey(final String entitySetName, final AtomEntityImpl entity) throws IOException {
try {
String res;
if ("Message".equals(entitySetName)) {
int messageId;
- if (entry.getProperty("MessageId") == null || entry.getProperty("FromUsername") == null) {
+ if (entity.getProperty("MessageId") == null || entity.getProperty("FromUsername") == null) {
if (Commons.SEQUENCE.containsKey(entitySetName)) {
messageId = Commons.SEQUENCE.get(entitySetName) + 1;
res = "MessageId=" + String.valueOf(messageId) + ",FromUsername=1";
@@ -695,35 +695,35 @@ public abstract class AbstractUtilities {
throw new Exception(String.format("Unable to retrieve entity key value for %s", entitySetName));
}
} else {
- messageId = Integer.valueOf(entry.getProperty("MessageId").getValue().asPrimitive().get());
- res = "MessageId=" + entry.getProperty("MessageId").getValue().asPrimitive().get()
- + ",FromUsername=" + entry.getProperty("FromUsername").getValue().asPrimitive().get();
+ messageId = Integer.valueOf(entity.getProperty("MessageId").getValue().asPrimitive().get());
+ res = "MessageId=" + entity.getProperty("MessageId").getValue().asPrimitive().get()
+ + ",FromUsername=" + entity.getProperty("FromUsername").getValue().asPrimitive().get();
}
Commons.SEQUENCE.put(entitySetName, messageId);
} else if ("Order".equals(entitySetName)) {
- res = getDefaultEntryKey(entitySetName, entry, "OrderId");
+ res = getDefaultEntryKey(entitySetName, entity, "OrderId");
} else if ("Orders".equals(entitySetName)) {
- res = getDefaultEntryKey(entitySetName, entry, "OrderID");
+ res = getDefaultEntryKey(entitySetName, entity, "OrderID");
} else if ("Customer".equals(entitySetName)) {
- res = getDefaultEntryKey(entitySetName, entry, "CustomerId");
+ res = getDefaultEntryKey(entitySetName, entity, "CustomerId");
} else if ("Person".equals(entitySetName)) {
- res = getDefaultEntryKey(entitySetName, entry, "PersonId");
+ res = getDefaultEntryKey(entitySetName, entity, "PersonId");
} else if ("ComputerDetail".equals(entitySetName)) {
- res = getDefaultEntryKey(entitySetName, entry, "ComputerDetailId");
+ res = getDefaultEntryKey(entitySetName, entity, "ComputerDetailId");
} else if ("AllGeoTypesSet".equals(entitySetName)) {
- res = getDefaultEntryKey(entitySetName, entry, "Id");
+ res = getDefaultEntryKey(entitySetName, entity, "Id");
} else if ("CustomerInfo".equals(entitySetName)) {
- res = getDefaultEntryKey(entitySetName, entry, "CustomerInfoId");
+ res = getDefaultEntryKey(entitySetName, entity, "CustomerInfoId");
} else if ("Car".equals(entitySetName)) {
- res = getDefaultEntryKey(entitySetName, entry, "VIN");
+ res = getDefaultEntryKey(entitySetName, entity, "VIN");
} else if ("RowIndex".equals(entitySetName)) {
- res = getDefaultEntryKey(entitySetName, entry, "Id");
+ res = getDefaultEntryKey(entitySetName, entity, "Id");
} else if ("Products".equals(entitySetName)) {
- res = getDefaultEntryKey(entitySetName, entry, "ProductID");
+ res = getDefaultEntryKey(entitySetName, entity, "ProductID");
} else if ("ProductDetails".equals(entitySetName)) {
int productId;
int productDetailId;
- if (entry.getProperty("ProductID") == null || entry.getProperty("ProductDetailID") == null) {
+ if (entity.getProperty("ProductID") == null || entity.getProperty("ProductDetailID") == null) {
if (Commons.SEQUENCE.containsKey(entitySetName) && Commons.SEQUENCE.containsKey("Products")) {
productId = Commons.SEQUENCE.get("Products") + 1;
productDetailId = Commons.SEQUENCE.get(entitySetName) + 1;
@@ -733,17 +733,19 @@ public abstract class AbstractUtilities {
}
Commons.SEQUENCE.put(entitySetName, productDetailId);
} else {
- productId = Integer.valueOf(entry.getProperty("ProductID").getValue().asPrimitive().get());
- productDetailId = Integer.valueOf(entry.getProperty("ProductDetailID").getValue().asPrimitive().get());
- res = "ProductID=" + entry.getProperty("ProductID").getValue().asPrimitive().get()
- + ",ProductDetailID=" + entry.getProperty("ProductDetailID").getValue().asPrimitive().get();
+ productId = Integer.valueOf(entity.getProperty("ProductID").getValue().asPrimitive().get());
+ productDetailId = Integer.valueOf(entity.getProperty("ProductDetailID").getValue().asPrimitive().get());
+ res = "ProductID=" + entity.getProperty("ProductID").getValue().asPrimitive().get()
+ + ",ProductDetailID=" + entity.getProperty("ProductDetailID").getValue().asPrimitive().get();
}
Commons.SEQUENCE.put(entitySetName, productDetailId);
Commons.SEQUENCE.put("Products", productId);
} else if ("PaymentInstrument".equals(entitySetName)) {
- res = getDefaultEntryKey(entitySetName, entry, "PaymentInstrumentID");
+ res = getDefaultEntryKey(entitySetName, entity, "PaymentInstrumentID");
} else if ("Advertisements".equals(entitySetName)) {
res = UUID.randomUUID().toString();
+ } else if ("People".equals(entitySetName)) {
+ res = getDefaultEntryKey(entitySetName, entity, "PersonID");
} else {
throw new Exception(String.format("EntitySet '%s' not found", entitySetName));
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b4976345/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java b/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java
index 2746637..d99ac57 100644
--- a/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java
@@ -96,6 +96,7 @@ public abstract class Commons {
SEQUENCE.put("Products", 1000);
SEQUENCE.put("ProductDetails", 1000);
SEQUENCE.put("PaymentInstrument", 10192);
+ SEQUENCE.put("People", 1000);
MEDIA_CONTENT.put("CustomerInfo",
new ImmutablePair<String, EdmPrimitiveTypeKind>("CustomerinfoId", EdmPrimitiveTypeKind.Int32));
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b4976345/fit/src/main/java/org/apache/olingo/fit/utils/DataBinder.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/utils/DataBinder.java b/fit/src/main/java/org/apache/olingo/fit/utils/DataBinder.java
index 2b69f39..e5f7850 100644
--- a/fit/src/main/java/org/apache/olingo/fit/utils/DataBinder.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/DataBinder.java
@@ -247,6 +247,8 @@ public class DataBinder {
} else {
final EntityType entityType = entryType == null ? null : Commons.getMetadata(version).getEntityType(entryType);
if (entityType != null) {
+ System.out.println("ZZZZZZZZZZZZZ " + entityType + " " + jsonproperty.getName() + " "
+ + entityType.getProperty(jsonproperty.getName()));
atomproperty.setType(entityType.getProperty(jsonproperty.getName()).getType());
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b4976345/fit/src/test/java/org/apache/olingo/fit/v4/DerivedTypeTestITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/v4/DerivedTypeTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/v4/DerivedTypeTestITCase.java
index 370c377..9cbb779 100644
--- a/fit/src/test/java/org/apache/olingo/fit/v4/DerivedTypeTestITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/v4/DerivedTypeTestITCase.java
@@ -20,10 +20,18 @@ package org.apache.olingo.fit.v4;
import static org.junit.Assert.assertEquals;
+import org.apache.olingo.client.api.communication.request.cud.ODataDeleteRequest;
+import org.apache.olingo.client.api.communication.request.cud.ODataEntityCreateRequest;
+import org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest;
import org.apache.olingo.client.api.communication.request.retrieve.ODataEntitySetRequest;
+import org.apache.olingo.client.api.communication.response.ODataEntityCreateResponse;
import org.apache.olingo.client.api.uri.v4.URIBuilder;
+import org.apache.olingo.commons.api.domain.ODataComplexValue;
import org.apache.olingo.commons.api.domain.v4.ODataEntity;
import org.apache.olingo.commons.api.domain.v4.ODataEntitySet;
+import org.apache.olingo.commons.api.domain.v4.ODataProperty;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.format.ODataPubFormat;
import org.junit.Test;
@@ -64,4 +72,73 @@ public class DerivedTypeTestITCase extends AbstractTestITCase {
public void readfromJSON() {
read(ODataPubFormat.JSON_FULL_METADATA);
}
+
+ private void createDelete(final ODataPubFormat format) {
+ final ODataEntity customer = client.getObjectFactory().
+ newEntity(new FullQualifiedName("Microsoft.Test.OData.Services.ODataWCFService.Customer"));
+
+ customer.getProperties().add(client.getObjectFactory().newPrimitiveProperty("PersonID",
+ client.getObjectFactory().newPrimitiveValueBuilder().buildInt32(976)));
+ customer.getProperties().add(client.getObjectFactory().newPrimitiveProperty("FirstName",
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("Test")));
+ customer.getProperties().add(client.getObjectFactory().newPrimitiveProperty("LastName",
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("Test")));
+
+ final ODataComplexValue<ODataProperty> homeAddress =
+ client.getObjectFactory().newComplexValue("Microsoft.Test.OData.Services.ODataWCFService.CompanyAddress");
+ homeAddress.add(client.getObjectFactory().newPrimitiveProperty("Street",
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("V.le Gabriele D'Annunzio")));
+ homeAddress.add(client.getObjectFactory().newPrimitiveProperty("City",
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("Pescara")));
+ homeAddress.add(client.getObjectFactory().newPrimitiveProperty("PostalCode",
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("65127")));
+ homeAddress.add(client.getObjectFactory().newPrimitiveProperty("CompanyName",
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("Tirasa")));
+ customer.getProperties().add(client.getObjectFactory().newComplexProperty("HomeAddress", homeAddress));
+
+ customer.getProperties().add(client.getObjectFactory().newCollectionProperty("Numbers",
+ client.getObjectFactory().newCollectionValue("Edm.String")));
+ customer.getProperties().add(client.getObjectFactory().newCollectionProperty("Emails",
+ client.getObjectFactory().newCollectionValue("Edm.String")));
+ customer.getProperties().add(client.getObjectFactory().newPrimitiveProperty("City",
+ client.getObjectFactory().newPrimitiveValueBuilder().buildString("Pescara")));
+ customer.getProperties().add(client.getObjectFactory().newPrimitiveProperty("Birthday",
+ client.getObjectFactory().newPrimitiveValueBuilder().
+ setType(EdmPrimitiveTypeKind.DateTimeOffset).setText("1977-09-08T00:00:00Z").build()));
+ customer.getProperties().add(client.getObjectFactory().newPrimitiveProperty("TimeBetweenLastTwoOrders",
+ client.getObjectFactory().newPrimitiveValueBuilder().
+ setType(EdmPrimitiveTypeKind.Duration).setText("PT0.0000002S").build()));
+
+ final ODataEntityCreateRequest<ODataEntity> createReq = client.getCUDRequestFactory().
+ getEntityCreateRequest(
+ client.getURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("People").build(),
+ customer);
+ createReq.setFormat(format);
+
+ final ODataEntityCreateResponse<ODataEntity> createRes = createReq.execute();
+ assertEquals(201, createRes.getStatusCode());
+
+ final ODataEntityRequest<ODataEntity> fetchReq = client.getRetrieveRequestFactory().
+ getEntityRequest(createRes.getBody().getEditLink());
+ fetchReq.setFormat(format);
+
+ final ODataEntity actual = fetchReq.execute().getBody();
+ assertEquals("Microsoft.Test.OData.Services.ODataWCFService.Customer", actual.getTypeName().toString());
+ assertEquals("Microsoft.Test.OData.Services.ODataWCFService.CompanyAddress",
+ actual.getProperty("HomeAddress").getValue().getTypeName());
+
+ final ODataDeleteRequest deleteReq = client.getCUDRequestFactory().getDeleteRequest(actual.getEditLink());
+ assertEquals(204, deleteReq.execute().getStatusCode());
+ }
+
+ @Test
+ public void createDeleteAsAtom() {
+ createDelete(ODataPubFormat.ATOM);
+ }
+
+ @Test
+ public void createDeleteAsJSON() {
+ createDelete(ODataPubFormat.JSON_FULL_METADATA);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b4976345/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java
index 1981912..7e9d054 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java
@@ -40,8 +40,12 @@ public interface ODataPrimitiveValue extends ODataValue {
ODataPrimitiveValue buildBoolean(Boolean value);
+ ODataPrimitiveValue buildInt16(Short value);
+
ODataPrimitiveValue buildInt32(Integer value);
+ ODataPrimitiveValue buildInt64(Long value);
+
ODataPrimitiveValue buildSingle(Float value);
ODataPrimitiveValue buildDouble(Double value);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b4976345/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractJsonSerializer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractJsonSerializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractJsonSerializer.java
index 942516c..395059c 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractJsonSerializer.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractJsonSerializer.java
@@ -191,12 +191,18 @@ abstract class AbstractJsonSerializer<T> extends ODataJacksonSerializer<T> {
collection(jgen, typeInfo == null ? null : typeInfo.getFullQualifiedName().toString(), value.asCollection());
} else if (value.isComplex()) {
jgen.writeStartObject();
+
+ if (typeInfo != null) {
+ jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_TYPE), typeInfo.external(version));
+ }
+
for (Property property : value.asComplex().get()) {
valuable(jgen, property, property.getName());
}
if (value.isLinkedComplex()) {
links(value.asLinkedComplex(), jgen);
}
+
jgen.writeEndObject();
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b4976345/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntitySerializer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntitySerializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntitySerializer.java
index cee5b54..0ee4166 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntitySerializer.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntitySerializer.java
@@ -87,19 +87,17 @@ public class JSONEntitySerializer extends AbstractJsonSerializer<JSONEntityImpl>
valuable(jgen, property, property.getName());
}
- if (serverMode) {
- if (entity.getEditLink() != null && StringUtils.isNotBlank(entity.getEditLink().getHref())) {
- final URI link = URI.create(entity.getEditLink().getHref());
- final String editLink = link.isAbsolute() ? link.toASCIIString()
- : URI.create(entity.getBaseURI() + "/" + link.toASCIIString()).normalize().toASCIIString();
+ if (serverMode && entity.getEditLink() != null && StringUtils.isNotBlank(entity.getEditLink().getHref())) {
+ final URI link = URI.create(entity.getEditLink().getHref());
+ final String editLink = link.isAbsolute() ? link.toASCIIString()
+ : URI.create(entity.getBaseURI() + "/" + link.toASCIIString()).normalize().toASCIIString();
- jgen.writeStringField(
- version.getJSONMap().get(ODataServiceVersion.JSON_EDIT_LINK), editLink);
+ jgen.writeStringField(
+ version.getJSONMap().get(ODataServiceVersion.JSON_EDIT_LINK), editLink);
- if (entity.isMediaEntity()) {
- jgen.writeStringField(
- version.getJSONMap().get(ODataServiceVersion.JSON_MEDIAREAD_LINK), editLink + "/$value");
- }
+ if (entity.isMediaEntity()) {
+ jgen.writeStringField(
+ version.getJSONMap().get(ODataServiceVersion.JSON_MEDIAREAD_LINK), editLink + "/$value");
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b4976345/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java
index db36cca..844c69a 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java
@@ -95,7 +95,7 @@ public abstract class AbstractODataPrimitiveValue extends AbstractODataValue imp
}
@Override
- public AbstractODataPrimitiveValue build() {
+ public ODataPrimitiveValue build() {
if (getInstance().text == null && getInstance().value == null) {
throw new IllegalArgumentException("Must provide either text or value");
}
@@ -138,11 +138,21 @@ public abstract class AbstractODataPrimitiveValue extends AbstractODataValue imp
}
@Override
+ public ODataPrimitiveValue buildInt16(final Short value) {
+ return setType(EdmPrimitiveTypeKind.Int16).setValue(value).build();
+ }
+
+ @Override
public ODataPrimitiveValue buildInt32(final Integer value) {
return setType(EdmPrimitiveTypeKind.Int32).setValue(value).build();
}
@Override
+ public ODataPrimitiveValue buildInt64(final Long value) {
+ return setType(EdmPrimitiveTypeKind.Int64).setValue(value).build();
+ }
+
+ @Override
public ODataPrimitiveValue buildSingle(final Float value) {
return setType(EdmPrimitiveTypeKind.Single).setValue(value).build();
}