You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by il...@apache.org on 2014/04/01 16:19:11 UTC
[44/51] [abbrv] [OLINGO-205,
OLINGO-175] provided JSON integration tests + refactoring and fixes
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v3/JSONServiceDocumentImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v3/JSONServiceDocumentImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v3/JSONServiceDocumentImpl.java
index ace5487..af957a1 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v3/JSONServiceDocumentImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v3/JSONServiceDocumentImpl.java
@@ -20,11 +20,9 @@ package org.apache.olingo.client.core.data.v3;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.net.URI;
import org.apache.olingo.client.core.data.AbstractServiceDocument;
import org.apache.olingo.client.core.data.JSONServiceDocumentDeserializer;
-import org.apache.olingo.commons.api.Constants;
/**
* Service document, represented via JSON.
@@ -34,34 +32,4 @@ public class JSONServiceDocumentImpl extends AbstractServiceDocument {
private static final long serialVersionUID = 4195734928526398830L;
- private String metadata;
-
- @Override
- public URI getBaseURI() {
- URI baseURI = null;
- if (metadata != null) {
- final String metadataURI = getMetadata();
- baseURI = URI.create(metadataURI.substring(0, metadataURI.indexOf(Constants.METADATA)));
- }
-
- return baseURI;
- }
-
- /**
- * Gets the metadata URI.
- *
- * @return the metadata URI
- */
- public String getMetadata() {
- return metadata;
- }
-
- /**
- * Sets the metadata URI.
- *
- * @param metadata metadata URI.
- */
- public void setMetadata(final String metadata) {
- this.metadata = metadata;
- }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v3/XMLServiceDocumentImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v3/XMLServiceDocumentImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v3/XMLServiceDocumentImpl.java
index 682f500..e09b092 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v3/XMLServiceDocumentImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v3/XMLServiceDocumentImpl.java
@@ -20,7 +20,6 @@ package org.apache.olingo.client.core.data.v3;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.net.URI;
import org.apache.olingo.client.api.data.ServiceDocument;
import org.apache.olingo.client.core.data.AbstractServiceDocument;
@@ -28,21 +27,4 @@ import org.apache.olingo.client.core.data.XMLServiceDocumentDeserializer;
@JsonDeserialize(using = XMLServiceDocumentDeserializer.class)
public class XMLServiceDocumentImpl extends AbstractServiceDocument implements ServiceDocument {
-
- private URI baseURI;
-
- @Override
- public URI getBaseURI() {
- return this.baseURI;
- }
-
- /**
- * Sets base URI.
- *
- * @param baseURI base URI.
- */
- public void setBaseURI(final URI baseURI) {
- this.baseURI = baseURI;
- }
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/AbstractServiceDocument.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/AbstractServiceDocument.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/AbstractServiceDocument.java
index 47f294f..45ce766 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/AbstractServiceDocument.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/AbstractServiceDocument.java
@@ -18,7 +18,6 @@
*/
package org.apache.olingo.client.core.data.v4;
-import java.net.URI;
import java.util.ArrayList;
import java.util.List;
@@ -27,12 +26,6 @@ import org.apache.olingo.client.api.data.ServiceDocumentItem;
public abstract class AbstractServiceDocument
extends org.apache.olingo.client.core.data.AbstractServiceDocument {
- private URI baseURI;
-
- private String metadataContext;
-
- private String metadataETag;
-
private List<ServiceDocumentItem> functionImports = new ArrayList<ServiceDocumentItem>();
private List<ServiceDocumentItem> singletons = new ArrayList<ServiceDocumentItem>();
@@ -40,38 +33,6 @@ public abstract class AbstractServiceDocument
private List<ServiceDocumentItem> relatedServiceDocuments = new ArrayList<ServiceDocumentItem>();
@Override
- public URI getBaseURI() {
- return this.baseURI;
- }
-
- /**
- * Sets base URI.
- *
- * @param baseURI base URI.
- */
- public void setBaseURI(final URI baseURI) {
- this.baseURI = baseURI;
- }
-
- @Override
- public String getMetadataContext() {
- return metadataContext;
- }
-
- public void setMetadataContext(final String metadataContext) {
- this.metadataContext = metadataContext;
- }
-
- @Override
- public String getMetadataETag() {
- return metadataETag;
- }
-
- public void setMetadataETag(final String metadataETag) {
- this.metadataETag = metadataETag;
- }
-
- @Override
public List<ServiceDocumentItem> getFunctionImports() {
return functionImports;
}
@@ -85,5 +46,4 @@ public abstract class AbstractServiceDocument
public List<ServiceDocumentItem> getRelatedServiceDocuments() {
return relatedServiceDocuments;
}
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/JSONServiceDocumentImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/JSONServiceDocumentImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/JSONServiceDocumentImpl.java
index b5c352b..f3dfd91 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/JSONServiceDocumentImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/JSONServiceDocumentImpl.java
@@ -23,21 +23,6 @@ import org.apache.olingo.client.core.data.JSONServiceDocumentDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.net.URI;
-import org.apache.olingo.commons.api.Constants;
-
@JsonDeserialize(using = JSONServiceDocumentDeserializer.class)
public class JSONServiceDocumentImpl extends AbstractServiceDocument implements ServiceDocument {
-
- @Override
- public URI getBaseURI() {
- URI baseURI = null;
- if (getMetadataContext() != null) {
- final String metadataURI = getMetadataContext();
- baseURI = URI.create(metadataURI.substring(0, metadataURI.indexOf(Constants.METADATA)));
- }
-
- return baseURI;
- }
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/XMLServiceDocumentImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/XMLServiceDocumentImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/XMLServiceDocumentImpl.java
index 2885658..b3c64b6 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/XMLServiceDocumentImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/v4/XMLServiceDocumentImpl.java
@@ -25,5 +25,4 @@ import org.apache.olingo.client.core.data.XMLServiceDocumentDeserializer;
@JsonDeserialize(using = XMLServiceDocumentDeserializer.class)
public class XMLServiceDocumentImpl extends AbstractServiceDocument implements ServiceDocument {
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
index c41ad6b..c9b6b0e 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
@@ -292,7 +292,7 @@ public abstract class AbstractODataBinder implements CommonODataBinder {
final CommonODataEntity entity = resource.getSelfLink() == null
? client.getObjectFactory().newEntity(resource.getType())
: client.getObjectFactory().newEntity(resource.getType(),
- URIUtils.getURI(base, resource.getSelfLink().getHref()));
+ URIUtils.getURI(base, resource.getSelfLink().getHref()));
if (StringUtils.isNotBlank(resource.getETag())) {
entity.setETag(resource.getETag());
@@ -321,12 +321,12 @@ public abstract class AbstractODataBinder implements CommonODataBinder {
entity.addLink(client.getObjectFactory().newInlineEntity(
link.getTitle(), base, link.getHref(),
getODataEntity(inlineEntry,
- inlineEntry.getBaseURI() == null ? base : inlineEntry.getBaseURI())));
+ inlineEntry.getBaseURI() == null ? base : inlineEntry.getBaseURI())));
} else {
entity.addLink(client.getObjectFactory().newInlineEntitySet(
link.getTitle(), base, link.getHref(),
getODataEntitySet(inlineFeed,
- inlineFeed.getBaseURI() == null ? base : inlineFeed.getBaseURI())));
+ inlineFeed.getBaseURI() == null ? base : inlineFeed.getBaseURI())));
}
}
@@ -363,18 +363,18 @@ public abstract class AbstractODataBinder implements CommonODataBinder {
value = client.getObjectFactory().newPrimitiveValueBuilder().
setText(resource.getValue().asPrimitive().get()).
setType(typeInfo == null
- ? null
- : EdmPrimitiveTypeKind.valueOfFQN(
- client.getServiceVersion(), typeInfo.getFullQualifiedName().toString())).build();
+ ? null
+ : EdmPrimitiveTypeKind.valueOfFQN(
+ client.getServiceVersion(), typeInfo.getFullQualifiedName().toString())).build();
} else if (resource.getValue().isGeospatial()) {
value = client.getObjectFactory().newPrimitiveValueBuilder().
setValue(resource.getValue().asGeospatial().get()).
setType(typeInfo == null
- || EdmPrimitiveTypeKind.Geography.getFullQualifiedName().equals(typeInfo.getFullQualifiedName())
- || EdmPrimitiveTypeKind.Geometry.getFullQualifiedName().equals(typeInfo.getFullQualifiedName())
- ? resource.getValue().asGeospatial().get().getEdmPrimitiveTypeKind()
- : EdmPrimitiveTypeKind.valueOfFQN(
- client.getServiceVersion(), typeInfo.getFullQualifiedName().toString())).build();
+ || EdmPrimitiveTypeKind.Geography.getFullQualifiedName().equals(typeInfo.getFullQualifiedName())
+ || EdmPrimitiveTypeKind.Geometry.getFullQualifiedName().equals(typeInfo.getFullQualifiedName())
+ ? resource.getValue().asGeospatial().get().getEdmPrimitiveTypeKind()
+ : EdmPrimitiveTypeKind.valueOfFQN(
+ client.getServiceVersion(), typeInfo.getFullQualifiedName().toString())).build();
} else if (resource.getValue().isComplex()) {
value = client.getObjectFactory().newComplexValue(typeInfo == null
? null : typeInfo.getFullQualifiedName().toString());
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataBinderImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataBinderImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataBinderImpl.java
index 4f4a484..226d8b8 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataBinderImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataBinderImpl.java
@@ -64,19 +64,19 @@ public class ODataBinderImpl extends AbstractODataBinder implements ODataBinder
public ODataServiceDocument getODataServiceDocument(final ServiceDocument resource) {
final ODataServiceDocument serviceDocument = super.getODataServiceDocument(resource);
- serviceDocument.setMetadataContext(URIUtils.getURI(resource.getBaseURI(), resource.getMetadataContext()));
- serviceDocument.setMetadataETag(resource.getMetadataETag());
-
for (ServiceDocumentItem functionImport : resource.getFunctionImports()) {
- serviceDocument.getFunctionImports().put(functionImport.getTitle(),
+ serviceDocument.getFunctionImports().put(
+ functionImport.getName() == null ? functionImport.getHref() : functionImport.getName(),
URIUtils.getURI(resource.getBaseURI(), functionImport.getHref()));
}
for (ServiceDocumentItem singleton : resource.getSingletons()) {
- serviceDocument.getSingletons().put(singleton.getTitle(),
+ serviceDocument.getSingletons().put(
+ singleton.getName() == null ? singleton.getHref() : singleton.getName(),
URIUtils.getURI(resource.getBaseURI(), singleton.getHref()));
}
for (ServiceDocumentItem sdoc : resource.getRelatedServiceDocuments()) {
- serviceDocument.getRelatedServiceDocuments().put(sdoc.getTitle(),
+ serviceDocument.getRelatedServiceDocuments().put(
+ sdoc.getName() == null ? sdoc.getHref() : sdoc.getName(),
URIUtils.getURI(resource.getBaseURI(), sdoc.getHref()));
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AsyncTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AsyncTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AsyncTestITCase.java
index 01e0d7b..04ad089 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AsyncTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AsyncTestITCase.java
@@ -97,7 +97,6 @@ public class AsyncTestITCase extends AbstractTestITCase {
* @see MediaEntityTest#createMediaEntity(com.msopentech.odatajclient.engine.format.ODataPubFormat)
*/
@Test
- @Ignore
public void createMediaEntity() throws Exception {
CommonURIBuilder<?> builder = client.getURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Car");
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/NavigationLinkCreateTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/NavigationLinkCreateTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/NavigationLinkCreateTestITCase.java
deleted file mode 100644
index 1972fec..0000000
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/NavigationLinkCreateTestITCase.java
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.it.v3;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-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.ODataDeleteResponse;
-import org.apache.olingo.client.api.communication.response.ODataEntityCreateResponse;
-import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
-import org.apache.olingo.client.api.http.HttpClientException;
-import org.apache.olingo.client.api.uri.CommonURIBuilder;
-import org.apache.olingo.client.core.uri.URIUtils;
-import org.apache.olingo.commons.api.domain.CommonODataEntity;
-import org.apache.olingo.commons.api.domain.CommonODataEntitySet;
-import org.apache.olingo.commons.api.domain.CommonODataProperty;
-import org.apache.olingo.commons.api.domain.ODataCollectionValue;
-import org.apache.olingo.commons.api.domain.ODataComplexValue;
-import org.apache.olingo.commons.api.domain.ODataInlineEntity;
-import org.apache.olingo.commons.api.domain.ODataInlineEntitySet;
-import org.apache.olingo.commons.api.domain.ODataLink;
-import org.apache.olingo.commons.api.domain.ODataValue;
-import org.apache.olingo.commons.api.domain.v3.ODataEntity;
-import org.apache.olingo.commons.api.domain.v3.ODataEntitySet;
-import org.apache.olingo.commons.api.domain.v3.ODataProperty;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
-import org.apache.olingo.commons.api.format.ODataPubFormat;
-import org.junit.Ignore;
-import org.junit.Test;
-
-public class NavigationLinkCreateTestITCase extends AbstractTestITCase {
-
- // create navigation link with ATOM
- @Test
- public void createNavWithAtom() {
- final ODataPubFormat format = ODataPubFormat.ATOM;
- final String contentType = "application/atom+xml";
- final String prefer = "return-content";
- final ODataEntity actual = createNavigation(format, 20, contentType, prefer);
- delete(format, actual, false, testStaticServiceRootURL);
- }
- // create navigation link with JSON full metadata
-
- @Test
- public void createNavWithJSONFullMetadata() {
- final ODataPubFormat format = ODataPubFormat.JSON_FULL_METADATA;
- final String contentType = "application/json;odata=fullmetadata";
- final String prefer = "return-content";
- final ODataEntity actual = createNavigation(format, 21, contentType, prefer);
- delete(format, actual, false, testStaticServiceRootURL);
- }
- // throws Null pointer exception when the format is JSON No metadata
-
- @Test(expected = HttpClientException.class)
- public void createNavWithJSONNoMetadata() {
- final ODataPubFormat format = ODataPubFormat.JSON_NO_METADATA;
- final String contentType = "application/json;odata=nometadata";
- final String prefer = "return-content";
- final ODataEntity actual = createNavigation(format, 22, contentType, prefer);
- delete(format, actual, false, testStaticServiceRootURL);
- }
- // test with JSON accept and atom content type
-
- @Test
- @Ignore
- public void createNavWithJSONAndATOM() {
- final ODataPubFormat format = ODataPubFormat.JSON_FULL_METADATA;
- final String contentType = "application/atom+xml";
- final String prefer = "return-content";
- final ODataEntity actual = createNavigation(format, 23, contentType, prefer);
- delete(format, actual, false, testStaticServiceRootURL);
- }
- // test with JSON full metadata in format and json no metadata in content type
-
- @Test
- public void createNavWithDiffJSON() {
- final ODataPubFormat format = ODataPubFormat.JSON_FULL_METADATA;
- final String contentType = "application/json;odata=nometadata";
- final String prefer = "return-content";
- final ODataEntity actual = createNavigation(format, 24, contentType, prefer);
- delete(format, actual, false, testStaticServiceRootURL);
- }
- // test with JSON no metadata format and json no metadata in content type
-
- @Test(expected = HttpClientException.class)
- public void createNavWithNoMetadata() {
- final ODataPubFormat format = ODataPubFormat.JSON_NO_METADATA;
- final String contentType = "application/json;odata=fullmetadata";
- final String prefer = "return-content";
- final ODataEntity actual = createNavigation(format, 25, contentType, prefer);
- delete(format, actual, false, testStaticServiceRootURL);
- }
- // create collection navigation link with ATOM
-
- @Test
- public void createCollectionNavWithAtom() throws EdmPrimitiveTypeException {
- final ODataPubFormat format = ODataPubFormat.ATOM;
- final String contentType = "application/atom+xml";
- final String prefer = "return-content";
- final ODataEntity actual = createCollectionNavigation(format, 55, contentType, prefer);
- delete(format, actual, false, testStaticServiceRootURL);
- }
- // create collection navigation link with JSON
-
- @Test
- public void createCollectionNavWithJSON() throws EdmPrimitiveTypeException {
- final ODataPubFormat format = ODataPubFormat.JSON_FULL_METADATA;
- final String contentType = "application/json;odata=fullmetadata";
- final String prefer = "return-content";
- final ODataEntity actual = createCollectionNavigation(format, 77, contentType, prefer);
- delete(format, actual, false, testStaticServiceRootURL);
- }
-
- // create a navigation link
- public ODataEntity createNavigation(final ODataPubFormat format, final int id, final String contenttype,
- final String prefer) {
- final String name = "Customer Navigation test";
-
- final ODataEntity original = getNewCustomer(id, name, false);
- original.addLink(client.getObjectFactory().newEntityNavigationLink(
- "Info", URI.create(testStaticServiceRootURL + "/CustomerInfo(11)")));
- final ODataEntity created = createNav(testStaticServiceRootURL, format, original, "Customer", contenttype,
- prefer);
-
- final ODataEntity actual = validateEntities(testStaticServiceRootURL, format, created, id, null, "Customer");
-
- final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(testStaticServiceRootURL);
- uriBuilder.appendEntitySetSegment("Customer").appendKeySegment(id).appendEntitySetSegment("Info");
-
- final ODataEntityRequest<ODataEntity> req = client.getRetrieveRequestFactory().getEntityRequest(uriBuilder.build());
- req.setFormat(format);
- req.setContentType(contenttype);
- req.setPrefer(prefer);
- final ODataRetrieveResponse<ODataEntity> res = req.execute();
- assertEquals(200, res.getStatusCode());
- assertTrue(res.getHeader("DataServiceVersion").contains("3.0;"));
- final ODataEntity entity = res.getBody();
- assertNotNull(entity);
- for (ODataProperty prop : entity.getProperties()) {
- if ("CustomerInfoId".equals(prop.getName())) {
- assertEquals("11", prop.getValue().toString());
- }
- }
- return actual;
- }
-
- // create a navigation link
- public ODataEntity createNav(final String url, final ODataPubFormat format, final ODataEntity original,
- final String entitySetName, final String contentType, final String prefer) {
- final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(url);
- uriBuilder.appendEntitySetSegment(entitySetName);
- final ODataEntityCreateRequest<ODataEntity> createReq =
- client.getCUDRequestFactory().getEntityCreateRequest(uriBuilder.build(), original);
- createReq.setFormat(format);
- createReq.setContentType(contentType);
- createReq.setPrefer(prefer);
- final ODataEntityCreateResponse<ODataEntity> createRes = createReq.execute();
- assertEquals(201, createRes.getStatusCode());
-
- assertEquals("Created", createRes.getStatusMessage());
-
- final ODataEntity created = createRes.getBody();
- assertNotNull(created);
- return created;
- }
- // create collection navigation link
-
- public ODataEntity createCollectionNavigation(final ODataPubFormat format, final int id,
- final String contentType, final String prefer) throws EdmPrimitiveTypeException {
- {
- final String name = "Collection Navigation Key Customer";
- final ODataEntity original = getNewCustomer(id, name, false);
-
- final Set<Integer> navigationKeys = new HashSet<Integer>();
- navigationKeys.add(-118);
- navigationKeys.add(-119);
-
- for (Integer key : navigationKeys) {
- final ODataEntity orderEntity =
- client.getObjectFactory().newEntity("Microsoft.Test.OData.Services.AstoriaDefaultService.Order");
-
- getClient().getBinder().add(orderEntity,
- client.getObjectFactory().newPrimitiveProperty("OrderId",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue(key).
- setType(EdmPrimitiveTypeKind.Int32).build()));
- getClient().getBinder().add(orderEntity,
- client.getObjectFactory().newPrimitiveProperty("CustomerId",
- client.getObjectFactory().newPrimitiveValueBuilder().setValue(id).
- setType(EdmPrimitiveTypeKind.Int32).build()));
-
- final ODataEntityCreateRequest<ODataEntity> createReq = client.getCUDRequestFactory().getEntityCreateRequest(
- client.getURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Order").build(),
- orderEntity);
- createReq.setFormat(format);
- createReq.setContentType(contentType);
- original.addLink(client.getObjectFactory().newEntitySetNavigationLink(
- "Orders",
- createReq.execute().getBody().getEditLink()));
- }
- final ODataEntity createdEntity = createNav(testStaticServiceRootURL, format, original, "Customer",
- contentType, prefer);
- final ODataEntity actualEntity =
- validateEntities(testStaticServiceRootURL, format, createdEntity, id, null, "Customer");
-
- final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(testStaticServiceRootURL);
- uriBuilder.appendEntitySetSegment("Customer").appendKeySegment(id).appendEntitySetSegment("Orders");
-
- final ODataEntitySetRequest<ODataEntitySet> req = client.getRetrieveRequestFactory().
- getEntitySetRequest(uriBuilder.build());
- req.setFormat(format);
-
- final ODataRetrieveResponse<ODataEntitySet> res = req.execute();
- assertEquals(200, res.getStatusCode());
-
- final ODataEntitySet entitySet = res.getBody();
- assertNotNull(entitySet);
-
- assertEquals(2, entitySet.getCount());
-
- for (ODataEntity entity : entitySet.getEntities()) {
- final Integer key = entity.getProperty("OrderId").getPrimitiveValue().toCastValue(Integer.class);
- final Integer customerId = entity.getProperty("CustomerId").getPrimitiveValue().toCastValue(Integer.class);
- assertTrue(navigationKeys.contains(key));
- assertEquals(Integer.valueOf(id), customerId);
- navigationKeys.remove(key);
- final ODataDeleteRequest deleteReq = client.getCUDRequestFactory().getDeleteRequest(
- URIUtils.getURI(testStaticServiceRootURL, entity.getEditLink().toASCIIString()));
-
- deleteReq.setFormat(format);
- assertEquals(204, deleteReq.execute().getStatusCode());
- }
-
- return actualEntity;
- }
- }
- // get a Customer entity to be created
-
- public ODataEntity getNewCustomer(
- final int id, final String name, final boolean withInlineInfo) {
-
- final ODataEntity entity =
- client.getObjectFactory().newEntity("Microsoft.Test.OData.Services.AstoriaDefaultService.Customer");
-
- // add name attribute
- getClient().getBinder().add(entity,
- client.getObjectFactory().newPrimitiveProperty("Name",
- client.getObjectFactory().newPrimitiveValueBuilder().setText(name).
- setType(EdmPrimitiveTypeKind.String).build()));
-
- // add key attribute
- if (id != 0) {
- getClient().getBinder().add(entity,
- client.getObjectFactory().newPrimitiveProperty("CustomerId",
- client.getObjectFactory().newPrimitiveValueBuilder().setText(String.valueOf(id)).
- setType(EdmPrimitiveTypeKind.Int32).build()));
- }
- final ODataCollectionValue<ODataValue> backupContactInfoValue = getClient().getObjectFactory().newCollectionValue(
- "Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)");
-
- final ODataComplexValue<ODataProperty> contactDetails = getClient().getObjectFactory().newComplexValue(
- "Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails");
-
- final ODataCollectionValue<ODataValue> altNamesValue = getClient().getObjectFactory().
- newCollectionValue("Collection(Edm.String)");
- altNamesValue.add(client.getObjectFactory().newPrimitiveValueBuilder().
- setText("My Alternative name").setType(EdmPrimitiveTypeKind.String).build());
- contactDetails.add(client.getObjectFactory().newCollectionProperty("AlternativeNames", altNamesValue));
-
- final ODataCollectionValue<ODataValue> emailBagValue = getClient().getObjectFactory().
- newCollectionValue("Collection(Edm.String)");
- emailBagValue.add(client.getObjectFactory().newPrimitiveValueBuilder().
- setText("altname@mydomain.com").setType(EdmPrimitiveTypeKind.String).build());
- contactDetails.add(client.getObjectFactory().newCollectionProperty("EmailBag", emailBagValue));
-
- final ODataComplexValue<ODataProperty> contactAliasValue = getClient().getObjectFactory().newComplexValue(
- "Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases");
- contactDetails.add(client.getObjectFactory().newComplexProperty("ContactAlias", contactAliasValue));
-
- final ODataCollectionValue<ODataValue> aliasAltNamesValue = getClient().getObjectFactory().
- newCollectionValue("Collection(Edm.String)");
- aliasAltNamesValue.add(client.getObjectFactory().newPrimitiveValueBuilder().
- setText("myAlternativeName").setType(EdmPrimitiveTypeKind.String).build());
- contactAliasValue.add(client.getObjectFactory().newCollectionProperty("AlternativeNames", aliasAltNamesValue));
-
- final ODataComplexValue<ODataProperty> homePhone = getClient().getObjectFactory().newComplexValue(
- "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone");
- homePhone.add(client.getObjectFactory().newPrimitiveProperty("PhoneNumber",
- client.getObjectFactory().newPrimitiveValueBuilder().setText("8437568356834568").
- setType(EdmPrimitiveTypeKind.String).build()));
- homePhone.add(client.getObjectFactory().newPrimitiveProperty("Extension",
- client.getObjectFactory().newPrimitiveValueBuilder().setText("124365426534621534423ttrf").
- setType(EdmPrimitiveTypeKind.String).
- build()));
- contactDetails.add(client.getObjectFactory().newComplexProperty("HomePhone", homePhone));
-
- backupContactInfoValue.add(contactDetails);
- getClient().getBinder().add(entity,
- client.getObjectFactory().newCollectionProperty("BackupContactInfo", backupContactInfoValue));
- if (withInlineInfo) {
- final ODataInlineEntity inlineInfo = client.getObjectFactory().newInlineEntity("Info", URI.create(
- "Customer(" + id
- + ")/Info"), getInfo(id, name + "_Info"));
- inlineInfo.getEntity().setMediaEntity(true);
- entity.addLink(inlineInfo);
- }
-
- return entity;
- }
- //delete an entity and associated links after creation
-
- public void delete(final ODataPubFormat format, final ODataEntity created, final boolean includeInline,
- final String baseUri) {
- final Set<URI> toBeDeleted = new HashSet<URI>();
- toBeDeleted.add(created.getEditLink());
-
- if (includeInline) {
- for (ODataLink link : created.getNavigationLinks()) {
- if (link instanceof ODataInlineEntity) {
- final CommonODataEntity inline = ((ODataInlineEntity) link).getEntity();
- if (inline.getEditLink() != null) {
- toBeDeleted.add(URIUtils.getURI(baseUri, inline.getEditLink().toASCIIString()));
- }
- }
-
- if (link instanceof ODataInlineEntitySet) {
- final CommonODataEntitySet inline = ((ODataInlineEntitySet) link).getEntitySet();
- for (CommonODataEntity entity : inline.getEntities()) {
- if (entity.getEditLink() != null) {
- toBeDeleted.add(URIUtils.getURI(baseUri, entity.getEditLink().toASCIIString()));
- }
- }
- }
- }
- }
- assertFalse(toBeDeleted.isEmpty());
-
- for (URI link : toBeDeleted) {
- final ODataDeleteRequest deleteReq = client.getCUDRequestFactory().getDeleteRequest(link);
- final ODataDeleteResponse deleteRes = deleteReq.execute();
-
- assertEquals(204, deleteRes.getStatusCode());
- assertEquals("No Content", deleteRes.getStatusMessage());
-
- deleteRes.close();
- }
- }
- // add Information property
-
- public ODataEntity getInfo(final int id, final String info) {
- final ODataEntity entity =
- client.getObjectFactory().newEntity("Microsoft.Test.OData.Services.AstoriaDefaultService.CustomerInfo");
- entity.setMediaEntity(true);
-
- getClient().getBinder().add(entity, client.getObjectFactory().newPrimitiveProperty("Information",
- client.getObjectFactory().newPrimitiveValueBuilder().setText(info).
- setType(EdmPrimitiveTypeKind.String).build()));
- return entity;
- }
- // validate newly created entities
-
- public ODataEntity validateEntities(final String serviceRootURL,
- final ODataPubFormat format,
- final ODataEntity original,
- final int actualObjectId,
- final Collection<String> expands, final String entitySetName) {
-
- final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(serviceRootURL).
- appendEntitySetSegment(entitySetName).appendKeySegment(actualObjectId);
-
- if (expands != null) {
- for (String expand : expands) {
- uriBuilder.expand(expand);
- }
- }
- final ODataEntityRequest<ODataEntity> req = client.getRetrieveRequestFactory().getEntityRequest(uriBuilder.build());
- req.setFormat(format);
-
- final ODataRetrieveResponse<ODataEntity> res = req.execute();
- assertEquals(200, res.getStatusCode());
-
- final ODataEntity actual = res.getBody();
- assertNotNull(actual);
-
- validateLinks(original.getAssociationLinks(), actual.getAssociationLinks());
- validateLinks(original.getEditMediaLinks(), actual.getEditMediaLinks());
- validateLinks(original.getNavigationLinks(), actual.getNavigationLinks());
-
- checkProperties(original.getProperties(), actual.getProperties());
- return actual;
- }
- // compares links of the newly created entity with the previous
-
- public void validateLinks(final Collection<ODataLink> original, final Collection<ODataLink> actual) {
- assertTrue(original.size() <= actual.size());
-
- for (ODataLink originalLink : original) {
- ODataLink foundOriginal = null;
- ODataLink foundActual = null;
-
- for (ODataLink actualLink : actual) {
-
- if (actualLink.getType() == originalLink.getType()
- && (originalLink.getLink() == null
- || actualLink.getLink().toASCIIString().endsWith(originalLink.getLink().toASCIIString()))
- && actualLink.getName().equals(originalLink.getName())) {
-
- foundOriginal = originalLink;
- foundActual = actualLink;
- }
- }
-
- assertNotNull(foundOriginal);
- assertNotNull(foundActual);
-
- if (foundOriginal instanceof ODataInlineEntity && foundActual instanceof ODataInlineEntity) {
- final CommonODataEntity originalInline = ((ODataInlineEntity) foundOriginal).getEntity();
- assertNotNull(originalInline);
-
- final CommonODataEntity actualInline = ((ODataInlineEntity) foundActual).getEntity();
- assertNotNull(actualInline);
-
- checkProperties(originalInline.getProperties(), actualInline.getProperties());
- }
- }
- }
- // compares properties of the newly created entity with the properties that were originally provided
-
- @Override
- public void checkProperties(final Collection<? extends CommonODataProperty> original,
- final Collection<? extends CommonODataProperty> actual) {
-
- assertTrue(original.size() <= actual.size());
-
- final Map<String, CommonODataProperty> actualProperties = new HashMap<String, CommonODataProperty>(actual.size());
-
- for (CommonODataProperty prop : actual) {
- assertFalse(actualProperties.containsKey(prop.getName()));
- actualProperties.put(prop.getName(), prop);
- }
-
- assertTrue(actual.size() <= actualProperties.size());
-
- for (CommonODataProperty prop : original) {
- assertNotNull(prop);
- if (actualProperties.containsKey(prop.getName())) {
- final CommonODataProperty actualProp = actualProperties.get(prop.getName());
- assertNotNull(actualProp);
-
- if (prop.getValue() != null && actualProp.getValue() != null) {
- checkPropertyValue(prop.getName(), prop.getValue(), actualProp.getValue());
- }
- }
- }
- }
- // compares property value of the newly created entity with the property value that were originally provided
-
- @Override
- public void checkPropertyValue(final String propertyName,
- final ODataValue original, final ODataValue actual) {
-
- assertNotNull("Null original value for " + propertyName, original);
- assertNotNull("Null actual value for " + propertyName, actual);
-
- assertEquals("Type mismatch for '" + propertyName + "'",
- original.getClass().getSimpleName(), actual.getClass().getSimpleName());
-
- if (original.isComplex()) {
- final List<CommonODataProperty> originalPropertyValue = new ArrayList<CommonODataProperty>();
- for (CommonODataProperty prop : original.asComplex()) {
- originalPropertyValue.add(prop);
- }
-
- final List<CommonODataProperty> actualPropertyValue = new ArrayList<CommonODataProperty>();
- for (CommonODataProperty prop : actual.asComplex()) {
- actualPropertyValue.add(prop);
- }
-
- checkProperties(originalPropertyValue, actualPropertyValue);
- } else if (original.isCollection()) {
- assertTrue(original.asCollection().size() <= actual.asCollection().size());
-
- boolean found = original.asCollection().isEmpty();
-
- for (ODataValue originalValue : original.asCollection()) {
- for (ODataValue actualValue : actual.asCollection()) {
- try {
- checkPropertyValue(propertyName, originalValue, actualValue);
- found = true;
- } catch (AssertionError error) {
- }
- }
- }
-
- assertTrue("Found " + actual + " and expected " + original, found);
- } else {
- assertTrue("Primitive value for '" + propertyName + "' type mismatch",
- original.asPrimitive().getTypeKind() == actual.asPrimitive().getTypeKind());
-
- assertEquals("Primitive value for '" + propertyName + "' mismatch",
- original.asPrimitive().toString(), actual.asPrimitive().toString());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/PropertyTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/PropertyTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/PropertyTestITCase.java
index f98e12a..0204f78 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/PropertyTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/PropertyTestITCase.java
@@ -253,7 +253,7 @@ public class PropertyTestITCase extends AbstractTestITCase {
private void updateCollectionProperty(final ODataFormat format) throws IOException {
final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(getServiceRoot());
- uriBuilder.appendEntitySetSegment("Customer").appendKeySegment(-9).
+ uriBuilder.appendEntitySetSegment("Customer").appendKeySegment(-10).
appendPropertySegment("PrimaryContactInfo").appendPropertySegment("AlternativeNames");
ODataPropertyRequest<ODataProperty> retrieveReq = client.getRetrieveRequestFactory().
@@ -277,7 +277,7 @@ public class PropertyTestITCase extends AbstractTestITCase {
final ODataPropertyUpdateRequest updateReq =
client.getCUDRequestFactory().getPropertyCollectionValueUpdateRequest(uriBuilder.build(),
- alternativeNames);
+ alternativeNames);
if (client.getConfiguration().isUseXHTTPMethod()) {
assertEquals(HttpMethod.POST, updateReq.getMethod());
} else {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntityRetrieveTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntityRetrieveTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntityRetrieveTestITCase.java
index 989dd98..94e316f 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntityRetrieveTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntityRetrieveTestITCase.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
import java.net.URI;
import java.util.LinkedHashMap;
@@ -42,7 +43,7 @@ import org.apache.olingo.commons.api.domain.v4.ODataEntity;
import org.apache.olingo.commons.api.domain.v4.ODataEntitySet;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
import org.apache.olingo.commons.api.format.ODataPubFormat;
-import org.junit.Ignore;
+
import org.junit.Test;
/**
@@ -70,7 +71,13 @@ public class EntityRetrieveTestITCase extends AbstractTestITCase {
assertEquals(getServiceRoot() + "/Customers(PersonID=1)", entity.getEditLink().toASCIIString());
assertEquals(3, entity.getNavigationLinks().size());
- assertTrue(entity.getAssociationLinks().isEmpty());
+
+ if (ODataPubFormat.ATOM == format) {
+ assertTrue(entity.getAssociationLinks().isEmpty());
+ } else {
+ // In JSON, association links for each $ref link will exist.
+ assertFalse(entity.getAssociationLinks().isEmpty());
+ }
boolean found = false;
@@ -106,7 +113,6 @@ public class EntityRetrieveTestITCase extends AbstractTestITCase {
}
@Test
- @Ignore
public void withInlineEntryFromJSON() {
// this needs to be full, otherwise there is no mean to recognize links
withInlineEntry(ODataPubFormat.JSON_FULL_METADATA);
@@ -144,7 +150,6 @@ public class EntityRetrieveTestITCase extends AbstractTestITCase {
}
@Test
- @Ignore
public void withInlineFeedFromJSON() {
// this needs to be full, otherwise there is no mean to recognize links
withInlineFeed(ODataPubFormat.JSON_FULL_METADATA);
@@ -173,7 +178,6 @@ public class EntityRetrieveTestITCase extends AbstractTestITCase {
}
@Test
- @Ignore
public void rawRequestAsJSON() {
// this needs to be full, otherwise actions will not be provided
rawRequest(ODataPubFormat.JSON_FULL_METADATA);
@@ -203,7 +207,6 @@ public class EntityRetrieveTestITCase extends AbstractTestITCase {
}
@Test
- @Ignore
public void multiKeyAsJSON() throws EdmPrimitiveTypeException {
multiKey(ODataPubFormat.JSON_FULL_METADATA);
}
@@ -214,7 +217,6 @@ public class EntityRetrieveTestITCase extends AbstractTestITCase {
}
@Test
- @Ignore
public void checkForETagAsJSON() {
checkForETag(ODataPubFormat.JSON_FULL_METADATA);
}
@@ -237,9 +239,8 @@ public class EntityRetrieveTestITCase extends AbstractTestITCase {
}
@Test(expected = IllegalArgumentException.class)
- @Ignore
public void issue99() {
- final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(getServiceRoot()).appendEntitySetSegment("Car");
+ final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(getServiceRoot()).appendEntitySetSegment("Orders");
final ODataEntityRequest<ODataEntity> req = client.getRetrieveRequestFactory().getEntityRequest(uriBuilder.build());
req.setFormat(ODataPubFormat.JSON);
@@ -255,7 +256,6 @@ public class EntityRetrieveTestITCase extends AbstractTestITCase {
}
@Test
- @Ignore
public void retrieveEntityViaReferenceAsJSON() {
retrieveEntityViaReference(ODataPubFormat.JSON_FULL_METADATA);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntitySetTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntitySetTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntitySetTestITCase.java
index bc0905c..c120415 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntitySetTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntitySetTestITCase.java
@@ -36,7 +36,6 @@ import org.apache.olingo.commons.api.domain.CommonODataEntitySet;
import org.apache.olingo.commons.api.domain.v4.ODataEntity;
import org.apache.olingo.commons.api.domain.v4.ODataEntitySet;
import org.apache.olingo.commons.api.format.ODataPubFormat;
-import org.junit.Ignore;
import org.junit.Test;
/**
@@ -54,7 +53,6 @@ public class EntitySetTestITCase extends AbstractTestITCase {
}
@Test
- @Ignore
public void rawRequestAsJSON() throws IOException {
rawRequest(ODataPubFormat.JSON);
}
@@ -65,19 +63,16 @@ public class EntitySetTestITCase extends AbstractTestITCase {
}
@Test
- @Ignore
public void readODataEntitySetIteratorFromJSON() {
readODataEntitySetIterator(ODataPubFormat.JSON);
}
@Test
- @Ignore
public void readODataEntitySetIteratorFromJSONFullMeta() {
readODataEntitySetIterator(ODataPubFormat.JSON_FULL_METADATA);
}
@Test
- @Ignore
public void readODataEntitySetIteratorFromJSONNoMeta() {
readODataEntitySetIterator(ODataPubFormat.JSON_NO_METADATA);
}
@@ -88,7 +83,6 @@ public class EntitySetTestITCase extends AbstractTestITCase {
}
@Test
- @Ignore
public void readODataEntitySetWithNextFromJSON() {
readEntitySetWithNextLink(ODataPubFormat.JSON_FULL_METADATA);
}
@@ -126,7 +120,7 @@ public class EntitySetTestITCase extends AbstractTestITCase {
req.setFormat(format);
final ODataRetrieveResponse<ODataEntitySetIterator<ODataEntitySet, ODataEntity>> res = req.execute();
- final ODataEntitySetIterator feedIterator = res.getBody();
+ final ODataEntitySetIterator<ODataEntitySet, ODataEntity> feedIterator = res.getBody();
assertNotNull(feedIterator);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/ServiceDocumentTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/ServiceDocumentTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/ServiceDocumentTestITCase.java
index 7a28ed1..133c929 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/ServiceDocumentTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/ServiceDocumentTestITCase.java
@@ -26,7 +26,6 @@ import org.apache.olingo.client.api.communication.request.retrieve.ODataServiceD
import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
import org.apache.olingo.commons.api.domain.ODataServiceDocument;
import org.apache.olingo.commons.api.format.ODataFormat;
-import org.junit.Ignore;
import org.junit.Test;
public class ServiceDocumentTestITCase extends AbstractTestITCase {
@@ -40,9 +39,9 @@ public class ServiceDocumentTestITCase extends AbstractTestITCase {
assertEquals(200, res.getStatusCode());
final ODataServiceDocument serviceDocument = res.getBody();
- assertEquals(12, serviceDocument.getEntitySetTitles().size());
- assertEquals(6, serviceDocument.getSingletonTitles().size());
- assertEquals(6, serviceDocument.getFunctionImportTitles().size());
+ assertEquals(12, serviceDocument.getEntitySets().size());
+ assertEquals(6, serviceDocument.getSingletons().size());
+ assertEquals(6, serviceDocument.getFunctionImports().size());
assertTrue(res.getContextURL().toASCIIString().endsWith("/StaticService/V40/Static.svc/$metadata"));
assertEquals(URI.create(testStaticServiceRootURL + "/ProductDetails"),
@@ -59,7 +58,6 @@ public class ServiceDocumentTestITCase extends AbstractTestITCase {
}
@Test
- @Ignore
public void retrieveServiceDocumentAsJSON() {
retrieveServiceDocument(ODataFormat.JSON);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/ServiceDocumentTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/ServiceDocumentTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/ServiceDocumentTest.java
index 4dc4fae..08067ab 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/ServiceDocumentTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/ServiceDocumentTest.java
@@ -23,11 +23,13 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.net.URI;
+import org.apache.olingo.client.api.data.ServiceDocument;
import org.apache.olingo.client.api.v4.ODataClient;
import org.apache.olingo.commons.api.domain.ODataServiceDocument;
import org.apache.olingo.commons.api.format.ODataFormat;
import org.apache.olingo.client.core.AbstractTest;
+import org.apache.olingo.commons.api.data.Container;
import org.junit.Test;
public class ServiceDocumentTest extends AbstractTest {
@@ -42,13 +44,18 @@ public class ServiceDocumentTest extends AbstractTest {
}
private ODataServiceDocument parse(final ODataFormat format) {
- final ODataServiceDocument serviceDocument = getClient().getReader().readServiceDocument(
+ Container<ServiceDocument> service = getClient().getDeserializer().toServiceDocument(
getClass().getResourceAsStream("serviceDocument." + getFileExtension(format)), format);
+
+ assertEquals(URI.create("http://host/service/$metadata"), service.getContextURL());
+ assertEquals("W/\"MjAxMy0wNS0xM1QxNDo1NFo=\"", service.getMetadataETag());
+
+ final ODataServiceDocument serviceDocument = getClient().getBinder().getODataServiceDocument(service.getObject());
assertNotNull(serviceDocument);
- assertEquals(URI.create("http://host/service/$metadata"), serviceDocument.getMetadataContext());
+
assertTrue(serviceDocument.getEntitySetTitles().contains("Order Details"));
assertEquals(URI.create("http://host/service/TopProducts"),
- serviceDocument.getFunctionImportURI("Best-Selling Products"));
+ serviceDocument.getFunctionImportURI("TopProducts"));
assertEquals(URI.create("http://host/HR/"),
serviceDocument.getRelatedServiceDocumentsURIs().iterator().next());
@@ -63,6 +70,5 @@ public class ServiceDocumentTest extends AbstractTest {
@Test
public void xml() {
final ODataServiceDocument serviceDocument = parse(ODataFormat.XML);
- assertEquals("W/\"MjAxMy0wNS0xM1QxNDo1NFo=\"", serviceDocument.getMetadataETag());
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/client-core/src/test/resources/org/apache/olingo/client/core/v4/serviceDocument.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v4/serviceDocument.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v4/serviceDocument.json
index 2e7f066..a51cd30 100644
--- a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v4/serviceDocument.json
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v4/serviceDocument.json
@@ -1,5 +1,6 @@
{
"@odata.context": "http://host/service/$metadata",
+ "@odata.metadataEtag": "W/\"MjAxMy0wNS0xM1QxNDo1NFo=\"",
"value": [
{
"name": "Orders",
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataServiceDocument.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataServiceDocument.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataServiceDocument.java
index 13f807b..281bd18 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataServiceDocument.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataServiceDocument.java
@@ -25,10 +25,6 @@ import java.util.Map;
public class ODataServiceDocument {
- private URI metadataContext;
-
- private String metadataETag;
-
private final Map<String, URI> entitySets = new HashMap<String, URI>();
private final Map<String, URI> functionImports = new HashMap<String, URI>();
@@ -37,22 +33,6 @@ public class ODataServiceDocument {
private final Map<String, URI> relatedServiceDocuments = new HashMap<String, URI>();
- public URI getMetadataContext() {
- return metadataContext;
- }
-
- public void setMetadataContext(final URI metadataContext) {
- this.metadataContext = metadataContext;
- }
-
- public String getMetadataETag() {
- return metadataETag;
- }
-
- public void setMetadataETag(final String metadataETag) {
- this.metadataETag = metadataETag;
- }
-
public Map<String, URI> getEntitySets() {
return entitySets;
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractJsonDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractJsonDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractJsonDeserializer.java
index 4ba9671..6731259 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractJsonDeserializer.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractJsonDeserializer.java
@@ -25,12 +25,13 @@ import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.apache.olingo.commons.api.data.CollectionValue;
import org.apache.olingo.commons.api.data.ComplexValue;
+import org.apache.olingo.commons.api.data.Container;
import org.apache.olingo.commons.api.data.Value;
import org.apache.olingo.commons.api.domain.ODataPropertyType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.core.edm.EdmTypeInfo;
-abstract class AbstractJsonDeserializer<T> extends ODataJacksonDeserializer<T> {
+abstract class AbstractJsonDeserializer<T> extends ODataJacksonDeserializer<Container<T>> {
private JSONGeoValueDeserializer geoDeserializer;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntryDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntryDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntryDeserializer.java
index ef3eaf1..8abd3f3 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntryDeserializer.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntryDeserializer.java
@@ -22,6 +22,7 @@ import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.ObjectCodec;
+import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
@@ -33,6 +34,7 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.apache.olingo.commons.api.Constants;
+import org.apache.olingo.commons.api.data.Container;
import org.apache.olingo.commons.api.data.Link;
import org.apache.olingo.commons.api.domain.ODataLinkType;
import org.apache.olingo.commons.api.domain.ODataOperation;
@@ -58,7 +60,10 @@ public class JSONEntryDeserializer extends AbstractJsonDeserializer<JSONEntryImp
if (inline instanceof ObjectNode) {
link.setType(ODataLinkType.ENTITY_NAVIGATION.toString());
- link.setInlineEntry(inline.traverse(codec).readValuesAs(JSONEntryImpl.class).next());
+
+ link.setInlineEntry(inline.traverse(codec).<Container<JSONEntryImpl>>readValueAs(
+ new TypeReference<JSONEntryImpl>() {
+ }).getObject());
}
if (inline instanceof ArrayNode) {
@@ -67,7 +72,9 @@ public class JSONEntryDeserializer extends AbstractJsonDeserializer<JSONEntryImp
final JSONFeedImpl feed = new JSONFeedImpl();
final Iterator<JsonNode> entries = ((ArrayNode) inline).elements();
while (entries.hasNext()) {
- feed.getEntries().add(entries.next().traverse(codec).readValuesAs(JSONEntryImpl.class).next());
+ feed.getEntries().add(entries.next().traverse(codec).<Container<JSONEntryImpl>>readValuesAs(
+ new TypeReference<JSONEntryImpl>() {
+ }).next().getObject());
}
link.setInlineFeed(feed);
@@ -77,7 +84,7 @@ public class JSONEntryDeserializer extends AbstractJsonDeserializer<JSONEntryImp
}
@Override
- protected JSONEntryImpl doDeserialize(final JsonParser parser, final DeserializationContext ctxt)
+ protected Container<JSONEntryImpl> doDeserialize(final JsonParser parser, final DeserializationContext ctxt)
throws IOException, JsonProcessingException {
final ObjectNode tree = (ObjectNode) parser.getCodec().readTree(parser);
@@ -86,18 +93,30 @@ public class JSONEntryDeserializer extends AbstractJsonDeserializer<JSONEntryImp
throw new JsonParseException("Expected OData Entity, found EntitySet", parser.getCurrentLocation());
}
+ final String metadataETag;
+ final URI contextURL;
final JSONEntryImpl entry = new JSONEntryImpl();
- String contextURL = null;
+ if (tree.hasNonNull(Constants.JSON_METADATA_ETAG)) {
+ metadataETag = tree.get(Constants.JSON_METADATA_ETAG).textValue();
+ tree.remove(Constants.JSON_METADATA_ETAG);
+ } else {
+ metadataETag = null;
+ }
+
if (tree.hasNonNull(Constants.JSON_CONTEXT)) {
- contextURL = tree.get(Constants.JSON_CONTEXT).textValue();
+ contextURL = URI.create(tree.get(Constants.JSON_CONTEXT).textValue());
tree.remove(Constants.JSON_CONTEXT);
} else if (tree.hasNonNull(Constants.JSON_METADATA)) {
- contextURL = tree.get(Constants.JSON_METADATA).textValue();
+ contextURL = URI.create(tree.get(Constants.JSON_METADATA).textValue());
tree.remove(Constants.JSON_METADATA);
+ } else {
+ contextURL = null;
}
+
if (contextURL != null) {
- entry.setBaseURI(contextURL.substring(0, contextURL.indexOf(Constants.METADATA)));
+ String url = contextURL.toASCIIString();
+ entry.setBaseURI(url.substring(0, url.indexOf(Constants.METADATA)));
}
if (tree.hasNonNull(jsonETag)) {
@@ -237,6 +256,6 @@ public class JSONEntryDeserializer extends AbstractJsonDeserializer<JSONEntryImp
}
}
- return entry;
+ return new Container<JSONEntryImpl>(contextURL, metadataETag, entry);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONFeedDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONFeedDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONFeedDeserializer.java
index d278a34..3c180b9 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONFeedDeserializer.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONFeedDeserializer.java
@@ -20,6 +20,7 @@ package org.apache.olingo.commons.core.data;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -27,6 +28,7 @@ import java.io.IOException;
import java.net.URI;
import java.util.Iterator;
import org.apache.olingo.commons.api.Constants;
+import org.apache.olingo.commons.api.data.Container;
/**
* Reads JSON string into a feed.
@@ -36,7 +38,7 @@ import org.apache.olingo.commons.api.Constants;
public class JSONFeedDeserializer extends AbstractJsonDeserializer<JSONFeedImpl> {
@Override
- protected JSONFeedImpl doDeserialize(final JsonParser parser, final DeserializationContext ctxt)
+ protected Container<JSONFeedImpl> doDeserialize(final JsonParser parser, final DeserializationContext ctxt)
throws IOException, JsonProcessingException {
final ObjectNode tree = (ObjectNode) parser.getCodec().readTree(parser);
@@ -45,16 +47,29 @@ public class JSONFeedDeserializer extends AbstractJsonDeserializer<JSONFeedImpl>
return null;
}
+ final String metadataETag;
+ final URI contextURL;
final JSONFeedImpl feed = new JSONFeedImpl();
+ if (tree.hasNonNull(Constants.JSON_METADATA_ETAG)) {
+ metadataETag = tree.get(Constants.JSON_METADATA_ETAG).textValue();
+ tree.remove(Constants.JSON_METADATA_ETAG);
+ } else {
+ metadataETag = null;
+ }
+
if (tree.hasNonNull(Constants.JSON_CONTEXT)) {
- feed.setContextURL(URI.create(tree.get(Constants.JSON_CONTEXT).textValue()));
+ contextURL = URI.create(tree.get(Constants.JSON_CONTEXT).textValue());
tree.remove(Constants.JSON_CONTEXT);
} else if (tree.hasNonNull(Constants.JSON_METADATA)) {
- feed.setContextURL(URI.create(tree.get(Constants.JSON_METADATA).textValue()));
+ contextURL = URI.create(tree.get(Constants.JSON_METADATA).textValue());
tree.remove(Constants.JSON_METADATA);
+ } else {
+ contextURL = null;
}
+ feed.setMetadataContextURL(contextURL);
+
if (tree.hasNonNull(Constants.JSON_COUNT)) {
feed.setCount(tree.get(Constants.JSON_COUNT).asInt());
}
@@ -64,10 +79,13 @@ public class JSONFeedDeserializer extends AbstractJsonDeserializer<JSONFeedImpl>
if (tree.hasNonNull(Constants.VALUE)) {
for (final Iterator<JsonNode> itor = tree.get(Constants.VALUE).iterator(); itor.hasNext();) {
- feed.getEntries().add(itor.next().traverse(parser.getCodec()).readValueAs(JSONEntryImpl.class));
+ feed.getEntries().add(
+ itor.next().traverse(parser.getCodec()).<Container<JSONEntryImpl>>readValueAs(
+ new TypeReference<JSONEntryImpl>() {
+ }).getObject());
}
}
- return feed;
+ return new Container<JSONFeedImpl>(contextURL, metadataETag, feed);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONFeedImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONFeedImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONFeedImpl.java
index 8994e88..0a4db73 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONFeedImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONFeedImpl.java
@@ -38,7 +38,7 @@ public class JSONFeedImpl extends AbstractPayloadObject implements Feed {
private static final long serialVersionUID = -3576372289800799417L;
- private URI contextURL;
+ private URI metadataContextURL;
private String id;
@@ -51,16 +51,16 @@ public class JSONFeedImpl extends AbstractPayloadObject implements Feed {
@Override
public URI getBaseURI() {
URI baseURI = null;
- if (contextURL != null) {
- final String metadataURI = contextURL.toASCIIString();
+ if (metadataContextURL != null) {
+ final String metadataURI = metadataContextURL.toASCIIString();
baseURI = URI.create(metadataURI.substring(0, metadataURI.indexOf(Constants.METADATA)));
}
return baseURI;
}
- public void setContextURL(final URI context) {
- this.contextURL = context;
+ public void setMetadataContextURL(final URI metadataContextURL) {
+ this.metadataContextURL = metadataContextURL;
}
@Override
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDeserializer.java
index f033de1..de3ffa1 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDeserializer.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONODataErrorDeserializer.java
@@ -25,11 +25,12 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;
import org.apache.olingo.commons.api.Constants;
+import org.apache.olingo.commons.api.data.Container;
public class JSONODataErrorDeserializer extends AbstractJsonDeserializer<JSONODataErrorImpl> {
@Override
- protected JSONODataErrorImpl doDeserialize(final JsonParser parser, final DeserializationContext ctxt)
+ protected Container<JSONODataErrorImpl> doDeserialize(final JsonParser parser, final DeserializationContext ctxt)
throws IOException, JsonProcessingException {
final JSONODataErrorImpl error = new JSONODataErrorImpl();
@@ -54,7 +55,6 @@ public class JSONODataErrorDeserializer extends AbstractJsonDeserializer<JSONODa
}
}
- return error;
+ return new Container<JSONODataErrorImpl>(null, null, error);
}
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONPropertyDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONPropertyDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONPropertyDeserializer.java
index 737ed53..381b6d4 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONPropertyDeserializer.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONPropertyDeserializer.java
@@ -23,8 +23,10 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;
+import java.net.URI;
import org.apache.commons.lang3.StringUtils;
import org.apache.olingo.commons.api.Constants;
+import org.apache.olingo.commons.api.data.Container;
/**
* Parse JSON string into <tt>JSONPropertyImpl</tt>.
@@ -34,27 +36,35 @@ import org.apache.olingo.commons.api.Constants;
public class JSONPropertyDeserializer extends AbstractJsonDeserializer<JSONPropertyImpl> {
@Override
- protected JSONPropertyImpl doDeserialize(final JsonParser parser, final DeserializationContext ctxt)
+ protected Container<JSONPropertyImpl> doDeserialize(final JsonParser parser, final DeserializationContext ctxt)
throws IOException, JsonProcessingException {
final ObjectNode tree = (ObjectNode) parser.getCodec().readTree(parser);
+ final String metadataETag;
+ final URI contextURL;
final JSONPropertyImpl property = new JSONPropertyImpl();
+ if (tree.hasNonNull(Constants.JSON_METADATA_ETAG)) {
+ metadataETag = tree.get(Constants.JSON_METADATA_ETAG).textValue();
+ tree.remove(Constants.JSON_METADATA_ETAG);
+ } else {
+ metadataETag = null;
+ }
+
if (tree.hasNonNull(Constants.JSON_CONTEXT)) {
- final String contextURL = tree.get(Constants.JSON_CONTEXT).textValue();
- property.setName(StringUtils.substringAfterLast(contextURL, "/"));
+ contextURL = URI.create(tree.get(Constants.JSON_CONTEXT).textValue());
+ property.setName(StringUtils.substringAfterLast(contextURL.toASCIIString(), "/"));
tree.remove(Constants.JSON_CONTEXT);
} else if (tree.hasNonNull(Constants.JSON_METADATA)) {
- final String metadata = tree.get(Constants.JSON_METADATA).textValue();
- final int dashIdx = metadata.lastIndexOf('#');
- if (dashIdx != -1) {
- property.setType(metadata.substring(dashIdx + 1));
- }
+ contextURL = URI.create(tree.get(Constants.JSON_METADATA).textValue());
+ property.setType(StringUtils.substringAfterLast(contextURL.toASCIIString(), "#"));
tree.remove(Constants.JSON_METADATA);
+ } else {
+ contextURL = null;
}
- if (tree.has(jsonType) && property.getType() == null) {
+ if (tree.has(jsonType)) {
property.setType(tree.get(jsonType).asText());
}
@@ -66,6 +76,6 @@ public class JSONPropertyDeserializer extends AbstractJsonDeserializer<JSONPrope
value(property, tree.has(Constants.VALUE) ? tree.get(Constants.VALUE) : tree);
}
- return property;
+ return new Container<JSONPropertyImpl>(contextURL, metadataETag, property);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmGeographyMultiPoint.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmGeographyMultiPoint.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmGeographyMultiPoint.java
index 9249055..c393bb5 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmGeographyMultiPoint.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmGeographyMultiPoint.java
@@ -22,7 +22,6 @@ import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
import org.apache.olingo.commons.api.edm.geo.Geospatial.Dimension;
import org.apache.olingo.commons.api.edm.geo.Geospatial.Type;
import org.apache.olingo.commons.api.edm.geo.MultiPoint;
-import org.apache.olingo.commons.api.edm.geo.Point;
public final class EdmGeographyMultiPoint extends AbstractGeospatialType<MultiPoint> {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmGeometryCollection.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmGeometryCollection.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmGeometryCollection.java
index 3c5a0e2..3000e84 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmGeometryCollection.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmGeometryCollection.java
@@ -22,7 +22,6 @@ import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
import org.apache.olingo.commons.api.edm.geo.Geospatial.Dimension;
import org.apache.olingo.commons.api.edm.geo.Geospatial.Type;
import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
-import org.apache.olingo.commons.api.edm.geo.Point;
public final class EdmGeometryCollection extends AbstractGeospatialType<GeospatialCollection> {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c73772f0/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java
index 616766b..96043c7 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java
@@ -18,9 +18,11 @@
*/
package org.apache.olingo.commons.core.op;
+import com.fasterxml.jackson.core.type.TypeReference;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
+import java.lang.reflect.Type;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLOutputFactory;
@@ -101,10 +103,9 @@ public abstract class AbstractODataDeserializer extends AbstractJacksonTool impl
writer.flush();
writer.close();
- return (Container<T>) atomDeserializer.getContainer(
- start, getXmlMapper().readValue(new ByteArrayInputStream(baos.toByteArray()), reference));
+ final V obj = getXmlMapper().readValue(new ByteArrayInputStream(baos.toByteArray()), reference);
+ return (Container<T>) (obj instanceof Container ? obj : atomDeserializer.getContainer(start, obj));
} catch (Exception e) {
- e.printStackTrace();
throw new IllegalArgumentException("While deserializing " + reference.getName(), e);
}
}
@@ -119,7 +120,14 @@ public abstract class AbstractODataDeserializer extends AbstractJacksonTool impl
protected <T, V extends T> Container<T> json(final InputStream input, final Class<V> reference) {
try {
- return new Container<T>(null, null, getObjectMapper().readValue(input, reference));
+ T obj = getObjectMapper().readValue(input, new TypeReference<V>() {
+ @Override
+ public Type getType() {
+ return reference;
+ }
+ });
+
+ return obj instanceof Container ? (Container<T>) obj : new Container<T>(null, null, obj);
} catch (Exception e) {
throw new IllegalArgumentException("While deserializing " + reference.getName(), e);
}