Repository: olingo-odata4
Updated Branches:
  refs/heads/master 6a736db10 -> 01c6aa159


NextLink Support in streaming

Change-Id: I199fe29991f9c02b870fd524b4276d16c1e5382e
Signed-off-by: Archana Rai <[email protected]>
Signed-off-by: Christian Amend <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/4b3c0237
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/4b3c0237
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/4b3c0237

Branch: refs/heads/master
Commit: 4b3c02373fa4e237fbefbb0038628c6aef907283
Parents: 6a736db
Author: Archana Rai <[email protected]>
Authored: Wed Nov 30 00:09:08 2016 +0530
Committer: Christian Amend <[email protected]>
Committed: Tue Dec 13 10:09:44 2016 +0100

----------------------------------------------------------------------
 .../fit/tecsvc/http/BasicStreamITCase.java      | 77 ++++++++++++++++++++
 .../olingo/commons/api/data/EntityIterator.java | 20 +++--
 .../api/uri/queryoption/expression/Literal.java |  3 +-
 .../serializer/json/ODataJsonSerializer.java    |  4 +-
 .../core/serializer/xml/ODataXmlSerializer.java |  4 +-
 .../olingo/server/tecsvc/data/DataCreator.java  | 32 ++++++++
 .../processor/TechnicalEntityProcessor.java     | 10 ++-
 .../options/ServerSidePagingHandler.java        |  4 +-
 .../tecsvc/provider/ContainerProvider.java      | 19 ++++-
 .../tecsvc/provider/EntityTypeProvider.java     | 11 +++
 .../server/tecsvc/provider/SchemaProvider.java  |  1 +
 11 files changed, 171 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/4b3c0237/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicStreamITCase.java
----------------------------------------------------------------------
diff --git 
a/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicStreamITCase.java 
b/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicStreamITCase.java
index 8935f97..ce77536 100644
--- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicStreamITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicStreamITCase.java
@@ -77,6 +77,83 @@ public class BasicStreamITCase extends 
AbstractBaseTestITCase {
     assertTrue(content.contains("<d:PropertyString>TEST 
2->streamed</d:PropertyString>"));
   }
 
+  @Test
+  public void streamESStreamServerSidePagingXml() throws Exception {
+    URL url = new URL(SERVICE_URI + "ESStreamServerSidePaging?$format=xml");
+
+    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+    connection.setRequestMethod(HttpMethod.GET.name());
+    connection.connect();
+
+    assertEquals(HttpStatusCode.OK.getStatusCode(), 
connection.getResponseCode());
+    assertEquals(ContentType.APPLICATION_XML, 
ContentType.create(connection.getHeaderField(HttpHeader.CONTENT_TYPE)));
+
+    final String content = IOUtils.toString(connection.getInputStream());
+    assertTrue(content.contains("<a:link rel=\"next\" href="));
+    
assertTrue(content.contains("ESStreamServerSidePaging?$format=xml&amp;%24skiptoken=1%2A10\"/>"));
+    assertTrue(content.contains("<a:id>ESStreamServerSidePaging(1)</a:id>"));
+    assertTrue(content.contains("<d:PropertyInt16 
m:type=\"Int16\">1</d:PropertyInt16>"));
+    assertTrue(content.contains("<d:PropertyStream 
m:type=\"Stream\">readLink</d:PropertyStream>"));
+  }
+  
+  @Test
+  public void streamESStreamServerSidePagingNextXml() throws Exception {
+    URL url = new URL(SERVICE_URI + 
"ESStreamServerSidePaging?$format=xml&$skiptoken=1%2A10");
+
+    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+    connection.setRequestMethod(HttpMethod.GET.name());
+    connection.connect();
+
+    assertEquals(HttpStatusCode.OK.getStatusCode(), 
connection.getResponseCode());
+    assertEquals(ContentType.APPLICATION_XML, 
ContentType.create(connection.getHeaderField(HttpHeader.CONTENT_TYPE)));
+
+    final String content = IOUtils.toString(connection.getInputStream());
+    assertTrue(content.contains("<a:link rel=\"next\" href="));
+    
assertTrue(content.contains("ESStreamServerSidePaging?$format=xml&amp;%24skiptoken=2%2A10\"/>"));
+    assertTrue(content.contains("<a:id>ESStreamServerSidePaging(11)</a:id>"));
+    assertTrue(content.contains("<d:PropertyInt16 
m:type=\"Int16\">11</d:PropertyInt16>"));
+    assertTrue(content.contains("<d:PropertyStream 
m:type=\"Stream\">readLink</d:PropertyStream>"));
+  }
+  
+  @Test
+  public void streamESStreamServerSidePagingJson() throws Exception {
+    URL url = new URL(SERVICE_URI + "ESStreamServerSidePaging?$format=json");
+
+    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+    connection.setRequestMethod(HttpMethod.GET.name());
+    connection.connect();
+
+    assertEquals(HttpStatusCode.OK.getStatusCode(), 
connection.getResponseCode());
+    assertEquals(ContentType.JSON, 
ContentType.create(connection.getHeaderField(HttpHeader.CONTENT_TYPE)));
+
+    final String content = IOUtils.toString(connection.getInputStream());
+
+    assertTrue(content.contains("{\"PropertyInt16\":2,"+
+    
"\"[email protected]\":\"eTag\",\"[email protected]\":\"image/jpeg\"}"));
+    assertTrue(content.contains("\"@odata.nextLink\""));
+    
assertTrue(content.contains("ESStreamServerSidePaging?$format=json&%24skiptoken=1%2A10"));
+  }
+  
+  
+  @Test
+  public void streamESStreamServerSidePagingJsonNext() throws Exception {
+    URL url = new URL(SERVICE_URI + 
"ESStreamServerSidePaging?$format=json&$skiptoken=1%2A10");
+
+    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+    connection.setRequestMethod(HttpMethod.GET.name());
+    connection.connect();
+
+    assertEquals(HttpStatusCode.OK.getStatusCode(), 
connection.getResponseCode());
+    assertEquals(ContentType.JSON, 
ContentType.create(connection.getHeaderField(HttpHeader.CONTENT_TYPE)));
+
+    final String content = IOUtils.toString(connection.getInputStream());
+
+    assertTrue(content.contains("{\"PropertyInt16\":12,"+
+    
"\"[email protected]\":\"eTag\",\"[email protected]\":\"image/jpeg\"}"));
+    assertTrue(content.contains("\"@odata.nextLink\""));
+    
assertTrue(content.contains("ESStreamServerSidePaging?$format=json&%24skiptoken=2%2A10"));
+  }
+  
   @Override
   protected ODataClient getClient() {
     return null;

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/4b3c0237/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntityIterator.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntityIterator.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntityIterator.java
index 728bf9a..145b2ac 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntityIterator.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/EntityIterator.java
@@ -28,7 +28,8 @@ import java.util.List;
  * Data representation as an Iterator for a collection of single entities.
  */
 public abstract class EntityIterator extends AbstractEntityCollection 
implements Iterator<Entity> {
-
+  
+  private URI next;
   /**
    * {@inheritDoc}
    */
@@ -80,12 +81,12 @@ public abstract class EntityIterator extends 
AbstractEntityCollection implements
   }
 
   /**
-   * {@inheritDoc}
-   * <p/>
-   * <b>ATTENTION:</b> <code>getNext</code> is not supported by default.
+   * Gets next link.
+   *
+   * @param next next link.
    */
   public URI getNext() {
-    throw new ODataNotSupportedException("Entity Iterator does not support 
getNext()");
+    return next;
   }
 
   /**
@@ -96,4 +97,13 @@ public abstract class EntityIterator extends 
AbstractEntityCollection implements
   public URI getDeltaLink() {
     throw new ODataNotSupportedException("Entity Iterator does not support 
getDeltaLink()");
   }
+  
+  /**
+   * Sets next link.
+   *
+   * @param next next link.
+   */
+  public void setNext(final URI next) {
+    this.next = next;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/4b3c0237/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/expression/Literal.java
----------------------------------------------------------------------
diff --git 
a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/expression/Literal.java
 
b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/expression/Literal.java
index d967c9b..2029551 100644
--- 
a/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/expression/Literal.java
+++ 
b/lib/server-api/src/main/java/org/apache/olingo/server/api/uri/queryoption/expression/Literal.java
@@ -22,6 +22,7 @@ import org.apache.olingo.commons.api.edm.EdmType;
 
 /**
  * Represents a literal expression node in the expression tree
+ * Literal is not validated by default
  */
 public interface Literal extends Expression {
 
@@ -39,5 +40,5 @@ public interface Literal extends Expression {
    * @return Type of the literal if detected. The type of the literal is 
guessed by the parser.
    */
   public EdmType getType();
-
+  
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/4b3c0237/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java
----------------------------------------------------------------------
diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java
index a86bdf0..0cf307f 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java
@@ -241,8 +241,8 @@ public class ODataJsonSerializer extends 
AbstractODataSerializer {
         writeEntitySet(metadata, entityType, entitySet,
             options.getExpand(), null, options.getSelect(), 
options.getWriteOnlyReferences(), null, json);
       }
-      // next link not supported by default for streaming results
-//      writeNextLink(entitySet, json);
+      // next link support for streaming results
+      writeNextLink(entitySet, json);
 
       json.close();
     } catch (final IOException e) {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/4b3c0237/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java
----------------------------------------------------------------------
diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java
index 0f0a673..c7ea2e2 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java
@@ -314,7 +314,9 @@ public class ODataXmlSerializer extends 
AbstractODataSerializer {
           && entitySet.getCount() != null) {
         writeCount(entitySet, writer);
       }
-
+      if (entitySet!=null && entitySet.getNext() != null) {
+        writeNextLink(entitySet, writer);
+      }
       boolean writeOnlyRef = (options != null && 
options.getWriteOnlyReferences());
       if (options == null) {
         writeEntitySet(metadata, entityType, entitySet, null, null, null, 
null, writer, writeOnlyRef,null);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/4b3c0237/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java
----------------------------------------------------------------------
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 39f7c81..1533dbd 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
@@ -76,6 +76,7 @@ public class DataCreator {
     data.put("ESTwoKeyNav", createESTwoKeyNav(edm, odata));
     data.put("ESCompCollComp", createESCompCollComp(edm, odata));
     data.put("ESServerSidePaging", createESServerSidePaging(edm, odata));
+    data.put("ESStreamServerSidePaging", createESStreamServerSidePaging(edm, 
odata));
     data.put("ESTwoKeyTwoPrim", createESTwoKeyTwoPrim(edm, odata));
     data.put("ESAllNullable", createESAllNullable(edm, odata));
     data.put("ESTwoBase", createESTwoBase(edm, odata));
@@ -498,6 +499,37 @@ public class DataCreator {
     createOperations("ESServerSidePaging", entityCollection, 
EntityTypeProvider.nameETServerSidePaging);
     return entityCollection;
   }
+  
+  private EntityCollection createESStreamServerSidePaging(final Edm edm, final 
OData odata) {
+    EntityCollection entityCollection = new EntityCollection();
+
+    for (short i = 1; i <= 503; i++) {
+
+      Link readLink = new Link();
+      readLink.setRel(Constants.NS_MEDIA_READ_LINK_REL);
+      readLink.setHref("readLink");
+      
+      entityCollection.getEntities().add(new Entity()
+          .addProperty(createPrimitive("PropertyInt16", i))
+          .addProperty(new Property(null, "PropertyStream", 
ValueType.PRIMITIVE, readLink)));
+
+      Link editLink = new Link();
+      editLink.setRel(Constants.NS_MEDIA_EDIT_LINK_REL);
+      editLink.setHref("http://mediaserver:1234/editLink";);
+      editLink.setMediaETag("eTag");
+      editLink.setType("image/jpeg");
+
+      entityCollection.getEntities().add(new Entity()
+          .addProperty(createPrimitive("PropertyInt16", ++i))
+          .addProperty(new Property(null, "PropertyStream", 
ValueType.PRIMITIVE, editLink)));   
+    }
+
+    setEntityType(entityCollection, 
edm.getEntityType(EntityTypeProvider.nameETStreamServerSidePaging));
+    
+    createEntityId(edm, odata, "ESStreamServerSidePaging", entityCollection);
+    createOperations("ESStreamServerSidePaging", entityCollection, 
EntityTypeProvider.nameETStreamServerSidePaging);
+    return entityCollection;
+  }
 
   private EntityCollection createESKeyNav(final Edm edm, final OData odata) {
     final EntityCollection entityCollection = new EntityCollection();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/4b3c0237/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalEntityProcessor.java
----------------------------------------------------------------------
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 da2e936..e21b646 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
@@ -18,6 +18,7 @@
  */
 package org.apache.olingo.server.tecsvc.processor;
 
+import java.net.URI;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
@@ -600,7 +601,8 @@ public class TechnicalEntityProcessor extends 
TechnicalProcessor
    *          otherwise <code>FALSE</code>.
    */
   private boolean isStreaming(EdmEntitySet edmEntitySet, ContentType 
contentType) {
-    return 
ContainerProvider.ES_STREAM.equalsIgnoreCase(edmEntitySet.getName());
+    return 
(ContainerProvider.ES_STREAM.equalsIgnoreCase(edmEntitySet.getName())||
+        
ContainerProvider.ES_STREAM_SERVER_PAGINATION.equalsIgnoreCase(edmEntitySet.getName()));
   }
 
   private SerializerResult serializeEntityCollection(final ODataRequest 
request, final EntityCollection
@@ -630,12 +632,16 @@ public class TechnicalEntityProcessor extends 
TechnicalProcessor
 
     EntityIterator streamCollection = new EntityIterator() {
       Iterator<Entity> entityIterator = entityCollection.iterator();
-
+      private URI next = entityCollection.getNext();
       @Override
       public List<Operation> getOperations() {
         return entityCollection.getOperations();
       } 
       
+      public URI getNext() {
+        return next;
+      }
+      
       @Override
       public boolean hasNext() {
         return entityIterator.hasNext();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/4b3c0237/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/ServerSidePagingHandler.java
----------------------------------------------------------------------
diff --git 
a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/ServerSidePagingHandler.java
 
b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/ServerSidePagingHandler.java
index ad8b7dd..7a8c1b4 100644
--- 
a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/ServerSidePagingHandler.java
+++ 
b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/ServerSidePagingHandler.java
@@ -32,6 +32,7 @@ import 
org.apache.olingo.server.api.uri.queryoption.SystemQueryOptionKind;
 public class ServerSidePagingHandler {
   private static final int MAX_PAGE_SIZE = 10;
   private static final String ES_SERVER_SIDE_PAGING = "ESServerSidePaging";
+  private static final String ES_STREAM_SERVER_SIDE_PAGING = 
"ESStreamServerSidePaging";
 
   /**
    * <p>Applies server-side paging to the given entity collection.</p>
@@ -97,7 +98,8 @@ public class ServerSidePagingHandler {
   }
 
   private static boolean shouldApplyServerSidePaging(final EdmEntitySet 
edmEntitySet) {
-    return ES_SERVER_SIDE_PAGING.equals(edmEntitySet.getName());
+    return (ES_SERVER_SIDE_PAGING.equals(edmEntitySet.getName())||
+        ES_STREAM_SERVER_SIDE_PAGING.equals(edmEntitySet.getName()));
   }
 
   private static int getPageSize(final int skipTokenPageSize, final Integer 
preferredPageSize) {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/4b3c0237/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
----------------------------------------------------------------------
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 cb554f7..9cbd5e8 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
@@ -53,6 +53,7 @@ public class ContainerProvider {
   public static final String AIRT_TWO_PARAM = "AIRTTwoParam";
   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";
 
   private final CsdlEdmProvider prov;
 
@@ -91,6 +92,7 @@ public class ContainerProvider {
     entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, 
"ESMedia"));
     entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, 
"ESInvisible"));
     entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, 
"ESServerSidePaging"));
+    entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, 
ES_STREAM_SERVER_PAGINATION));
     entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, 
"ESAllNullable"));
     entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, 
"ESKeyNav"));
     entitySets.add(prov.getEntitySet(ContainerProvider.nameContainer, 
"ESTwoKeyNav"));
@@ -359,8 +361,21 @@ public class ContainerProvider {
                         .setValue("Divides the response to several pages using 
$skiptoken and providing a nextLink")),
                 new 
CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression(
                     new 
CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, 
"true"))));
-
-      } else if (name.equals("ESAllNullable")) {
+        
+      } else if (name.equals(ES_STREAM_SERVER_PAGINATION)) {  
+        return new CsdlEntitySet()
+          .setName(ES_STREAM_SERVER_PAGINATION)
+          .setType(EntityTypeProvider.nameETStreamServerSidePaging)
+          .setAnnotations(Arrays.asList(
+              new CsdlAnnotation().setTerm("Core.Description")
+                  .setExpression(new 
CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String)
+                      .setValue("Divides the stream response to several pages 
using $skiptoken and providing a nextLink"
+                          + "Entity set will be streamed and it contains 
entities with various properties of " +
+                          "type primitive, collection of primitive, complex 
and collection of complex")),
+              new 
CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression(
+                  new 
CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, 
"true"))));
+        
+        } else if (name.equals("ESAllNullable")) {
         return new CsdlEntitySet()
             .setName("ESAllNullable")
             .setType(EntityTypeProvider.nameETAllNullable)

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/4b3c0237/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/EntityTypeProvider.java
----------------------------------------------------------------------
diff --git 
a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/EntityTypeProvider.java
 
b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/EntityTypeProvider.java
index 6e9a1b7..26c6f19 100644
--- 
a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/EntityTypeProvider.java
+++ 
b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/EntityTypeProvider.java
@@ -68,6 +68,8 @@ public class EntityTypeProvider {
       "ETMixPrimCollComp");
   public static final FullQualifiedName nameETServerSidePaging =
       new FullQualifiedName(SchemaProvider.NAMESPACE, "ETServerSidePaging");
+  public static final FullQualifiedName nameETStreamServerSidePaging =
+      new FullQualifiedName(SchemaProvider.NAMESPACE, 
"ETStreamServerSidePaging");
   public static final FullQualifiedName nameETTwoBase = new 
FullQualifiedName(SchemaProvider.NAMESPACE, "ETTwoBase");
   public static final FullQualifiedName nameETTwoBaseTwoKeyNav =
       new FullQualifiedName(SchemaProvider.NAMESPACE, "ETTwoBaseTwoKeyNav");
@@ -277,6 +279,15 @@ public class EntityTypeProvider {
           
.setProperties(Arrays.asList(PropertyProvider.propertyInt16_NotNullable,
               PropertyProvider.propertyString_NotNullable));
 
+    }else if (entityTypeName.equals(nameETStreamServerSidePaging)) {
+      return new CsdlEntityType()
+          .setName(nameETStreamServerSidePaging.getName())
+          .setKey(Arrays.asList(
+              new CsdlPropertyRef()
+                  .setName("PropertyInt16")))
+          .setProperties(Arrays.asList(
+              PropertyProvider.propertyInt16_NotNullable,
+              PropertyProvider.propertyStream));     
     } else if (entityTypeName.equals(nameETAllNullable)) {
       return new CsdlEntityType()
           .setName("ETAllNullable")

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/4b3c0237/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/SchemaProvider.java
----------------------------------------------------------------------
diff --git 
a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/SchemaProvider.java
 
b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/SchemaProvider.java
index ac2f916..b8c525a 100644
--- 
a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/SchemaProvider.java
+++ 
b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/SchemaProvider.java
@@ -75,6 +75,7 @@ public class SchemaProvider {
     entityTypes.add(prov.getEntityType(EntityTypeProvider.nameETMedia));
     entityTypes.add(prov.getEntityType(EntityTypeProvider.nameETFourKeyAlias));
     
entityTypes.add(prov.getEntityType(EntityTypeProvider.nameETServerSidePaging));
+    
entityTypes.add(prov.getEntityType(EntityTypeProvider.nameETStreamServerSidePaging));
     entityTypes.add(prov.getEntityType(EntityTypeProvider.nameETAllNullable));
     entityTypes.add(prov.getEntityType(EntityTypeProvider.nameETKeyNav));
     entityTypes.add(prov.getEntityType(EntityTypeProvider.nameETTwoKeyNav));

Reply via email to