You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ra...@apache.org on 2020/04/03 06:42:20 UTC
[olingo-odata4] branch master updated: [OLINGO-1443]Streaming
support for Media types
This is an automated email from the ASF dual-hosted git repository.
ramyav pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/olingo-odata4.git
The following commit(s) were added to refs/heads/master by this push:
new 1c8e5ce [OLINGO-1443]Streaming support for Media types
1c8e5ce is described below
commit 1c8e5ce60bf7c3f8ea4074f191b5c64eaf51b45d
Author: ramya vasanth <ra...@sap.com>
AuthorDate: Fri Apr 3 12:12:08 2020 +0530
[OLINGO-1443]Streaming support for Media types
---
.../olingo/fit/tecsvc/client/MediaITCase.java | 17 ++++++
.../olingo/commons/api/data/EntityMediaObject.java | 32 +++++++++++
.../api/serializer/FixedFormatSerializer.java | 11 +++-
.../olingo/server/core/ODataWritableContent.java | 63 +++++++++++++++++++++-
.../core/serializer/FixedFormatSerializerImpl.java | 24 +++++++++
.../core/serializer/FixedFormatSerializerTest.java | 23 +++++++-
.../olingo/server/tecsvc/data/DataCreator.java | 43 ++++++++++++++-
.../tecsvc/processor/TechnicalEntityProcessor.java | 15 +++++-
.../server/tecsvc/provider/ContainerProvider.java | 19 ++++++-
9 files changed, 240 insertions(+), 7 deletions(-)
diff --git a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/MediaITCase.java b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/MediaITCase.java
index 66a8094..d97bc48 100644
--- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/MediaITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/MediaITCase.java
@@ -64,6 +64,23 @@ public class MediaITCase extends AbstractParamTecSvcITCase {
assertNotNull(media);
assertThat(IOUtils.toString(media), startsWith("<?xml"));
}
+
+ @Test
+ public void readMediaStream() throws Exception {
+ final ODataMediaRequest request = getClient().getRetrieveRequestFactory().getMediaRequest(
+ getClient().newURIBuilder(TecSvcConst.BASE_URI)
+ .appendEntitySetSegment("ESMediaStream").appendKeySegment(1).appendValueSegment().build());
+ assertNotNull(request);
+
+ final ODataRetrieveResponse<InputStream> response = request.execute();
+ assertEquals(HttpStatusCode.OK.getStatusCode(), response.getStatusCode());
+ assertEquals("image/svg+xml", response.getContentType());
+ assertEquals("W/\"1\"", response.getETag());
+
+ InputStream media = response.getBody();
+ assertNotNull(media);
+ assertThat(IOUtils.toString(media), startsWith("<?xml"));
+ }
@Test
public void delete() {
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntityMediaObject.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntityMediaObject.java
new file mode 100644
index 0000000..35fe1e0
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntityMediaObject.java
@@ -0,0 +1,32 @@
+/*
+ * 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.commons.api.data;
+
+public class EntityMediaObject {
+
+ private byte[] bytes;
+
+ public void setBytes(byte[] bytes) {
+ this.bytes = bytes;
+ }
+
+ public byte[] getBytes() {
+ return bytes;
+ }
+}
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/FixedFormatSerializer.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/FixedFormatSerializer.java
index 0e6a440..1a492ff 100644
--- a/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/FixedFormatSerializer.java
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/FixedFormatSerializer.java
@@ -21,6 +21,7 @@ package org.apache.olingo.server.api.serializer;
import java.io.InputStream;
import java.util.List;
+import org.apache.olingo.commons.api.data.EntityMediaObject;
import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.server.api.ODataResponse;
import org.apache.olingo.server.api.deserializer.batch.ODataResponsePart;
@@ -33,7 +34,15 @@ public interface FixedFormatSerializer {
* @param binary the binary data
*/
InputStream binary(byte[] binary) throws SerializerException;
-
+
+ /**
+ * Writes bytes to an Input stream
+ * @param mediaEntity bytes
+ * @return
+ * @throws SerializerException
+ */
+ SerializerStreamResult mediaEntityStreamed(EntityMediaObject mediaEntity) throws SerializerException;
+
/**
* Writes a count into an InputStream as plain text.
* @param count the count
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataWritableContent.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataWritableContent.java
index 9cc6e81..8afbab4 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataWritableContent.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataWritableContent.java
@@ -24,6 +24,7 @@ import java.nio.channels.Channels;
import java.nio.channels.WritableByteChannel;
import org.apache.olingo.commons.api.data.EntityIterator;
+import org.apache.olingo.commons.api.data.EntityMediaObject;
import org.apache.olingo.commons.api.edm.EdmEntityType;
import org.apache.olingo.commons.api.ex.ODataRuntimeException;
import org.apache.olingo.server.api.ODataContent;
@@ -36,6 +37,7 @@ import org.apache.olingo.server.api.serializer.ODataSerializer;
import org.apache.olingo.server.api.serializer.SerializerException;
import org.apache.olingo.server.api.serializer.SerializerStreamResult;
import org.apache.olingo.server.core.serializer.SerializerStreamResultImpl;
+import org.apache.olingo.server.core.serializer.FixedFormatSerializerImpl;
import org.apache.olingo.server.core.serializer.json.ODataJsonSerializer;
import org.apache.olingo.server.core.serializer.xml.ODataXmlSerializer;
@@ -55,6 +57,7 @@ public class ODataWritableContent implements ODataContent {
protected ServiceMetadata metadata;
protected EdmEntityType entityType;
protected EntityCollectionSerializerOptions options;
+ protected EntityMediaObject mediaEntity;
public StreamContent(EntityIterator iterator, EdmEntityType entityType, ServiceMetadata metadata,
EntityCollectionSerializerOptions options) {
@@ -64,11 +67,22 @@ public class ODataWritableContent implements ODataContent {
this.options = options;
}
+ public StreamContent(EntityMediaObject mediaEntity) {
+ this.mediaEntity = mediaEntity;
+ }
+
protected abstract void writeEntity(EntityIterator entity, OutputStream outputStream) throws SerializerException;
+ protected abstract void writeBinary(EntityMediaObject mediaEntity, OutputStream outputStream)
+ throws SerializerException;
+
public void write(OutputStream out) {
try {
- writeEntity(iterator, out);
+ if (mediaEntity == null) {
+ writeEntity(iterator, out);
+ } else {
+ writeBinary(mediaEntity, out);
+ }
} catch (SerializerException e) {
final ODataContentWriteErrorCallback errorCallback = options.getODataContentWriteErrorCallback();
if (errorCallback != null) {
@@ -98,7 +112,34 @@ public class ODataWritableContent implements ODataContent {
throw new ODataRuntimeException("Failed entity serialization", e);
}
}
+ @Override
+ protected void writeBinary(EntityMediaObject mediaEntity,
+ OutputStream outputStream) throws SerializerException {
+ throw new ODataRuntimeException("Not Implemented in Entity Handling");
+ }
}
+
+ private static class StreamContentForMedia extends StreamContent {
+ private FixedFormatSerializerImpl fixedFormatSerializer;
+
+ public StreamContentForMedia(EntityMediaObject mediaEntity,
+ FixedFormatSerializerImpl fixedFormatSerializer) {
+ super(mediaEntity);
+
+ this.fixedFormatSerializer = fixedFormatSerializer;
+ }
+
+ protected void writeEntity(EntityIterator entity,
+ OutputStream outputStream) throws SerializerException {
+ throw new ODataRuntimeException("Not Implemented in Entity Handling");
+ }
+
+ @Override
+ protected void writeBinary(EntityMediaObject mediaEntity,
+ OutputStream outputStream) throws SerializerException {
+ fixedFormatSerializer.binaryIntoStreamed(mediaEntity, outputStream);
+ }
+ }
private static class StreamContentForXml extends StreamContent {
private ODataXmlSerializer xmlSerializer;
@@ -119,6 +160,11 @@ public class ODataWritableContent implements ODataContent {
throw new ODataRuntimeException("Failed entity serialization", e);
}
}
+
+ protected void writeBinary(EntityMediaObject mediaEntity,
+ OutputStream outputStream) throws SerializerException {
+ throw new ODataRuntimeException("Not Implemented in XML Handling");
+ }
}
@Override
@@ -140,6 +186,11 @@ public class ODataWritableContent implements ODataContent {
EntityCollectionSerializerOptions options) {
return new ODataWritableContentBuilder(iterator, entityType, serializer, metadata, options);
}
+
+ public static ODataWritableContentBuilder with(EntityMediaObject mediaEntity,
+ FixedFormatSerializerImpl fixedFormatSerializer) {
+ return new ODataWritableContentBuilder(mediaEntity, fixedFormatSerializer);
+ }
public static class WriteErrorContext implements ODataContentWriteErrorContext {
private ODataLibraryException exception;
@@ -165,6 +216,8 @@ public class ODataWritableContent implements ODataContent {
private ServiceMetadata metadata;
private EdmEntityType entityType;
private EntityCollectionSerializerOptions options;
+ private FixedFormatSerializerImpl fixedFormatSerializer;
+ private EntityMediaObject mediaEntity;
public ODataWritableContentBuilder(EntityIterator entities, EdmEntityType entityType,
ODataSerializer serializer,
@@ -176,6 +229,11 @@ public class ODataWritableContent implements ODataContent {
this.options = options;
}
+ public ODataWritableContentBuilder(EntityMediaObject mediaEntity, FixedFormatSerializerImpl fixedFormatSerializer) {
+ this.mediaEntity = mediaEntity;
+ this.fixedFormatSerializer = fixedFormatSerializer;
+ }
+
public ODataContent buildContent() {
if (serializer instanceof ODataJsonSerializer) {
StreamContent input = new StreamContentForJson(entities, entityType,
@@ -185,6 +243,9 @@ public class ODataWritableContent implements ODataContent {
StreamContentForXml input = new StreamContentForXml(entities, entityType,
(ODataXmlSerializer) serializer, metadata, options);
return new ODataWritableContent(input);
+ } else if (fixedFormatSerializer instanceof FixedFormatSerializerImpl) {
+ StreamContent input = new StreamContentForMedia(mediaEntity, fixedFormatSerializer);
+ return new ODataWritableContent(input);
}
throw new ODataRuntimeException("No suitable serializer found");
}
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/FixedFormatSerializerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/FixedFormatSerializerImpl.java
index f21f064..aa1d2c3 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/FixedFormatSerializerImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/FixedFormatSerializerImpl.java
@@ -19,10 +19,13 @@
package org.apache.olingo.server.core.serializer;
import java.io.ByteArrayInputStream;
+import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;
+import org.apache.olingo.commons.api.data.EntityMediaObject;
import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
import org.apache.olingo.server.api.ODataResponse;
@@ -31,6 +34,8 @@ import org.apache.olingo.server.api.serializer.BatchSerializerException;
import org.apache.olingo.server.api.serializer.FixedFormatSerializer;
import org.apache.olingo.server.api.serializer.PrimitiveValueSerializerOptions;
import org.apache.olingo.server.api.serializer.SerializerException;
+import org.apache.olingo.server.api.serializer.SerializerStreamResult;
+import org.apache.olingo.server.core.ODataWritableContent;
public class FixedFormatSerializerImpl implements FixedFormatSerializer {
@@ -38,6 +43,25 @@ public class FixedFormatSerializerImpl implements FixedFormatSerializer {
public InputStream binary(final byte[] binary) throws SerializerException {
return new ByteArrayInputStream(binary);
}
+
+ protected void binary(final EntityMediaObject mediaEntity,
+ OutputStream outputStream) throws SerializerException {
+ try {
+ outputStream.write(mediaEntity.getBytes());
+ } catch (IOException e) {
+ throw new SerializerException("IO Exception occured ", e, SerializerException.MessageKeys.IO_EXCEPTION);
+ }
+ }
+
+ public void binaryIntoStreamed(final EntityMediaObject mediaEntity,
+ final OutputStream outputStream) throws SerializerException {
+ binary(mediaEntity, outputStream);
+ }
+
+ @Override
+ public SerializerStreamResult mediaEntityStreamed(EntityMediaObject mediaEntity) throws SerializerException {
+ return ODataWritableContent.with(mediaEntity, this).build();
+ }
@Override
public InputStream count(final Integer count) throws SerializerException {
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/FixedFormatSerializerTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/FixedFormatSerializerTest.java
index a0586e3..ef32884 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/FixedFormatSerializerTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/FixedFormatSerializerTest.java
@@ -18,15 +18,19 @@
*/
package org.apache.olingo.server.core.serializer;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
+
+import java.io.ByteArrayOutputStream;
import org.apache.commons.io.IOUtils;
+import org.apache.olingo.commons.api.data.EntityMediaObject;
import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.serializer.FixedFormatSerializer;
import org.apache.olingo.server.api.serializer.PrimitiveValueSerializerOptions;
import org.apache.olingo.server.api.serializer.SerializerException;
+import org.apache.olingo.server.api.serializer.SerializerStreamResult;
import org.junit.Test;
public class FixedFormatSerializerTest {
@@ -53,4 +57,21 @@ public class FixedFormatSerializerTest {
assertEquals("42", IOUtils.toString(serializer.primitiveValue(type, 42,
PrimitiveValueSerializerOptions.with().nullable(true).build())));
}
+
+ @Test
+ public void binaryIntoStreamed() throws Exception {
+ EntityMediaObject mediaObject = new EntityMediaObject();
+ mediaObject.setBytes(new byte[] { 0x41, 0x42, 0x43 });
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ new FixedFormatSerializerImpl().binaryIntoStreamed(mediaObject, outputStream);
+ assertEquals(mediaObject.getBytes().length, outputStream.toByteArray().length);
+ }
+
+ @Test
+ public void mediaEntityStreamed() throws Exception {
+ EntityMediaObject mediaObject = new EntityMediaObject();
+ mediaObject.setBytes(new byte[] { 0x41, 0x42, 0x43 });
+ SerializerStreamResult result = serializer.mediaEntityStreamed(mediaObject);
+ assertNotNull(result.getODataContent());
+ }
}
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java
index 7007b89..855d7ac 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java
@@ -34,7 +34,6 @@ import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.TimeZone;
import java.util.UUID;
import org.apache.olingo.commons.api.Constants;
@@ -78,6 +77,7 @@ public class DataCreator {
data.put("ESAllKey", createESAllKey(edm, odata));
data.put("ESCompComp", createESCompComp(edm, odata));
data.put("ESMedia", createESMedia(edm, odata));
+ data.put("ESMediaStream", createESMediaStream(edm, odata));
data.put("ESKeyNav", createESKeyNav(edm, odata));
data.put("ESTwoKeyNav", createESTwoKeyNav(edm, odata));
data.put("ESCompCollComp", createESCompCollComp(edm, odata));
@@ -1786,6 +1786,47 @@ public class DataCreator {
createOperations("ESMedia", entityCollection, EntityTypeProvider.nameETMedia);
return entityCollection;
}
+
+ private EntityCollection createESMediaStream(final Edm edm, final OData odata) {
+ EntityCollection entityCollection = new EntityCollection();
+
+ Entity entity = new Entity()
+ .addProperty(createPrimitive("PropertyInt16", (short) 1))
+ .addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("darkturquoise")));
+ entity.setMediaContentType("image/svg+xml");
+ entity.setMediaETag("W/\"1\"");
+ entity.getMediaEditLinks().add(buildMediaLink("ESMediaStream", "ESMediaStream(1)/$value"));
+ entityCollection.getEntities().add(entity);
+
+ entity = new Entity()
+ .addProperty(createPrimitive("PropertyInt16", (short) 2))
+ .addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("royalblue")));
+ entity.setMediaContentType("image/svg+xml");
+ entity.setMediaETag("W/\"2\"");
+ entity.getMediaEditLinks().add(buildMediaLink("ESMediaStream", "ESMediaStream(2)/$value"));
+ entityCollection.getEntities().add(entity);
+
+ entity = new Entity()
+ .addProperty(createPrimitive("PropertyInt16", (short) 3))
+ .addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("crimson")));
+ entity.setMediaContentType("image/svg+xml");
+ entity.setMediaETag("W/\"3\"");
+ entity.getMediaEditLinks().add(buildMediaLink("ESMediaStream", "ESMediaStream(3)/$value"));
+ entityCollection.getEntities().add(entity);
+
+ entity = new Entity()
+ .addProperty(createPrimitive("PropertyInt16", (short) 4))
+ .addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("black")));
+ entity.setMediaContentType("image/svg+xml");
+ entity.setMediaETag("W/\"4\"");
+ entity.getMediaEditLinks().add(buildMediaLink("ESMediaStream", "ESMediaStream(4)/$value"));
+ entityCollection.getEntities().add(entity);
+
+ setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETMedia));
+ createEntityId(edm, odata, "ESMediaStream", entityCollection);
+ createOperations("ESMediaStream", entityCollection, EntityTypeProvider.nameETMedia);
+ return entityCollection;
+ }
private byte[] createImage(final String color) {
return ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalEntityProcessor.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalEntityProcessor.java
index 77a624e..d36880d 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalEntityProcessor.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalEntityProcessor.java
@@ -36,6 +36,7 @@ import org.apache.olingo.commons.api.data.DeltaLink;
import org.apache.olingo.commons.api.data.Entity;
import org.apache.olingo.commons.api.data.EntityCollection;
import org.apache.olingo.commons.api.data.EntityIterator;
+import org.apache.olingo.commons.api.data.EntityMediaObject;
import org.apache.olingo.commons.api.data.Operation;
import org.apache.olingo.commons.api.data.Property;
import org.apache.olingo.commons.api.data.ValueType;
@@ -156,7 +157,15 @@ public class TechnicalEntityProcessor extends TechnicalProcessor
final ContentType responseFormat) throws ODataApplicationException, ODataLibraryException {
getEdmEntitySet(uriInfo); // including checks
final Entity entity = readEntity(uriInfo);
-
+ final EdmEntitySet edmEntitySet = getEdmEntitySet(uriInfo.asUriInfoResource());
+ if (isMediaStreaming(edmEntitySet)) {
+ EntityMediaObject mediaEntity = new EntityMediaObject();
+ mediaEntity.setBytes(dataProvider.readMedia(entity));
+ response.setODataContent(odata.createFixedFormatSerializer()
+ .mediaEntityStreamed(mediaEntity).getODataContent());
+ } else {
+ response.setContent(odata.createFixedFormatSerializer().binary(dataProvider.readMedia(entity)));
+ }
response.setContent(odata.createFixedFormatSerializer().binary(dataProvider.readMedia(entity)));
response.setStatusCode(HttpStatusCode.OK.getStatusCode());
response.setHeader(HttpHeader.CONTENT_TYPE, entity.getMediaContentType());
@@ -760,6 +769,10 @@ public class TechnicalEntityProcessor extends TechnicalProcessor
return (ContainerProvider.ES_STREAM.equalsIgnoreCase(edmEntitySet.getName())||
ContainerProvider.ES_STREAM_SERVER_PAGINATION.equalsIgnoreCase(edmEntitySet.getName()));
}
+
+ private boolean isMediaStreaming(EdmEntitySet edmEntitySet) {
+ return (ContainerProvider.ES_MEDIA_STREAM.equalsIgnoreCase(edmEntitySet.getName()));
+ }
private SerializerResult serializeEntityCollection(final ODataRequest request, final EntityCollection
entityCollection, final EdmEntitySet edmEntitySet, final EdmEntityType edmEntityType,
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
index 6244024..5841c80 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
@@ -54,6 +54,8 @@ public class ContainerProvider {
public static final String AIRT_BYTE_NINE_PARAM = "AIRTByteNineParam";
public static final String ES_STREAM = "ESStream";
public static final String ES_STREAM_SERVER_PAGINATION = "ESStreamServerSidePaging";
+ public static final String ES_MEDIA = "ESMedia";
+ public static final String ES_MEDIA_STREAM = "ESMediaStream";
private final CsdlEdmProvider prov;
@@ -89,7 +91,8 @@ public class ContainerProvider {
entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, "ESCompCollAllPrim"));
entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, "ESCompComp"));
entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, "ESCompCollComp"));
- entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, "ESMedia"));
+ entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, ES_MEDIA));
+ entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, ES_MEDIA_STREAM));
entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, "ESInvisible"));
entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, "ESServerSidePaging"));
entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, ES_STREAM_SERVER_PAGINATION));
@@ -347,7 +350,19 @@ public class ContainerProvider {
new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression(
new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true"))));
- } else if (name.equals("ESInvisible")) {
+ } else if (name.equals("ESMediaStream")) {
+ return new CsdlEntitySet()
+ .setName("ESMediaStream")
+ .setType(EntityTypeProvider.nameETMedia)
+ .setIncludeInServiceDocument(true)
+ .setAnnotations(Arrays.asList(
+ new CsdlAnnotation().setTerm("Core.Description")
+ .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String)
+ .setValue("Contains media entities")),
+ new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression(
+ new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true"))));
+
+ } else if (name.equals("ESInvisible")) {
return new CsdlEntitySet()
.setName("ESInvisible")
.setIncludeInServiceDocument(false)