Repository: olingo-odata4 Updated Branches: refs/heads/master e5cfd8eb1 -> b49763452
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/master 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(); }
