You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by fm...@apache.org on 2014/04/29 10:33:37 UTC
[2/2] git commit: merge
merge
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/639941c0
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/639941c0
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/639941c0
Branch: refs/heads/master
Commit: 639941c00eca9742a28e9297329cf909bd34f91c
Parents: f79db0b e8ac1c7
Author: fmartelli <fa...@gmail.com>
Authored: Tue Apr 29 10:27:30 2014 +0200
Committer: fmartelli <fa...@gmail.com>
Committed: Tue Apr 29 10:27:30 2014 +0200
----------------------------------------------------------------------
.../org/apache/olingo/fit/AbstractServices.java | 113 +++++-----
.../apache/olingo/fit/V3ActionOverloading.java | 4 +-
.../java/org/apache/olingo/fit/V3Services.java | 6 +-
.../java/org/apache/olingo/fit/V4Services.java | 126 +++++++----
.../apache/olingo/fit/metadata/Metadata.java | 2 +-
.../olingo/fit/metadata/NavigationProperty.java | 10 +-
.../fit/serializer/JSONEntryContainer.java | 14 +-
.../fit/serializer/JSONFeedContainer.java | 14 +-
.../olingo/fit/utils/AbstractUtilities.java | 64 +++---
.../org/apache/olingo/fit/utils/DataBinder.java | 153 +++++++------
.../org/apache/olingo/fit/utils/FSManager.java | 6 +-
.../apache/olingo/fit/utils/XMLUtilities.java | 2 +-
fit/src/main/resources/V40/delta.full.json | 39 ++++
fit/src/main/resources/V40/delta.xml | 87 ++++++++
.../client/api/CommonEdmEnabledODataClient.java | 1 -
.../request/retrieve/ODataEntityRequest.java | 2 +-
.../request/retrieve/v4/ODataDeltaRequest.java | 29 +++
.../retrieve/v4/RetrieveRequestFactory.java | 2 +
.../request/v4/AsyncRequestFactory.java | 1 -
.../api/domain/ODataEntitySetIterator.java | 77 +++----
.../olingo/client/api/op/CommonODataBinder.java | 32 +--
.../olingo/client/api/op/CommonODataReader.java | 6 +-
.../olingo/client/api/op/v3/ODataBinder.java | 8 +-
.../olingo/client/api/op/v4/ODataBinder.java | 12 +-
.../client/api/op/v4/ODataDeserializer.java | 11 +
.../cud/ODataEntityCreateRequestImpl.java | 6 +-
.../cud/ODataEntityUpdateRequestImpl.java | 6 +-
.../retrieve/ODataEntityRequestImpl.java | 6 +-
.../ODataEntitySetIteratorRequestImpl.java | 10 +-
.../retrieve/ODataEntitySetRequestImpl.java | 6 +-
.../retrieve/ODataPropertyRequestImpl.java | 8 +-
.../retrieve/v4/ODataDeltaRequestImpl.java | 81 +++++++
.../retrieve/v4/RetrieveRequestFactoryImpl.java | 6 +
.../ODataMediaEntityCreateRequestImpl.java | 4 +-
.../ODataMediaEntityUpdateRequestImpl.java | 4 +-
.../request/v4/AsyncRequestFactoryImpl.java | 3 +-
.../client/core/op/AbstractODataBinder.java | 132 +++++------
.../client/core/op/AbstractODataReader.java | 9 +-
.../olingo/client/core/op/ODataWriterImpl.java | 6 +-
.../client/core/op/impl/v3/ODataBinderImpl.java | 10 +-
.../client/core/op/impl/v3/ODataReaderImpl.java | 4 +-
.../client/core/op/impl/v4/ODataBinderImpl.java | 79 ++++++-
.../core/op/impl/v4/ODataDeserializerImpl.java | 12 +
.../client/core/op/impl/v4/ODataReaderImpl.java | 4 +-
.../client/core/it/AbstractBaseTestITCase.java | 20 +-
.../core/it/v3/EntityRetrieveTestITCase.java | 6 +-
.../client/core/it/v3/EntitySetTestITCase.java | 2 +-
.../core/it/v3/QueryOptionsTestITCase.java | 10 +-
.../client/core/it/v4/DeltaTestITCase.java | 78 +++++++
.../apache/olingo/client/core/v3/AtomTest.java | 30 +--
.../olingo/client/core/v3/EntitySetTest.java | 10 +-
.../olingo/client/core/v3/EntityTest.java | 32 +--
.../apache/olingo/client/core/v4/AtomTest.java | 2 +-
.../olingo/client/core/v4/EntitySetTest.java | 18 +-
.../olingo/client/core/v4/EntityTest.java | 51 +++--
.../apache/olingo/client/core/v4/JSONTest.java | 97 ++++++---
.../apache/olingo/client/core/v4/Customers.json | 2 +-
.../org/apache/olingo/client/core/v4/delta.json | 39 ++++
.../org/apache/olingo/client/core/v4/delta.xml | 87 ++++++++
.../apache/olingo/commons/api/Constants.java | 22 +-
.../olingo/commons/api/data/ContextURL.java | 52 ++++-
.../olingo/commons/api/data/DeletedEntity.java | 36 +++
.../apache/olingo/commons/api/data/Delta.java | 45 ++++
.../olingo/commons/api/data/DeltaLink.java | 36 +++
.../apache/olingo/commons/api/data/Entity.java | 174 +++++++++++++++
.../olingo/commons/api/data/EntitySet.java | 74 +++++++
.../apache/olingo/commons/api/data/Entry.java | 174 ---------------
.../apache/olingo/commons/api/data/Feed.java | 74 -------
.../apache/olingo/commons/api/data/Link.java | 24 +-
.../api/domain/CommonODataEntitySet.java | 2 +-
.../olingo/commons/api/domain/ODataLinked.java | 2 +-
.../commons/api/domain/v4/ODataDelta.java | 48 ++++
.../api/domain/v4/ODataObjectFactory.java | 4 +
.../api/edm/constants/ODataServiceVersion.java | 12 +
.../commons/api/op/CommonODataDeserializer.java | 18 +-
.../olingo/commons/api/op/ODataSerializer.java | 20 +-
.../olingo/commons/api/data/ContextURLTest.java | 33 +++
.../commons/core/data/AbstractAtomDealer.java | 20 +-
.../olingo/commons/core/data/AbstractDelta.java | 65 ++++++
.../commons/core/data/AbstractEntity.java | 171 +++++++++++++++
.../commons/core/data/AbstractEntitySet.java | 61 ++++++
.../olingo/commons/core/data/AbstractEntry.java | 171 ---------------
.../core/data/AbstractJsonDeserializer.java | 20 +-
.../core/data/AbstractJsonSerializer.java | 18 +-
.../olingo/commons/core/data/AtomDeltaImpl.java | 25 +++
.../commons/core/data/AtomDeserializer.java | 218 ++++++++++++++-----
.../commons/core/data/AtomEntityImpl.java | 25 +++
.../commons/core/data/AtomEntitySetImpl.java | 28 +++
.../olingo/commons/core/data/AtomEntryImpl.java | 25 ---
.../olingo/commons/core/data/AtomFeedImpl.java | 66 ------
.../commons/core/data/AtomSerializer.java | 154 ++++++-------
.../commons/core/data/DeletedEntityImpl.java | 50 +++++
.../olingo/commons/core/data/DeltaLinkImpl.java | 64 ++++++
.../core/data/JSONDeltaDeserializer.java | 93 ++++++++
.../olingo/commons/core/data/JSONDeltaImpl.java | 28 +++
.../core/data/JSONEntityDeserializer.java | 200 +++++++++++++++++
.../commons/core/data/JSONEntityImpl.java | 33 +++
.../commons/core/data/JSONEntitySerializer.java | 123 +++++++++++
.../core/data/JSONEntitySetDeserializer.java | 93 ++++++++
.../commons/core/data/JSONEntitySetImpl.java | 35 +++
.../core/data/JSONEntitySetSerializer.java | 82 +++++++
.../core/data/JSONEntryDeserializer.java | 200 -----------------
.../olingo/commons/core/data/JSONEntryImpl.java | 33 ---
.../commons/core/data/JSONEntrySerializer.java | 123 -----------
.../commons/core/data/JSONFeedDeserializer.java | 90 --------
.../olingo/commons/core/data/JSONFeedImpl.java | 99 ---------
.../commons/core/data/JSONFeedSerializer.java | 82 -------
.../olingo/commons/core/data/LinkImpl.java | 24 +-
.../core/data/ODataJacksonDeserializer.java | 9 +
.../core/data/v3/JSONLinkCollectionImpl.java | 2 +-
.../core/domain/AbstractODataEntity.java | 2 +-
.../core/domain/AbstractODataEntitySet.java | 5 +-
.../core/domain/v4/ODataComplexValueImpl.java | 2 +-
.../commons/core/domain/v4/ODataDeltaImpl.java | 73 +++++++
.../core/domain/v4/ODataObjectFactoryImpl.java | 11 +
.../core/edm/AbstractEdmNavigationProperty.java | 1 -
.../core/op/AbstractODataDeserializer.java | 24 +-
.../core/op/AbstractODataSerializer.java | 36 +--
.../olingo/commons/core/op/ResourceFactory.java | 84 +++----
119 files changed, 3343 insertions(+), 1976 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/639941c0/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
----------------------------------------------------------------------
diff --cc fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
index 021de16,202d118..5ce5790
--- a/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
+++ b/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
@@@ -67,12 -67,11 +67,12 @@@ import org.apache.cxf.jaxrs.client.WebC
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.Entry;
+ 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.Feed;
+ 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.edm.constants.ODataServiceVersion;
@@@ -407,17 -405,17 +406,17 @@@ public abstract class AbstractServices
if (contentTypeValue == Accept.XML || contentTypeValue == Accept.TEXT) {
throw new UnsupportedMediaTypeException("Unsupported media type");
} else if (contentTypeValue == Accept.ATOM) {
- entryChanges = atomDeserializer.<AtomEntryImpl, AtomEntryImpl>read(
- IOUtils.toInputStream(changes, Constants.ENCODING), AtomEntryImpl.class).getPayload();
+ entryChanges = atomDeserializer.<AtomEntityImpl, AtomEntityImpl>read(
+ IOUtils.toInputStream(changes, Constants.ENCODING), AtomEntityImpl.class).getPayload();
} else {
- final ResWrap<JSONEntryImpl> jcont = mapper.readValue(IOUtils.toInputStream(changes, Constants.ENCODING),
- new TypeReference<JSONEntryImpl>() {
+ final ResWrap<JSONEntityImpl> jcont = mapper.readValue(IOUtils.toInputStream(changes, Constants.ENCODING),
+ new TypeReference<JSONEntityImpl>() {
- });
+ });
- entryChanges = dataBinder.toAtomEntry(jcont.getPayload());
+ entryChanges = dataBinder.toAtomEntity(jcont.getPayload());
}
- final ResWrap<AtomEntryImpl> container = atomDeserializer.read(entityInfo.getValue(), AtomEntryImpl.class);
+ final ResWrap<AtomEntityImpl> container = atomDeserializer.read(entityInfo.getValue(), AtomEntityImpl.class);
for (Property property : entryChanges.getProperties()) {
container.getPayload().getProperty(property.getName()).setValue(property.getValue());
@@@ -589,17 -587,17 +588,17 @@@
} else {
final Accept contentTypeValue = Accept.parse(contentType, version);
if (Accept.ATOM == contentTypeValue) {
- container = atomDeserializer.read(IOUtils.toInputStream(entity, Constants.ENCODING), AtomEntryImpl.class);
+ container = atomDeserializer.read(IOUtils.toInputStream(entity, Constants.ENCODING), AtomEntityImpl.class);
entry = container.getPayload();
} else {
- final ResWrap<JSONEntryImpl> jcontainer =
+ final ResWrap<JSONEntityImpl> jcontainer =
mapper.readValue(IOUtils.toInputStream(entity, Constants.ENCODING),
- new TypeReference<JSONEntryImpl>() {
- new TypeReference<JSONEntityImpl>() {
- });
++ new TypeReference<JSONEntityImpl>() {
+ });
- entry = dataBinder.toAtomEntry(jcontainer.getPayload());
+ entry = dataBinder.toAtomEntity(jcontainer.getPayload());
- container = new ResWrap<AtomEntryImpl>(
+ container = new ResWrap<AtomEntityImpl>(
jcontainer.getContextURL(),
jcontainer.getMetadataETag(),
entry);
@@@ -619,10 -617,10 +618,10 @@@
final InputStream serialization =
xml.addOrReplaceEntity(null, entitySetName, new ByteArrayInputStream(content.toByteArray()), entry);
- ResWrap<AtomEntryImpl> result = atomDeserializer.read(serialization, AtomEntryImpl.class);
- result = new ResWrap<AtomEntryImpl>(
+ ResWrap<AtomEntityImpl> result = atomDeserializer.read(serialization, AtomEntityImpl.class);
+ result = new ResWrap<AtomEntityImpl>(
URI.create(Constants.get(version, ConstantKey.ODATA_METADATA_PREFIX)
- + entitySetName + Constants.get(version, ConstantKey.ODATA_METADATA_ENTITY_SUFFIX)),
+ + entitySetName + Constants.get(version, ConstantKey.ODATA_METADATA_ENTITY_SUFFIX)),
null, result.getPayload());
final String path = Commons.getEntityBasePath(entitySetName, entityKey);
@@@ -894,7 -892,7 +893,7 @@@
} else {
mapper.writeValue(
writer, new JSONFeedContainer(container.getContextURL(), container.getMetadataETag(),
- dataBinder.toJSONFeed(container.getPayload())));
- dataBinder.toJSONEntitySet(container.getPayload())));
++ dataBinder.toJSONEntitySet(container.getPayload())));
}
return xml.createResponse(
@@@ -1145,50 -1142,26 +1144,50 @@@
final String changes,
final boolean justValue) {
+ // if the given path is not about any link then search for property
+ LOG.info("Retrieve property {}", path);
+
try {
- Accept acceptType = null;
- if (StringUtils.isNotBlank(format)) {
- acceptType = Accept.valueOf(format.toUpperCase());
- } else if (StringUtils.isNotBlank(accept)) {
- acceptType = Accept.parse(accept, version, null);
+ final FSManager fsManager = FSManager.instance(version);
+
+ final String basePath = Commons.getEntityBasePath(entitySetName, entityId);
- final ResWrap<AtomEntryImpl> container = xml.readContainerEntry(Accept.ATOM,
++ final ResWrap<AtomEntityImpl> container = xml.readContainerEntry(Accept.ATOM,
+ fsManager.readFile(basePath + Constants.get(version, ConstantKey.ENTITY), Accept.ATOM));
+
- final AtomEntryImpl entry = container.getPayload();
++ final AtomEntityImpl entry = container.getPayload();
+
+ Property toBeReplaced = null;
+ for (String element : path.split("/")) {
+ if (toBeReplaced == null) {
+ toBeReplaced = entry.getProperty(element.trim());
+ } else {
+ ComplexValue value = toBeReplaced.getValue().asComplex();
+ for (Property field : value.get()) {
+ if (field.getName().equalsIgnoreCase(element)) {
+ toBeReplaced = field;
+ }
+ }
+ }
}
- // if the given path is not about any link then search for property
- LOG.info("Retrieve property {}", path);
+ if (toBeReplaced == null) {
+ throw new NotFoundException();
+ }
- final AbstractUtilities utils = getUtilities(acceptType);
+ if (justValue) {
+ // just for primitive values
+ toBeReplaced.setValue(new PrimitiveValueImpl(changes));
+ } else {
+ final AtomPropertyImpl pchanges = xml.readProperty(
+ Accept.parse(contentType, version),
+ IOUtils.toInputStream(changes, Constants.ENCODING),
+ entry.getType());
- utils.replaceProperty(
- entitySetName,
- entityId,
- IOUtils.toInputStream(changes, Constants.ENCODING),
- Arrays.asList(path.split("/")),
- acceptType,
- justValue);
+ toBeReplaced.setValue(pchanges.getValue());
+ }
+
+ fsManager.putInMemory(xml.writeEntry(Accept.ATOM, container),
+ fsManager.getAbsolutePath(basePath + Constants.get(version, ConstantKey.ENTITY), Accept.ATOM));
final Response response;
if ("return-content".equalsIgnoreCase(prefer)) {
@@@ -1545,7 -1507,8 +1544,8 @@@
final OutputStreamWriter writer = new OutputStreamWriter(content, Constants.ENCODING);
if (linkInfo.isFeed()) {
- final ResWrap<Feed> container = atomDeserializer.<Feed, AtomFeedImpl>read(stream, AtomFeedImpl.class);
- final ResWrap<EntitySet> container =
++ final ResWrap<EntitySet> container =
+ atomDeserializer.<EntitySet, AtomEntitySetImpl>read(stream, AtomEntitySetImpl.class);
if (acceptType == Accept.ATOM) {
atomSerializer.write(writer, container);
@@@ -1555,11 -1518,12 +1555,12 @@@
mapper.writeValue(
writer,
new JSONFeedContainer(container.getContextURL(),
- container.getMetadataETag(),
- dataBinder.toJSONEntitySet((AtomEntitySetImpl) container.getPayload())));
+ container.getMetadataETag(),
- dataBinder.toJSONFeed((AtomFeedImpl) container.getPayload())));
++ dataBinder.toJSONEntitySet((AtomEntitySetImpl) container.getPayload())));
}
} else {
- final ResWrap<Entry> container = atomDeserializer.<Entry, AtomEntryImpl>read(stream, AtomEntryImpl.class);
- final ResWrap<Entity> container =
++ final ResWrap<Entity> container =
+ atomDeserializer.<Entity, AtomEntityImpl>read(stream, AtomEntityImpl.class);
if (acceptType == Accept.ATOM) {
atomSerializer.write(writer, container);
writer.flush();
@@@ -1568,8 -1532,8 +1569,8 @@@
mapper.writeValue(
writer,
new JSONEntryContainer(container.getContextURL(),
- container.getMetadataETag(),
- dataBinder.toJSONEntityType((AtomEntityImpl) container.getPayload())));
+ container.getMetadataETag(),
- dataBinder.toJSONEntry((AtomEntryImpl) container.getPayload())));
++ dataBinder.toJSONEntityType((AtomEntityImpl) container.getPayload())));
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/639941c0/fit/src/main/java/org/apache/olingo/fit/metadata/Metadata.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/639941c0/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
----------------------------------------------------------------------
diff --cc fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
index bf1e4e3,57e2049..2882784
--- a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
@@@ -550,38 -551,31 +550,38 @@@ public abstract class AbstractUtilitie
} else {
mapper.writeValue(
writer, new JSONFeedContainer(container.getContextURL(),
- container.getMetadataETag(), dataBinder.toJSONFeed(container.getPayload())));
- container.getMetadataETag(), dataBinder.toJSONEntitySet(container.getPayload())));
++ container.getMetadataETag(), dataBinder.toJSONEntitySet(container.getPayload())));
}
return IOUtils.toInputStream(writer.toString(), Constants.ENCODING);
}
- public ResWrap<AtomEntryImpl> readContainerEntry(final Accept accept, final InputStream entity)
- public AtomEntityImpl readEntry(final Accept accept, final InputStream entity)
++ public ResWrap<AtomEntityImpl> readContainerEntry(final Accept accept, final InputStream entity)
throws XMLStreamException, IOException {
- final ResWrap<AtomEntryImpl> container;
-
- final AtomEntityImpl entry;
++ final ResWrap<AtomEntityImpl> container;
if (accept == Accept.ATOM || accept == Accept.XML) {
- container = atomDeserializer.read(entity, AtomEntryImpl.class);
- final ResWrap<AtomEntityImpl> container = atomDeserializer.read(entity, AtomEntityImpl.class);
- entry = container.getPayload();
++ container = atomDeserializer.read(entity, AtomEntityImpl.class);
} else {
- final ResWrap<JSONEntryImpl> jcontainer =
- mapper.readValue(entity, new TypeReference<JSONEntryImpl>() {
- final ResWrap<JSONEntityImpl> container =
++ final ResWrap<JSONEntityImpl> jcontainer =
+ mapper.readValue(entity, new TypeReference<JSONEntityImpl>() {
- });
- entry = dataBinder.toAtomEntity(container.getPayload());
+ });
- container = new ResWrap<AtomEntryImpl>(
++ container = new ResWrap<AtomEntityImpl>(
+ jcontainer.getContextURL(),
+ jcontainer.getMetadataETag(),
- dataBinder.toAtomEntry(jcontainer.getPayload()));
++ dataBinder.toAtomEntity(jcontainer.getPayload()));
}
- return entry;
+ return container;
+ }
+
- public AtomEntryImpl readEntry(final Accept accept, final InputStream entity)
++ public AtomEntityImpl readEntry(final Accept accept, final InputStream entity)
+ throws XMLStreamException, IOException {
+ return readContainerEntry(accept, entity).getPayload();
+
}
- public InputStream writeEntry(final Accept accept, final ResWrap<AtomEntryImpl> container)
+ public InputStream writeEntry(final Accept accept, final ResWrap<AtomEntityImpl> container)
throws XMLStreamException, IOException {
final StringWriter writer = new StringWriter();
@@@ -590,7 -584,7 +590,7 @@@
} else {
mapper.writeValue(
writer, new JSONEntryContainer(container.getContextURL(), container.getMetadataETag(),
- dataBinder.toJSONEntry(container.getPayload())));
- dataBinder.toJSONEntityType(container.getPayload())));
++ dataBinder.toJSONEntityType(container.getPayload())));
}
return IOUtils.toInputStream(writer.toString(), Constants.ENCODING);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/639941c0/fit/src/main/java/org/apache/olingo/fit/utils/XMLUtilities.java
----------------------------------------------------------------------