Repository: olingo-odata4 Updated Branches: refs/heads/master 6b7be9deb -> 58ecb3f5d
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ecb3f5/lib/client-core/src/main/java/org/apache/olingo/client/core/v3/ODataClientImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/v3/ODataClientImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/v3/ODataClientImpl.java index 8c6273d..e968f9b 100644 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/v3/ODataClientImpl.java +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/v3/ODataClientImpl.java @@ -27,7 +27,7 @@ import org.apache.olingo.client.api.communication.request.cud.v3.CUDRequestFacto import org.apache.olingo.client.api.communication.request.cud.v3.UpdateType; import org.apache.olingo.client.api.communication.request.invoke.InvokeRequestFactory; import org.apache.olingo.client.api.communication.request.retrieve.v3.RetrieveRequestFactory; -import org.apache.olingo.client.api.communication.request.streamed.v3.StreamedRequestFactory; +import org.apache.olingo.client.api.communication.request.streamed.StreamedRequestFactory; import org.apache.olingo.commons.api.op.ODataSerializer; import org.apache.olingo.client.api.op.v3.ODataDeserializer; import org.apache.olingo.client.api.op.v3.ODataBinder; @@ -40,7 +40,7 @@ import org.apache.olingo.client.core.communication.request.batch.v3.BatchRequest import org.apache.olingo.client.core.communication.request.cud.v3.CUDRequestFactoryImpl; import org.apache.olingo.client.core.communication.request.invoke.v3.InvokeRequestFactoryImpl; import org.apache.olingo.client.core.communication.request.retrieve.v3.RetrieveRequestFactoryImpl; -import org.apache.olingo.client.core.communication.request.streamed.v3.StreamedRequestFactoryImpl; +import org.apache.olingo.client.core.communication.request.streamed.StreamedRequestFactoryImpl; import org.apache.olingo.client.core.op.impl.v3.ODataBinderImpl; import org.apache.olingo.client.core.op.impl.v3.ODataDeserializerImpl; import org.apache.olingo.client.core.op.impl.v3.ODataReaderImpl; http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ecb3f5/lib/client-core/src/main/java/org/apache/olingo/client/core/v4/ODataClientImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/v4/ODataClientImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/v4/ODataClientImpl.java index 3a43644..58a46f5 100644 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/v4/ODataClientImpl.java +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/v4/ODataClientImpl.java @@ -27,7 +27,7 @@ import org.apache.olingo.client.api.communication.request.cud.v4.CUDRequestFacto import org.apache.olingo.client.api.communication.request.cud.v4.UpdateType; import org.apache.olingo.client.api.communication.request.invoke.InvokeRequestFactory; import org.apache.olingo.client.api.communication.request.retrieve.v4.RetrieveRequestFactory; -import org.apache.olingo.client.api.communication.request.streamed.v4.StreamedRequestFactory; +import org.apache.olingo.client.api.communication.request.streamed.StreamedRequestFactory; import org.apache.olingo.client.api.communication.request.v4.AsyncRequestFactory; import org.apache.olingo.commons.api.op.ODataSerializer; import org.apache.olingo.client.api.op.v4.ODataBinder; @@ -41,7 +41,7 @@ import org.apache.olingo.client.core.communication.request.batch.v4.BatchRequest import org.apache.olingo.client.core.communication.request.cud.v4.CUDRequestFactoryImpl; import org.apache.olingo.client.core.communication.request.invoke.v4.InvokeRequestFactoryImpl; import org.apache.olingo.client.core.communication.request.retrieve.v4.RetrieveRequestFactoryImpl; -import org.apache.olingo.client.core.communication.request.streamed.v4.StreamedRequestFactoryImpl; +import org.apache.olingo.client.core.communication.request.streamed.StreamedRequestFactoryImpl; import org.apache.olingo.client.core.communication.request.v4.AsyncRequestFactoryImpl; import org.apache.olingo.client.core.op.impl.v4.ODataBinderImpl; import org.apache.olingo.client.core.op.impl.v4.ODataDeserializerImpl; http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ecb3f5/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntityTest.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntityTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntityTest.java index 20f7536..b73dc0d 100644 --- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntityTest.java +++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntityTest.java @@ -55,7 +55,7 @@ public class EntityTest extends AbstractTest { assertEquals("Microsoft.Test.OData.Services.AstoriaDefaultService.Customer", entity.getTypeName().toString()); assertTrue(entity.getEditLink().toASCIIString().endsWith("/Customer(-10)")); assertEquals(5, entity.getNavigationLinks().size()); - assertEquals(2, entity.getEditMediaLinks().size()); + assertEquals(2, entity.getMediaEditLinks().size()); boolean check = false; http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ecb3f5/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/EntityTest.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/EntityTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/EntityTest.java index 537dfcd..8c61a50 100644 --- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/EntityTest.java +++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/EntityTest.java @@ -217,7 +217,7 @@ public class EntityTest extends AbstractTest { assertFalse(entity.isMediaEntity()); - final ODataLink editMedia = entity.getEditMediaLink("Photo"); + final ODataLink editMedia = entity.getMediaEditLink("Photo"); assertNotNull(editMedia); final ODataEntity written = getClient().getBinder().getODataEntity( http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ecb3f5/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entity.java ---------------------------------------------------------------------- diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entity.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entity.java index 67561f9..ab590a1 100644 --- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entity.java +++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entity.java @@ -135,14 +135,14 @@ public interface Entity extends Linked, Annotatable { * * @return media content resource. */ - String getMediaContentSource(); + URI getMediaContentSource(); /** * Set media content source. * * @param mediaContentSource media content source. */ - void setMediaContentSource(String mediaContentSource); + void setMediaContentSource(URI mediaContentSource); /** * Set media content type. http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ecb3f5/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/CommonODataEntity.java ---------------------------------------------------------------------- diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/CommonODataEntity.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/CommonODataEntity.java index bfae953..1487b13 100644 --- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/CommonODataEntity.java +++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/CommonODataEntity.java @@ -101,14 +101,14 @@ public interface CommonODataEntity extends ODataLinked, ODataInvokeResult { * @param name candidate link name * @return media-edit link with given name, if available, otherwise <tt>null</tt> */ - ODataLink getEditMediaLink(String name); + ODataLink getMediaEditLink(final String name); /** - * Returns all entity media edit links. + * Returns entity media edit links. * * @return OData entity links. */ - List<ODataLink> getEditMediaLinks(); + List<ODataLink> getMediaEditLinks(); /** * TRUE if read-only entity. @@ -150,14 +150,14 @@ public interface CommonODataEntity extends ODataLinked, ODataInvokeResult { * * @return media content source. */ - String getMediaContentSource(); + URI getMediaContentSource(); /** * Sets media content source. * * @param mediaContentSource media content source. */ - void setMediaContentSource(String mediaContentSource); + void setMediaContentSource(URI mediaContentSource); /** * ETag of the binary stream represented by this media entity or named stream property. http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ecb3f5/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractEntity.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractEntity.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractEntity.java index 21ada97..7bc3fd5 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractEntity.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AbstractEntity.java @@ -18,9 +18,9 @@ */ package org.apache.olingo.commons.core.data; +import java.net.URI; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang3.StringUtils; import org.apache.olingo.commons.api.data.Entity; import org.apache.olingo.commons.api.data.Link; import org.apache.olingo.commons.api.data.Property; @@ -51,7 +51,7 @@ public abstract class AbstractEntity extends AbstractODataObject implements Enti private final List<Property> properties = new ArrayList<Property>(); - private String mediaContentSource; + private URI mediaContentSource; private String mediaContentType; @@ -167,12 +167,12 @@ public abstract class AbstractEntity extends AbstractODataObject implements Enti } @Override - public String getMediaContentSource() { + public URI getMediaContentSource() { return this.mediaContentSource; } @Override - public void setMediaContentSource(final String mediaContentSource) { + public void setMediaContentSource(final URI mediaContentSource) { this.mediaContentSource = mediaContentSource; } @@ -188,6 +188,6 @@ public abstract class AbstractEntity extends AbstractODataObject implements Enti @Override public boolean isMediaEntity() { - return StringUtils.isNotBlank(this.mediaContentSource); + return this.mediaContentSource != null; } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ecb3f5/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomDeserializer.java index 27379da..dad1bfa 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomDeserializer.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomDeserializer.java @@ -677,7 +677,7 @@ public class AtomDeserializer extends AbstractAtomDealer { entity.setMediaContentType(type.getValue()); final Attribute src = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATOM_ATTR_SRC)); if (src != null) { - entity.setMediaContentSource(src.getValue()); + entity.setMediaContentSource(URI.create(src.getValue())); } } } else if (propertiesQName.equals(event.asStartElement().getName())) { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ecb3f5/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomSerializer.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomSerializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomSerializer.java index 0f9750a..cfa83fb 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomSerializer.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomSerializer.java @@ -309,8 +309,8 @@ public class AtomSerializer extends AbstractAtomDealer { if (StringUtils.isNotBlank(entity.getMediaContentType())) { writer.writeAttribute(Constants.ATTR_TYPE, entity.getMediaContentType()); } - if (StringUtils.isNotBlank(entity.getMediaContentSource())) { - writer.writeAttribute(Constants.ATOM_ATTR_SRC, entity.getMediaContentSource()); + if (entity.getMediaContentSource() != null) { + writer.writeAttribute(Constants.ATOM_ATTR_SRC, entity.getMediaContentSource().toASCIIString()); } writer.writeEndElement(); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ecb3f5/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntityDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntityDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntityDeserializer.java index 567fadb..4641375 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntityDeserializer.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntityDeserializer.java @@ -121,11 +121,11 @@ public class JSONEntityDeserializer extends AbstractJsonDeserializer<JSONEntityI } if (tree.hasNonNull(jsonMediaReadLink)) { - entity.setMediaContentSource(tree.get(jsonMediaReadLink).textValue()); + entity.setMediaContentSource(URI.create(tree.get(jsonMediaReadLink).textValue())); tree.remove(jsonMediaReadLink); } if (tree.hasNonNull(jsonMediaEditLink)) { - entity.setMediaContentSource(tree.get(jsonMediaEditLink).textValue()); + entity.setMediaContentSource(URI.create(tree.get(jsonMediaEditLink).textValue())); tree.remove(jsonMediaEditLink); } if (tree.hasNonNull(jsonMediaContentType)) { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ecb3f5/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntitySerializer.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntitySerializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntitySerializer.java index cb0280d..cee5b54 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntitySerializer.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntitySerializer.java @@ -26,10 +26,10 @@ import java.net.URI; import org.apache.commons.lang3.StringUtils; import org.apache.olingo.commons.api.Constants; import org.apache.olingo.commons.api.data.Annotation; -import org.apache.olingo.commons.api.data.ResWrap; import org.apache.olingo.commons.api.data.Entity; 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.domain.ODataOperation; import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion; import org.apache.olingo.commons.core.edm.EdmTypeInfo; @@ -87,12 +87,20 @@ public class JSONEntitySerializer extends AbstractJsonSerializer<JSONEntityImpl> valuable(jgen, property, property.getName()); } - if (serverMode && entity.getEditLink() != null && StringUtils.isNotBlank(entity.getEditLink().getHref())) { - final URI link = URI.create(entity.getEditLink().getHref()); - final String editLink = link.isAbsolute() ? link.toASCIIString() - : URI.create(entity.getBaseURI() + "/" + link.toASCIIString()).normalize().toASCIIString(); + if (serverMode) { + if (entity.getEditLink() != null && StringUtils.isNotBlank(entity.getEditLink().getHref())) { + final URI link = URI.create(entity.getEditLink().getHref()); + final String editLink = link.isAbsolute() ? link.toASCIIString() + : URI.create(entity.getBaseURI() + "/" + link.toASCIIString()).normalize().toASCIIString(); + + jgen.writeStringField( + version.getJSONMap().get(ODataServiceVersion.JSON_EDIT_LINK), editLink); - jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_EDIT_LINK), editLink); + if (entity.isMediaEntity()) { + jgen.writeStringField( + version.getJSONMap().get(ODataServiceVersion.JSON_MEDIAREAD_LINK), editLink + "/$value"); + } + } } links(entity, jgen); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/58ecb3f5/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataEntity.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataEntity.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataEntity.java index 3152b3d..bbc66f7 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataEntity.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataEntity.java @@ -56,7 +56,7 @@ public abstract class AbstractODataEntity extends AbstractODataPayload implement /** * In case of media entity, media content source. */ - private String mediaContentSource; + private URI mediaContentSource; /** * Media ETag. @@ -81,7 +81,7 @@ public abstract class AbstractODataEntity extends AbstractODataPayload implement /** * Media edit links. */ - private final List<ODataLink> editMediaLinks = new ArrayList<ODataLink>(); + private final List<ODataLink> mediaEditLinks = new ArrayList<ODataLink>(); /** * Operations (legacy, functions, actions). @@ -89,7 +89,7 @@ public abstract class AbstractODataEntity extends AbstractODataPayload implement private final List<ODataOperation> operations = new ArrayList<ODataOperation>(); public AbstractODataEntity(final FullQualifiedName typeName) { - super(typeName == null? null: typeName.toString()); + super(typeName == null ? null : typeName.toString()); this.typeName = typeName; } @@ -160,7 +160,7 @@ public abstract class AbstractODataEntity extends AbstractODataPayload implement break; case MEDIA_EDIT: - result = editMediaLinks.contains(link) ? false : editMediaLinks.add(link); + result = mediaEditLinks.contains(link) ? false : mediaEditLinks.add(link); break; default: @@ -171,7 +171,7 @@ public abstract class AbstractODataEntity extends AbstractODataPayload implement @Override public boolean removeLink(final ODataLink link) { - return associationLinks.remove(link) || navigationLinks.remove(link) || editMediaLinks.remove(link); + return associationLinks.remove(link) || navigationLinks.remove(link); } private ODataLink getLink(final List<ODataLink> links, final String name) { @@ -206,13 +206,13 @@ public abstract class AbstractODataEntity extends AbstractODataPayload implement } @Override - public ODataLink getEditMediaLink(final String name) { - return getLink(editMediaLinks, name); + public ODataLink getMediaEditLink(final String name) { + return getLink(mediaEditLinks, name); } @Override - public List<ODataLink> getEditMediaLinks() { - return editMediaLinks; + public List<ODataLink> getMediaEditLinks() { + return mediaEditLinks; } @Override @@ -256,12 +256,12 @@ public abstract class AbstractODataEntity extends AbstractODataPayload implement } @Override - public String getMediaContentSource() { + public URI getMediaContentSource() { return mediaContentSource; } @Override - public void setMediaContentSource(final String mediaContentSource) { + public void setMediaContentSource(final URI mediaContentSource) { this.mediaContentSource = mediaContentSource; }
