You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2014/06/13 12:58:29 UTC
[09/21] git commit: [OLINGO-317] First presentable state
[OLINGO-317] First presentable state
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/46a34178
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/46a34178
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/46a34178
Branch: refs/heads/master
Commit: 46a34178253d4a9d106d4d728f8ad812db05592a
Parents: 0e84b4c
Author: mibo <mi...@mirb.de>
Authored: Mon Jun 9 14:43:34 2014 +0200
Committer: mibo <mi...@mirb.de>
Committed: Mon Jun 9 14:43:34 2014 +0200
----------------------------------------------------------------------
.gitignore | 3 +-
.../org/apache/olingo/fit/AbstractServices.java | 208 +++---
.../java/org/apache/olingo/fit/V4Services.java | 694 +++++++++----------
.../fit/serializer/JSONEntryContainer.java | 36 -
.../fit/serializer/JSONFeedContainer.java | 36 -
.../fit/serializer/JSONPropertyContainer.java | 36 -
.../olingo/fit/utils/AbstractUtilities.java | 367 +++++-----
.../org/apache/olingo/fit/utils/Commons.java | 65 +-
.../org/apache/olingo/fit/utils/DataBinder.java | 347 ----------
.../org/apache/olingo/fit/utils/FSManager.java | 50 +-
.../apache/olingo/fit/utils/JSONUtilities.java | 27 +-
.../olingo/fit/AbstractBaseTestITCase.java | 22 +-
.../fit/proxy/v4/MediaEntityTestITCase.java | 9 +-
.../NonTransactionalMediaEntityTestITCase.java | 3 +-
.../olingo/fit/v3/EntityRetrieveTestITCase.java | 7 +-
.../olingo/fit/v3/EntitySetTestITCase.java | 4 +-
.../fit/v4/JSONFormatConformanceTestITCase.java | 13 +-
.../olingo/client/api/CommonODataClient.java | 11 +-
.../api/domain/ODataEntitySetIterator.java | 20 +-
.../client/api/op/ClientODataDeserializer.java | 11 +-
.../olingo/client/api/op/CommonODataBinder.java | 19 +-
.../olingo/client/api/op/CommonODataReader.java | 27 +-
.../olingo/client/api/op/ODataWriter.java | 23 +-
.../client/api/op/v3/ODataDeserializer.java | 8 +-
.../olingo/client/api/op/v3/ODataReader.java | 11 +-
.../client/api/op/v4/ODataDeserializer.java | 6 +-
.../olingo/client/api/op/v4/ODataReader.java | 8 +-
.../olingo/client/api/v3/ODataClient.java | 3 +-
.../olingo/client/api/v4/ODataClient.java | 3 +-
.../communication/request/AbstractRequest.java | 58 +-
.../cud/ODataEntityCreateRequestImpl.java | 16 +-
.../cud/ODataEntityUpdateRequestImpl.java | 31 +-
.../cud/ODataPropertyUpdateRequestImpl.java | 27 +-
.../cud/v3/ODataLinkCreateRequestImpl.java | 14 +-
.../cud/v3/ODataLinkUpdateRequestImpl.java | 17 +-
.../invoke/AbstractODataInvokeRequest.java | 11 +-
.../retrieve/ODataEntityRequestImpl.java | 9 +-
.../retrieve/ODataEntitySetRequestImpl.java | 11 +-
.../retrieve/ODataPropertyRequestImpl.java | 8 +-
.../request/retrieve/ODataRawRequestImpl.java | 13 +-
.../ODataServiceDocumentRequestImpl.java | 17 +-
.../v3/ODataLinkCollectionRequestImpl.java | 7 +-
.../retrieve/v3/XMLMetadataRequestImpl.java | 5 +-
.../retrieve/v4/ODataDeltaRequestImpl.java | 11 +-
.../retrieve/v4/XMLMetadataRequestImpl.java | 4 +-
.../ODataMediaEntityCreateRequestImpl.java | 11 +-
.../ODataMediaEntityUpdateRequestImpl.java | 7 +-
.../core/data/AbstractServiceDocument.java | 139 ----
.../data/JSONServiceDocumentDeserializer.java | 43 +-
.../client/core/data/ServiceDocumentImpl.java | 141 ++++
.../data/XMLServiceDocumentDeserializer.java | 52 +-
.../core/data/v3/JSONServiceDocumentImpl.java | 35 -
.../core/data/v3/XMLServiceDocumentImpl.java | 30 -
.../core/data/v4/AbstractServiceDocument.java | 49 --
.../core/data/v4/JSONServiceDocumentImpl.java | 28 -
.../core/data/v4/XMLServiceDocumentImpl.java | 28 -
.../client/core/op/AbstractODataBinder.java | 148 ++--
.../client/core/op/AbstractODataReader.java | 32 +-
.../olingo/client/core/op/ODataWriterImpl.java | 55 +-
.../client/core/op/impl/v3/ODataBinderImpl.java | 12 +-
.../core/op/impl/v3/ODataDeserializerImpl.java | 44 +-
.../client/core/op/impl/v3/ODataReaderImpl.java | 28 +-
.../core/op/impl/v3/ODataSerializerImpl.java | 32 -
.../client/core/op/impl/v4/ODataBinderImpl.java | 51 +-
.../core/op/impl/v4/ODataDeserializerImpl.java | 45 +-
.../client/core/op/impl/v4/ODataReaderImpl.java | 19 +-
.../core/op/impl/v4/ODataSerializerImpl.java | 32 -
.../olingo/client/core/v3/ODataClientImpl.java | 35 +-
.../olingo/client/core/v4/ODataClientImpl.java | 33 +-
.../apache/olingo/client/core/v3/AtomTest.java | 15 +-
.../olingo/client/core/v3/EntitySetTest.java | 18 +-
.../olingo/client/core/v3/EntityTest.java | 59 +-
.../apache/olingo/client/core/v3/ErrorTest.java | 19 +-
.../olingo/client/core/v3/MetadataTest.java | 5 +-
.../olingo/client/core/v3/PropertyTest.java | 23 +-
.../client/core/v3/ServiceDocumentTest.java | 7 +-
.../olingo/client/core/v4/EntitySetTest.java | 25 +-
.../olingo/client/core/v4/EntityTest.java | 101 ++-
.../apache/olingo/client/core/v4/ErrorTest.java | 13 +-
.../apache/olingo/client/core/v4/JSONTest.java | 45 +-
.../olingo/client/core/v4/MetadataTest.java | 13 +-
.../olingo/client/core/v4/PropertyTest.java | 31 +-
.../client/core/v4/ServiceDocumentTest.java | 12 +-
.../commons/api/op/CommonODataDeserializer.java | 71 --
.../commons/api/op/ODataDeserializer.java | 65 ++
.../api/op/ODataDeserializerException.java | 38 +
.../olingo/commons/api/op/ODataSerializer.java | 79 +--
.../api/op/ODataSerializerException.java | 38 +
.../commons/core/data/AbstractEntity.java | 193 ------
.../commons/core/data/AbstractEntitySet.java | 74 --
.../core/data/AbstractJsonDeserializer.java | 372 ----------
.../core/data/AbstractJsonSerializer.java | 248 -------
.../commons/core/data/AbstractODataError.java | 89 ---
.../commons/core/data/AbstractProperty.java | 63 --
.../commons/core/data/AtomDeserializer.java | 259 +++----
.../commons/core/data/AtomEntityImpl.java | 25 -
.../commons/core/data/AtomEntitySetImpl.java | 28 -
.../commons/core/data/AtomPropertyImpl.java | 25 -
.../commons/core/data/AtomSerializer.java | 115 +--
.../olingo/commons/core/data/EntityImpl.java | 193 ++++++
.../olingo/commons/core/data/EntitySetImpl.java | 74 ++
.../core/data/JSONDeltaDeserializer.java | 57 +-
.../core/data/JSONEntityDeserializer.java | 29 +-
.../commons/core/data/JSONEntityImpl.java | 33 -
.../commons/core/data/JSONEntitySerializer.java | 33 +-
.../core/data/JSONEntitySetDeserializer.java | 34 +-
.../commons/core/data/JSONEntitySetImpl.java | 35 -
.../core/data/JSONEntitySetSerializer.java | 49 +-
.../core/data/JSONODataErrorDeserializer.java | 40 +-
.../data/JSONODataErrorDetailDeserializer.java | 25 +-
.../core/data/JSONODataErrorDetailImpl.java | 62 --
.../commons/core/data/JSONODataErrorImpl.java | 26 -
.../core/data/JSONPropertyDeserializer.java | 30 +-
.../commons/core/data/JSONPropertyImpl.java | 33 -
.../core/data/JSONPropertySerializer.java | 29 +-
.../commons/core/data/JsonDeserializer.java | 463 +++++++++++++
.../commons/core/data/JsonSerializer.java | 315 +++++++++
.../commons/core/data/ODataErrorDetailImpl.java | 57 ++
.../commons/core/data/ODataErrorImpl.java | 89 +++
.../core/data/ODataJacksonDeserializer.java | 98 ---
.../core/data/ODataJacksonSerializer.java | 57 --
.../olingo/commons/core/data/PropertyImpl.java | 63 ++
.../commons/core/data/XMLODataErrorImpl.java | 23 -
.../core/data/v3/LinkCollectionImpl.java | 78 +++
.../core/data/v3/XMLLinkCollectionImpl.java | 70 --
.../commons/core/data/v4/AbstractDelta.java | 52 --
.../commons/core/data/v4/AtomDeltaImpl.java | 25 -
.../olingo/commons/core/data/v4/DeltaImpl.java | 52 ++
.../commons/core/data/v4/JSONDeltaImpl.java | 29 -
.../commons/core/op/AbstractJacksonTool.java | 86 ---
.../core/op/AbstractODataDeserializer.java | 135 ++--
.../core/op/AbstractODataSerializer.java | 141 ----
.../olingo/commons/core/op/ResourceFactory.java | 125 ----
.../server/api/serializer/ODataSerializer.java | 8 +
.../apache/olingo/server/core/ODataHandler.java | 84 +++
.../core/serializer/ODataJsonSerializer.java | 104 +++
.../core/serializer/ODataXmlSerializerImpl.java | 15 +
137 files changed, 3761 insertions(+), 4823 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/46a34178/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 947434b..45f5089 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
.project
.classpath
.settings
+.idea
target
bin
*.bak
@@ -10,4 +11,4 @@ classes
*.local
nb-configuration.xml
.externalToolBuilders
-maven-eclipse.xml
\ No newline at end of file
+maven-eclipse.xml
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/46a34178/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java b/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
index 7fd0b58..71a7bf5 100644
--- a/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
+++ b/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
@@ -18,9 +18,6 @@
*/
package org.apache.olingo.fit;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -41,6 +38,7 @@ import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+
import javax.mail.Header;
import javax.mail.internet.MimeBodyPart;
import javax.ws.rs.Consumes;
@@ -61,6 +59,7 @@ import javax.ws.rs.core.MultivaluedHashMap;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
+
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
@@ -69,44 +68,45 @@ import org.apache.cxf.jaxrs.ext.multipart.Attachment;
import org.apache.cxf.jaxrs.ext.multipart.Multipart;
import org.apache.cxf.jaxrs.ext.multipart.MultipartBody;
import org.apache.olingo.commons.api.data.ComplexValue;
-import org.apache.olingo.commons.api.data.ResWrap;
import org.apache.olingo.commons.api.data.Entity;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
-import org.apache.olingo.commons.api.format.ContentType;
import org.apache.olingo.commons.api.data.EntitySet;
import org.apache.olingo.commons.api.data.Link;
import org.apache.olingo.commons.api.data.Property;
+import org.apache.olingo.commons.api.data.ResWrap;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
-import org.apache.olingo.commons.core.data.AtomEntitySetImpl;
-import org.apache.olingo.commons.core.data.LinkImpl;
-import org.apache.olingo.commons.core.data.AtomEntityImpl;
-import org.apache.olingo.commons.core.data.AtomPropertyImpl;
+import org.apache.olingo.commons.api.format.ContentType;
+import org.apache.olingo.commons.api.op.ODataDeserializer;
+import org.apache.olingo.commons.api.op.ODataSerializer;
import org.apache.olingo.commons.core.data.AtomSerializer;
-import org.apache.olingo.commons.core.data.JSONEntityImpl;
-import org.apache.olingo.commons.core.data.JSONPropertyImpl;
+import org.apache.olingo.commons.core.data.EntityImpl;
+import org.apache.olingo.commons.core.data.JsonDeserializer;
+import org.apache.olingo.commons.core.data.JsonSerializer;
+import org.apache.olingo.commons.core.data.LinkImpl;
import org.apache.olingo.commons.core.data.NullValueImpl;
import org.apache.olingo.commons.core.data.PrimitiveValueImpl;
+import org.apache.olingo.commons.core.data.PropertyImpl;
import org.apache.olingo.fit.metadata.EntityType;
+import org.apache.olingo.fit.metadata.Metadata;
import org.apache.olingo.fit.metadata.NavigationProperty;
import org.apache.olingo.fit.methods.MERGE;
import org.apache.olingo.fit.methods.PATCH;
import org.apache.olingo.fit.serializer.FITAtomDeserializer;
+import org.apache.olingo.fit.utils.AbstractUtilities;
import org.apache.olingo.fit.utils.Accept;
-import org.apache.olingo.fit.utils.FSManager;
import org.apache.olingo.fit.utils.Commons;
-import org.apache.olingo.fit.utils.JSONUtilities;
-import org.apache.olingo.fit.utils.AbstractUtilities;
-import org.apache.olingo.fit.utils.XMLUtilities;
-import org.apache.olingo.fit.utils.LinkInfo;
-import org.apache.olingo.fit.metadata.Metadata;
-import org.apache.olingo.fit.serializer.JSONFeedContainer;
-import org.apache.olingo.fit.serializer.JSONEntryContainer;
import org.apache.olingo.fit.utils.ConstantKey;
import org.apache.olingo.fit.utils.Constants;
-import org.apache.olingo.fit.utils.DataBinder;
+import org.apache.olingo.fit.utils.FSManager;
+import org.apache.olingo.fit.utils.JSONUtilities;
+import org.apache.olingo.fit.utils.LinkInfo;
+import org.apache.olingo.fit.utils.XMLUtilities;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
public abstract class AbstractServices {
/**
@@ -123,28 +123,24 @@ public abstract class AbstractServices {
protected static final String BOUNDARY = "batch_243234_25424_ef_892u748";
protected final ODataServiceVersion version;
-
protected final Metadata metadata;
- protected final FITAtomDeserializer atomDeserializer;
-
- protected final AtomSerializer atomSerializer;
-
- protected final ObjectMapper mapper;
-
- protected final DataBinder dataBinder;
+ protected final ODataDeserializer atomDeserializer;
+ protected final ODataDeserializer jsonDeserializer;
+ protected final ODataSerializer atomSerializer;
+ protected final ODataSerializer jsonSerializer;
protected final XMLUtilities xml;
-
protected final JSONUtilities json;
public AbstractServices(final ODataServiceVersion version, final Metadata metadata) throws Exception {
this.version = version;
this.metadata = metadata;
- this.atomDeserializer = Commons.getAtomDeserializer(version);
- this.atomSerializer = Commons.getAtomSerializer(version);
- this.mapper = Commons.getJSONMapper(version);
- this.dataBinder = new DataBinder(version, metadata);
+
+ atomDeserializer = new FITAtomDeserializer(version);
+ jsonDeserializer = new JsonDeserializer(version, true);
+ atomSerializer = new AtomSerializer(version, true);
+ jsonSerializer = new JsonSerializer(version, true);
this.xml = new XMLUtilities(version, metadata);
this.json = new JSONUtilities(version, metadata);
@@ -223,9 +219,9 @@ public abstract class AbstractServices {
@GET
@Path("/StoredPIs(1000)")
public Response getStoredPI(@Context UriInfo uriInfo) {
- final JSONEntityImpl entity = new JSONEntityImpl();
+ final Entity entity = new EntityImpl();
entity.setType("Microsoft.Test.OData.Services.ODataWCFService.StoredPI");
- final Property id = new JSONPropertyImpl();
+ final Property id = new PropertyImpl();
id.setType("Edm.Int32");
id.setName("StoredPIID");
id.setValue(new PrimitiveValueImpl("1000"));
@@ -239,7 +235,7 @@ public abstract class AbstractServices {
final ByteArrayOutputStream content = new ByteArrayOutputStream();
final OutputStreamWriter writer = new OutputStreamWriter(content, Constants.ENCODING);
try {
- mapper.writeValue(writer, new JSONEntryContainer(null, null, entity));
+ jsonSerializer.write(writer, new ResWrap<Entity>((URI) null, null, entity));
return xml.createResponse(new ByteArrayInputStream(content.toByteArray()), null, Accept.JSON_FULLMETA);
} catch (Exception e) {
LOG.error("While creating StoredPI", e);
@@ -261,7 +257,7 @@ public abstract class AbstractServices {
protected Response bodyPartRequest(final MimeBodyPart body, final Map<String, String> references) throws Exception {
@SuppressWarnings("unchecked")
- final Enumeration<Header> en = (Enumeration<Header>) body.getAllHeaders();
+ final Enumeration<Header> en = body.getAllHeaders();
Header header = en.nextElement();
final String request =
@@ -455,22 +451,19 @@ public abstract class AbstractServices {
final Accept contentTypeValue = Accept.parse(contentType, version);
- final AtomEntityImpl entryChanges;
+ final Entity entryChanges;
if (contentTypeValue == Accept.XML || contentTypeValue == Accept.TEXT) {
throw new UnsupportedMediaTypeException("Unsupported media type");
} else if (contentTypeValue == Accept.ATOM) {
- entryChanges = atomDeserializer.<AtomEntityImpl, AtomEntityImpl>read(
- IOUtils.toInputStream(changes, Constants.ENCODING), AtomEntityImpl.class).getPayload();
+ entryChanges = atomDeserializer.toEntity(
+ IOUtils.toInputStream(changes, Constants.ENCODING)).getPayload();
} else {
- final ResWrap<JSONEntityImpl> jcont = mapper.readValue(IOUtils.toInputStream(changes, Constants.ENCODING),
- new TypeReference<JSONEntityImpl>() {
- });
-
- entryChanges = dataBinder.toAtomEntity(jcont.getPayload());
+ final ResWrap<Entity> jcont = jsonDeserializer.toEntity(IOUtils.toInputStream(changes, Constants.ENCODING));
+ entryChanges = jcont.getPayload();
}
- final ResWrap<AtomEntityImpl> container = atomDeserializer.read(entityInfo.getValue(), AtomEntityImpl.class);
+ final ResWrap<Entity> container = atomDeserializer.toEntity(entityInfo.getValue());
for (Property property : entryChanges.getProperties()) {
final Property _property = container.getPayload().getProperty(property.getName());
@@ -494,13 +487,13 @@ public abstract class AbstractServices {
final InputStream res = xml.addOrReplaceEntity(
entityId, entitySetName, new ByteArrayInputStream(content.toByteArray()), container.getPayload());
- final ResWrap<AtomEntityImpl> cres = atomDeserializer.read(res, AtomEntityImpl.class);
+ final ResWrap<Entity> cres = atomDeserializer.toEntity(res);
normalizeAtomEntry(cres.getPayload(), entitySetName, entityId);
final String path = Commons.getEntityBasePath(entitySetName, entityId);
FSManager.instance(version).putInMemory(
- cres, path + File.separatorChar + Constants.get(version, ConstantKey.ENTITY), dataBinder);
+ cres, path + File.separatorChar + Constants.get(version, ConstantKey.ENTITY));
final Response response;
if ("return-content".equalsIgnoreCase(prefer)) {
@@ -551,19 +544,16 @@ public abstract class AbstractServices {
IOUtils.toInputStream(entity, Constants.ENCODING),
xml.readEntity(acceptType, IOUtils.toInputStream(entity, Constants.ENCODING)));
- final ResWrap<AtomEntityImpl> cres;
+ final ResWrap<Entity> cres;
if (acceptType == Accept.ATOM) {
- cres = atomDeserializer.read(res, AtomEntityImpl.class);
+ cres = atomDeserializer.toEntity(res);
} else {
- final ResWrap<JSONEntityImpl> jcont = mapper.readValue(res, new TypeReference<JSONEntityImpl>() {
- });
- cres = new ResWrap<AtomEntityImpl>(jcont.getContextURL(), jcont.getMetadataETag(),
- dataBinder.toAtomEntity(jcont.getPayload()));
+ cres = jsonDeserializer.toEntity(res);
}
final String path = Commons.getEntityBasePath(entitySetName, entityId);
FSManager.instance(version).putInMemory(
- cres, path + File.separatorChar + Constants.get(version, ConstantKey.ENTITY), dataBinder);
+ cres, path + File.separatorChar + Constants.get(version, ConstantKey.ENTITY));
final Response response;
if ("return-content".equalsIgnoreCase(prefer)) {
@@ -611,14 +601,14 @@ public abstract class AbstractServices {
throw new UnsupportedMediaTypeException("Unsupported media type");
}
- final ResWrap<AtomEntityImpl> container;
+ final ResWrap<Entity> container;
final org.apache.olingo.fit.metadata.EntitySet entitySet = metadata.getEntitySet(entitySetName);
- final AtomEntityImpl entry;
+ final Entity entry;
final String entityKey;
if (xml.isMediaContent(entitySetName)) {
- entry = new AtomEntityImpl();
+ entry = new EntityImpl();
entry.setMediaContentType(ContentType.WILDCARD);
entry.setType(entitySet.getType());
@@ -628,7 +618,7 @@ public abstract class AbstractServices {
final Pair<String, EdmPrimitiveTypeKind> id = Commons.getMediaContent().get(entitySetName);
if (id != null) {
- final AtomPropertyImpl prop = new AtomPropertyImpl();
+ final Property prop = new PropertyImpl();
prop.setName(id.getKey());
prop.setType(id.getValue().toString());
prop.setValue(new PrimitiveValueImpl(entityKey));
@@ -643,21 +633,18 @@ public abstract class AbstractServices {
entry.setMediaContentSource(URI.create(editLink.getHref() + "/$value"));
- container = new ResWrap<AtomEntityImpl>((URI) null, null, entry);
+ container = new ResWrap<Entity>((URI) null, null, entry);
} else {
final Accept contentTypeValue = Accept.parse(contentType, version);
if (Accept.ATOM == contentTypeValue) {
- container = atomDeserializer.read(IOUtils.toInputStream(entity, Constants.ENCODING), AtomEntityImpl.class);
+ container = atomDeserializer.toEntity(IOUtils.toInputStream(entity, Constants.ENCODING));
entry = container.getPayload();
} else {
- final ResWrap<JSONEntityImpl> jcontainer =
- mapper.readValue(IOUtils.toInputStream(entity, Constants.ENCODING),
- new TypeReference<JSONEntityImpl>() {
- });
-
- entry = dataBinder.toAtomEntity(jcontainer.getPayload());
+ final ResWrap<Entity> jcontainer = jsonDeserializer.toEntity(
+ IOUtils.toInputStream(entity, Constants.ENCODING));
+ entry = jcontainer.getPayload();
- container = new ResWrap<AtomEntityImpl>(
+ container = new ResWrap<Entity>(
jcontainer.getContextURL(),
jcontainer.getMetadataETag(),
entry);
@@ -677,14 +664,14 @@ public abstract class AbstractServices {
final InputStream serialization =
xml.addOrReplaceEntity(entityKey, entitySetName, new ByteArrayInputStream(content.toByteArray()), entry);
- ResWrap<AtomEntityImpl> result = atomDeserializer.read(serialization, AtomEntityImpl.class);
- result = new ResWrap<AtomEntityImpl>(
+ ResWrap<Entity> result = atomDeserializer.toEntity(serialization);
+ result = new ResWrap<Entity>(
URI.create(Constants.get(version, ConstantKey.ODATA_METADATA_PREFIX)
+ entitySetName + Constants.get(version, ConstantKey.ODATA_METADATA_ENTITY_SUFFIX)),
null, result.getPayload());
final String path = Commons.getEntityBasePath(entitySetName, entityKey);
- FSManager.instance(version).putInMemory(result, path + Constants.get(version, ConstantKey.ENTITY), dataBinder);
+ FSManager.instance(version).putInMemory(result, path + Constants.get(version, ConstantKey.ENTITY));
final String location = uriInfo.getRequestUri().toASCIIString() + "(" + entityKey + ")";
@@ -734,7 +721,7 @@ public abstract class AbstractServices {
final Map.Entry<String, InputStream> entityInfo = xml.readEntity("Person", entityId, Accept.ATOM);
final InputStream entity = entityInfo.getValue();
- final ResWrap<AtomEntityImpl> container = atomDeserializer.read(entity, AtomEntityImpl.class);
+ final ResWrap<Entity> container = atomDeserializer.toEntity(entity);
container.getPayload().getProperty("Salary").setValue(new PrimitiveValueImpl("0"));
container.getPayload().getProperty("Title").setValue(new PrimitiveValueImpl("[Sacked]"));
@@ -826,7 +813,7 @@ public abstract class AbstractServices {
final Map.Entry<String, InputStream> entityInfo = xml.readEntity("Product", entityId, Accept.ATOM);
final InputStream entity = entityInfo.getValue();
- final ResWrap<AtomEntityImpl> container = atomDeserializer.read(entity, AtomEntityImpl.class);
+ final ResWrap<Entity> container = atomDeserializer.toEntity(entity);
final Entity param = xml.readEntity(utils.getKey(), IOUtils.toInputStream(argument, Constants.ENCODING));
@@ -861,7 +848,7 @@ public abstract class AbstractServices {
final Map.Entry<String, InputStream> entityInfo = xml.readEntity("ComputerDetail", entityId, Accept.ATOM);
final InputStream entity = entityInfo.getValue();
- final ResWrap<AtomEntityImpl> container = atomDeserializer.read(entity, AtomEntityImpl.class);
+ final ResWrap<Entity> container = atomDeserializer.toEntity(entity);
final Entity param = xml.readEntity(utils.getKey(), IOUtils.toInputStream(argument, Constants.ENCODING));
@@ -985,7 +972,7 @@ public abstract class AbstractServices {
final InputStream feed = FSManager.instance(version).readFile(builder.toString(), Accept.ATOM);
- final ResWrap<AtomEntitySetImpl> container = atomDeserializer.read(feed, AtomEntitySetImpl.class);
+ final ResWrap<EntitySet> container = atomDeserializer.toEntitySet(feed);
setInlineCount(container.getPayload(), count);
@@ -1011,13 +998,11 @@ public abstract class AbstractServices {
if (acceptType == Accept.ATOM) {
atomSerializer.write(writer, container);
- writer.flush();
- writer.close();
} else {
- mapper.writeValue(
- writer, new JSONFeedContainer(container.getContextURL(), container.getMetadataETag(),
- dataBinder.toJSONEntitySet(container.getPayload())));
+ jsonSerializer.write(writer, container);
}
+ writer.flush();
+ writer.close();
return xml.createResponse(
location,
@@ -1185,9 +1170,9 @@ public abstract class AbstractServices {
final InputStream entity = entityInfo.getValue();
- ResWrap<AtomEntityImpl> container = atomDeserializer.read(entity, AtomEntityImpl.class);
+ ResWrap<Entity> container = atomDeserializer.toEntity(entity);
if (container.getContextURL() == null) {
- container = new ResWrap<AtomEntityImpl>(URI.create(Constants.get(version, ConstantKey.ODATA_METADATA_PREFIX)
+ container = new ResWrap<Entity>(URI.create(Constants.get(version, ConstantKey.ODATA_METADATA_PREFIX)
+ entitySetName + Constants.get(version, ConstantKey.ODATA_METADATA_ENTITY_SUFFIX)),
container.getMetadataETag(), container.getPayload());
}
@@ -1241,15 +1226,13 @@ public abstract class AbstractServices {
rep.setType(link.getType());
if (link.getType().equals(Constants.get(version, ConstantKey.ATOM_LINK_ENTRY))) {
// inline entry
- final Entity inline = atomDeserializer.<Entity, AtomEntityImpl>read(
- xml.expandEntity(entitySetName, entityId, link.getTitle()),
- AtomEntityImpl.class).getPayload();
+ final Entity inline = atomDeserializer.toEntity(
+ xml.expandEntity(entitySetName, entityId, link.getTitle())).getPayload();
rep.setInlineEntity(inline);
} else if (link.getType().equals(Constants.get(version, ConstantKey.ATOM_LINK_FEED))) {
// inline feed
- final EntitySet inline = atomDeserializer.<EntitySet, AtomEntitySetImpl>read(
- xml.expandEntity(entitySetName, entityId, link.getTitle()),
- AtomEntitySetImpl.class).getPayload();
+ final EntitySet inline = atomDeserializer.toEntitySet(
+ xml.expandEntity(entitySetName, entityId, link.getTitle())).getPayload();
rep.setInlineEntitySet(inline);
}
replace.put(link, rep);
@@ -1336,10 +1319,10 @@ public abstract class AbstractServices {
final FSManager fsManager = FSManager.instance(version);
final String basePath = Commons.getEntityBasePath(entitySetName, entityId);
- final ResWrap<AtomEntityImpl> container = xml.readContainerEntity(Accept.ATOM,
+ final ResWrap<Entity> container = xml.readContainerEntity(Accept.ATOM,
fsManager.readFile(basePath + Constants.get(version, ConstantKey.ENTITY), Accept.ATOM));
- final AtomEntityImpl entry = container.getPayload();
+ final Entity entry = container.getPayload();
Property toBeReplaced = null;
for (String element : path.split("/")) {
@@ -1363,7 +1346,7 @@ public abstract class AbstractServices {
// just for primitive values
toBeReplaced.setValue(new PrimitiveValueImpl(changes));
} else {
- final AtomPropertyImpl pchanges = xml.readProperty(
+ final Property pchanges = xml.readProperty(
Accept.parse(contentType, version),
IOUtils.toInputStream(changes, Constants.ENCODING),
entry.getType());
@@ -1639,7 +1622,6 @@ public abstract class AbstractServices {
* @param entityId
* @param path
* @param format
- * @param changes
* @return
*/
@DELETE
@@ -1729,34 +1711,24 @@ public abstract class AbstractServices {
final OutputStreamWriter writer = new OutputStreamWriter(content, Constants.ENCODING);
if (linkInfo.isFeed()) {
- final ResWrap<EntitySet> container =
- atomDeserializer.<EntitySet, AtomEntitySetImpl>read(stream, AtomEntitySetImpl.class);
+ final ResWrap<EntitySet> container = atomDeserializer.toEntitySet(stream);
if (acceptType == Accept.ATOM) {
atomSerializer.write(writer, container);
- writer.flush();
- writer.close();
} else {
- mapper.writeValue(
- writer,
- new JSONFeedContainer(container.getContextURL(),
- container.getMetadataETag(),
- dataBinder.toJSONEntitySet((AtomEntitySetImpl) container.getPayload())));
+ jsonSerializer.write(writer, container);
}
+ writer.flush();
+ writer.close();
} else {
- final ResWrap<Entity> container =
- atomDeserializer.<Entity, AtomEntityImpl>read(stream, AtomEntityImpl.class);
+ final ResWrap<Entity> container = atomDeserializer.toEntity(stream);
if (acceptType == Accept.ATOM) {
atomSerializer.write(writer, container);
- writer.flush();
- writer.close();
} else {
- mapper.writeValue(
- writer,
- new JSONEntryContainer(container.getContextURL(),
- container.getMetadataETag(),
- dataBinder.toJSONEntity((AtomEntityImpl) container.getPayload())));
+ jsonSerializer.write(writer, container);
}
+ writer.flush();
+ writer.close();
}
final String basePath = Commons.getEntityBasePath(entitySetName, entityId);
@@ -1804,18 +1776,18 @@ public abstract class AbstractServices {
final InputStream entity = entityInfo.getValue();
- final ResWrap<AtomEntityImpl> entryContainer = atomDeserializer.read(entity, AtomEntityImpl.class);
+ final ResWrap<Entity> entryContainer = atomDeserializer.toEntity(entity);
final String[] pathElems = StringUtils.split(path, "/");
- AtomPropertyImpl property = (AtomPropertyImpl) entryContainer.getPayload().getProperty(pathElems[0]);
+ Property property = entryContainer.getPayload().getProperty(pathElems[0]);
if (pathElems.length > 1 && property.getValue().isComplex()) {
for (Property sub : property.getValue().asComplex().get()) {
if (pathElems[1].equals(sub.getName())) {
- property = (AtomPropertyImpl) sub;
+ property = sub;
if (pathElems.length > 2 && property.getValue().isComplex()) {
for (Property subsub : property.getValue().asComplex().get()) {
if (pathElems[2].equals(subsub.getName())) {
- property = (AtomPropertyImpl) subsub;
+ property = subsub;
}
}
}
@@ -1823,7 +1795,7 @@ public abstract class AbstractServices {
}
}
- final ResWrap<AtomPropertyImpl> container = new ResWrap<AtomPropertyImpl>(
+ final ResWrap<Property> container = new ResWrap<Property>(
URI.create(Constants.get(version, ConstantKey.ODATA_METADATA_PREFIX)
+ (version.compareTo(ODataServiceVersion.V40) >= 0
? entitySetName + "(" + entityId + ")/" + path
@@ -1899,13 +1871,13 @@ public abstract class AbstractServices {
return utils;
}
- protected void normalizeAtomEntry(final AtomEntityImpl entry, final String entitySetName, final String entityKey) {
+ protected void normalizeAtomEntry(final Entity entry, final String entitySetName, final String entityKey) {
final org.apache.olingo.fit.metadata.EntitySet entitySet = metadata.getEntitySet(entitySetName);
final EntityType entityType = metadata.getEntityOrComplexType(entitySet.getType());
for (Map.Entry<String, org.apache.olingo.fit.metadata.Property> property
: entityType.getPropertyMap().entrySet()) {
if (entry.getProperty(property.getKey()) == null && property.getValue().isNullable()) {
- final AtomPropertyImpl prop = new AtomPropertyImpl();
+ final PropertyImpl prop = new PropertyImpl();
prop.setName(property.getKey());
prop.setValue(new NullValueImpl());
entry.getProperties().add(prop);