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 2015/03/05 10:07:24 UTC
[1/2] olingo-odata4 git commit: [OLINGO-557] Some function imports
for technical service
Repository: olingo-odata4
Updated Branches:
refs/heads/master 0d57a0763 -> 93f2ed5cf
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/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 27e6a68..c0bb6c1 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
@@ -130,7 +130,7 @@ public class SchemaProvider {
functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTETTwoKeyNavParam));
functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTETTwoKeyNavParamCTTwoPrim));
functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTStringTwoParam));
- functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTESTwoKeyNavParam));
+ functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTCollETTwoKeyNavParam));
functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTString));
functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTCollStringTwoParam));
functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTCollString));
@@ -140,7 +140,7 @@ public class SchemaProvider {
functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTCTTwoPrim));
functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTCollCTTwoPrim));
functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTETMedia));
- functions.addAll(prov.getFunctions(FunctionProvider.nameUFNRTESMixPrimCollCompTwoParam));
+ functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTCollETMixPrimCollCompTwoParam));
functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTETAllPrimTwoParam));
functions.addAll(prov.getFunctions(FunctionProvider.nameUFCRTESMixPrimCollCompTwoParam));
functions.addAll(prov.getFunctions(FunctionProvider.nameUFNRTCollCTNavFiveProp));
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java
index b62371e..5870439 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java
@@ -299,7 +299,7 @@ public class ODataHandlerTest {
any(ODataRequest.class), any(ODataResponse.class), any(UriInfo.class), any(ContentType.class));
EntityCollectionProcessor entityCollectionProcessor = mock(EntityCollectionProcessor.class);
- dispatch(HttpMethod.GET, "FICRTESTwoKeyNavParam(ParameterInt16=123)", entityCollectionProcessor);
+ dispatch(HttpMethod.GET, "FICRTCollESTwoKeyNavParam(ParameterInt16=123)", entityCollectionProcessor);
verify(entityCollectionProcessor).readEntityCollection(
any(ODataRequest.class), any(ODataResponse.class), any(UriInfo.class), any(ContentType.class));
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java
index c08e37f..65c1697 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java
@@ -219,11 +219,11 @@ public class UriResourceImplTest {
// function collection
impl = new UriResourceFunctionImpl();
- functionImport = edm.getEntityContainer(null).getFunctionImport("FICRTESTwoKeyNavParam");
+ functionImport = edm.getEntityContainer(null).getFunctionImport("FICRTCollESTwoKeyNavParam");
assertNotNull(function);
UriParameterImpl parameter = new UriParameterImpl().setName("ParameterInt16");
impl.setFunctionImport(functionImport, Arrays.asList(parameter));
- assertEquals("FICRTESTwoKeyNavParam", impl.toString());
+ assertEquals("FICRTCollESTwoKeyNavParam", impl.toString());
impl.setFunction(functionImport.getUnboundFunction(Arrays.asList("ParameterInt16")));
assertEquals(true, impl.isCollection());
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java
index 4ba40a6..a774df6 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java
@@ -1699,13 +1699,13 @@ public class TestFullResourcePath {
.n()
.isFunction("BFCETBaseTwoKeyNavRTETTwoKeyNav");
- testUri.run("FICRTESTwoKeyNavParam(ParameterInt16=1)"
+ testUri.run("FICRTCollESTwoKeyNavParam(ParameterInt16=1)"
+ "/olingo.odata.test1.ETBaseTwoKeyNav(PropertyInt16=2,PropertyString='3')"
+ "/olingo.odata.test1.BFCETBaseTwoKeyNavRTETTwoKeyNav()")
.isKind(UriInfoKind.resource).goPath()
.first()
- .isFunctionImport("FICRTESTwoKeyNavParam")
- .isFunction("UFCRTESTwoKeyNavParam")
+ .isFunctionImport("FICRTCollESTwoKeyNavParam")
+ .isFunction("UFCRTCollETTwoKeyNavParam")
.isParameter(0, "ParameterInt16", "1")
.isType(EntityTypeProvider.nameETTwoKeyNav)
.isTypeFilterOnCollection(EntityTypeProvider.nameETBaseTwoKeyNav)
@@ -1733,10 +1733,10 @@ public class TestFullResourcePath {
.isKeyPredicate(0, "PropertyInt16", "2")
.isKeyPredicate(1, "PropertyString", "'3'");
- testUri.run("FICRTETMedia()/$value")
+ testUri.run("FICRTESMedia()/$value")
.isKind(UriInfoKind.resource).goPath()
.first()
- .isFunctionImport("FICRTETMedia")
+ .isFunctionImport("FICRTESMedia")
.isFunction("UFCRTETMedia")
.n()
.isValue();
@@ -1748,11 +1748,11 @@ public class TestFullResourcePath {
.isFunction("UFCRTETKeyNav")
.n()
.isRef();
- testUri.run("FICRTESTwoKeyNavParam(ParameterInt16=1)/$ref")
+ testUri.run("FICRTETTwoKeyNavParam(ParameterInt16=1)/$ref")
.isKind(UriInfoKind.resource).goPath()
.first()
- .isFunctionImport("FICRTESTwoKeyNavParam")
- .isFunction("UFCRTESTwoKeyNavParam")
+ .isFunctionImport("FICRTETTwoKeyNavParam")
+ .isFunction("UFCRTETTwoKeyNavParam")
.n()
.isRef();
@@ -1777,12 +1777,12 @@ public class TestFullResourcePath {
.isType(EntityTypeProvider.nameETTwoKeyNav)
.isTypeFilterOnEntry(EntityTypeProvider.nameETBaseTwoKeyNav);
- testUri.run("FICRTESTwoKeyNavParam(ParameterInt16=1)"
+ testUri.run("FICRTCollESTwoKeyNavParam(ParameterInt16=1)"
+ "/olingo.odata.test1.ETBaseTwoKeyNav(PropertyInt16=2,PropertyString='3')")
.isKind(UriInfoKind.resource).goPath()
.first()
- .isFunctionImport("FICRTESTwoKeyNavParam")
- .isFunction("UFCRTESTwoKeyNavParam")
+ .isFunctionImport("FICRTCollESTwoKeyNavParam")
+ .isFunction("UFCRTCollETTwoKeyNavParam")
.isParameter(0, "ParameterInt16", "1")
.isType(EntityTypeProvider.nameETTwoKeyNav)
.isTypeFilterOnCollection(EntityTypeProvider.nameETBaseTwoKeyNav)
@@ -1802,11 +1802,11 @@ public class TestFullResourcePath {
.isParameter(1, "ParameterString", "'2'")
.isType(EntityTypeProvider.nameETMixPrimCollComp);
- testUri.run("FINRTESMixPrimCollCompTwoParam(ParameterInt16=1,ParameterString='2')")
+ testUri.run("FICRTESMixPrimCollCompTwoParam(ParameterInt16=1,ParameterString='2')")
.isKind(UriInfoKind.resource).goPath()
.first()
- .isFunctionImport("FINRTESMixPrimCollCompTwoParam")
- .isFunction("UFNRTESMixPrimCollCompTwoParam")
+ .isFunctionImport("FICRTESMixPrimCollCompTwoParam")
+ .isFunction("UFCRTESMixPrimCollCompTwoParam")
.isParameter(0, "ParameterInt16", "1")
.isParameter(1, "ParameterString", "'2'")
.isType(EntityTypeProvider.nameETMixPrimCollComp);
@@ -1836,53 +1836,53 @@ public class TestFullResourcePath {
@Test
public void runFunctionImpEsAlias() throws Exception {
- testUri.run("FICRTESTwoKeyNavParam(ParameterInt16=@parameterAlias)", "@parameterAlias=1");
- testUri.run("FICRTESTwoKeyNavParam(ParameterInt16=@parameterAlias)/$count", "@parameterAlias=1");
- testUri.run("FICRTESTwoKeyNavParam(ParameterInt16=@invalidAlias)", "@validAlias=1");
+ testUri.run("FICRTCollESTwoKeyNavParam(ParameterInt16=@parameterAlias)", "@parameterAlias=1");
+ testUri.run("FICRTCollESTwoKeyNavParam(ParameterInt16=@parameterAlias)/$count", "@parameterAlias=1");
+ testUri.run("FICRTCollESTwoKeyNavParam(ParameterInt16=@invalidAlias)", "@validAlias=1");
}
@Test
public void runFunctionImpEsCast() throws Exception {
- testUri.run("FICRTESTwoKeyNavParam(ParameterInt16=1)/olingo.odata.test1.ETBaseTwoKeyNav")
+ testUri.run("FICRTCollESTwoKeyNavParam(ParameterInt16=1)/olingo.odata.test1.ETBaseTwoKeyNav")
.isKind(UriInfoKind.resource).goPath()
.first()
- .isFunctionImport("FICRTESTwoKeyNavParam")
- .isFunction("UFCRTESTwoKeyNavParam")
+ .isFunctionImport("FICRTCollESTwoKeyNavParam")
+ .isFunction("UFCRTCollETTwoKeyNavParam")
.isParameter(0, "ParameterInt16", "1")
.isType(EntityTypeProvider.nameETTwoKeyNav)
.isTypeFilterOnCollection(EntityTypeProvider.nameETBaseTwoKeyNav);
- testUri.run("FICRTESTwoKeyNavParam(ParameterInt16=1)/olingo.odata.test1.ETBaseTwoKeyNav/$count")
+ testUri.run("FICRTCollESTwoKeyNavParam(ParameterInt16=1)/olingo.odata.test1.ETBaseTwoKeyNav/$count")
.isKind(UriInfoKind.resource).goPath()
.first()
- .isFunctionImport("FICRTESTwoKeyNavParam")
- .isFunction("UFCRTESTwoKeyNavParam")
+ .isFunctionImport("FICRTCollESTwoKeyNavParam")
+ .isFunction("UFCRTCollETTwoKeyNavParam")
.isParameter(0, "ParameterInt16", "1")
.isType(EntityTypeProvider.nameETTwoKeyNav)
.isTypeFilterOnCollection(EntityTypeProvider.nameETBaseTwoKeyNav)
.n()
.isCount();
- testUri.run("FICRTESTwoKeyNavParam(ParameterInt16=1)"
+ testUri.run("FICRTCollESTwoKeyNavParam(ParameterInt16=1)"
+ "/olingo.odata.test1.ETBaseTwoKeyNav(PropertyInt16=2,PropertyString='3')")
.isKind(UriInfoKind.resource).goPath()
.first()
- .isFunctionImport("FICRTESTwoKeyNavParam")
- .isFunction("UFCRTESTwoKeyNavParam")
+ .isFunctionImport("FICRTCollESTwoKeyNavParam")
+ .isFunction("UFCRTCollETTwoKeyNavParam")
.isParameter(0, "ParameterInt16", "1")
.isType(EntityTypeProvider.nameETTwoKeyNav)
.isTypeFilterOnCollection(EntityTypeProvider.nameETBaseTwoKeyNav)
.isKeyPredicate(0, "PropertyInt16", "2")
.isKeyPredicate(1, "PropertyString", "'3'");
- testUri.run("FICRTESTwoKeyNavParam(ParameterInt16=1)"
+ testUri.run("FICRTCollESTwoKeyNavParam(ParameterInt16=1)"
+ "/olingo.odata.test1.ETBaseTwoKeyNav(PropertyInt16=2,PropertyString='3')"
+ "/olingo.odata.test1.ETTwoBaseTwoKeyNav")
.isKind(UriInfoKind.resource).goPath()
.first()
- .isFunctionImport("FICRTESTwoKeyNavParam")
- .isFunction("UFCRTESTwoKeyNavParam")
+ .isFunctionImport("FICRTCollESTwoKeyNavParam")
+ .isFunction("UFCRTCollETTwoKeyNavParam")
.isParameter(0, "ParameterInt16", "1")
.isType(EntityTypeProvider.nameETTwoKeyNav)
.isTypeFilterOnCollection(EntityTypeProvider.nameETBaseTwoKeyNav)
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestUriParserImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestUriParserImpl.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestUriParserImpl.java
index 9157d2a..8d50512 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestUriParserImpl.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestUriParserImpl.java
@@ -655,9 +655,9 @@ public class TestUriParserImpl {
.isType(EntityTypeProvider.nameETTwoKeyNav, false);
// returning collection of entity (aka entitySet)
- testRes.run("FICRTESTwoKeyNavParam(ParameterInt16=1)")
- .isFunctionImport("FICRTESTwoKeyNavParam")
- .isFunction("UFCRTESTwoKeyNavParam")
+ testRes.run("FICRTCollESTwoKeyNavParam(ParameterInt16=1)")
+ .isFunctionImport("FICRTCollESTwoKeyNavParam")
+ .isFunction("UFCRTCollETTwoKeyNavParam")
.isType(EntityTypeProvider.nameETTwoKeyNav, true);
}
@@ -686,20 +686,20 @@ public class TestUriParserImpl {
.isPrimitiveProperty("PropertyInt16", PropertyProvider.nameInt16, false);
// test chains; returning collection of entity (aka entitySet)
- testRes.run("FICRTESTwoKeyNavParam(ParameterInt16=1)(PropertyInt16=1,PropertyString='ABC')")
+ testRes.run("FICRTCollESTwoKeyNavParam(ParameterInt16=1)(PropertyInt16=1,PropertyString='ABC')")
.at(0)
- .isFunctionImport("FICRTESTwoKeyNavParam")
- .isFunction("UFCRTESTwoKeyNavParam")
+ .isFunctionImport("FICRTCollESTwoKeyNavParam")
+ .isFunction("UFCRTCollETTwoKeyNavParam")
.isType(EntityTypeProvider.nameETTwoKeyNav, false)
.isParameter(0, "ParameterInt16", "1")
.isKeyPredicate(0, "PropertyInt16", "1")
.isKeyPredicate(1, "PropertyString", "'ABC'");
// test chains; returning collection of entity (aka entitySet)
- testRes.run("FICRTESTwoKeyNavParam(ParameterInt16=1)(PropertyInt16=1,PropertyString='ABC')/PropertyInt16")
+ testRes.run("FICRTCollESTwoKeyNavParam(ParameterInt16=1)(PropertyInt16=1,PropertyString='ABC')/PropertyInt16")
.at(0)
- .isFunctionImport("FICRTESTwoKeyNavParam")
- .isFunction("UFCRTESTwoKeyNavParam")
+ .isFunctionImport("FICRTCollESTwoKeyNavParam")
+ .isFunction("UFCRTCollETTwoKeyNavParam")
.isType(EntityTypeProvider.nameETTwoKeyNav, false)
.isParameter(0, "ParameterInt16", "1")
.isKeyPredicate(0, "PropertyInt16", "1")
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java
index 51e5a83..db16728 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/queryoption/expression/ExpressionTest.java
@@ -171,7 +171,7 @@ public class ExpressionTest {
// UriResourceImplKeyPred typeFilter on entry
EdmEntityType entityBaseType = edm.getEntityType(EntityTypeProvider.nameETBaseTwoKeyNav);
- function = edm.getUnboundFunction(FunctionProvider.nameUFCRTESTwoKeyNavParam, Arrays.asList("ParameterInt16"));
+ function = edm.getUnboundFunction(FunctionProvider.nameUFCRTCollETTwoKeyNavParam, Arrays.asList("ParameterInt16"));
expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart(
new UriResourceFunctionImpl().setFunction(function).setEntryTypeFilter(entityBaseType))
.asUriInfoResource());
@@ -179,7 +179,7 @@ public class ExpressionTest {
// UriResourceImplKeyPred typeFilter on entry
entityBaseType = edm.getEntityType(EntityTypeProvider.nameETBaseTwoKeyNav);
- function = edm.getUnboundFunction(FunctionProvider.nameUFCRTESTwoKeyNavParam, Arrays.asList("ParameterInt16"));
+ function = edm.getUnboundFunction(FunctionProvider.nameUFCRTCollETTwoKeyNavParam, Arrays.asList("ParameterInt16"));
expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.resource).addResourcePart(
new UriResourceFunctionImpl().setFunction(function).setCollectionTypeFilter(entityBaseType))
.asUriInfoResource());
@@ -187,7 +187,7 @@ public class ExpressionTest {
// no typed
entityBaseType = edm.getEntityType(EntityTypeProvider.nameETBaseTwoKeyNav);
- function = edm.getUnboundFunction(FunctionProvider.nameUFCRTESTwoKeyNavParam, Arrays.asList("ParameterInt16"));
+ function = edm.getUnboundFunction(FunctionProvider.nameUFCRTCollETTwoKeyNavParam, Arrays.asList("ParameterInt16"));
expression.setResourcePath(new UriInfoImpl().setKind(UriInfoKind.all));
assertEquals(null, expression.getType());
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/validator/UriValidatorTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/validator/UriValidatorTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/validator/UriValidatorTest.java
index bdde9ce..6386570 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/validator/UriValidatorTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/validator/UriValidatorTest.java
@@ -145,11 +145,11 @@ public class UriValidatorTest {
{ "FINRTInt16()" },
{ "FICRTETKeyNav()" },
- { "FICRTESTwoKeyNavParam(ParameterInt16=1)" },
+ { "FICRTETTwoKeyNavParam(ParameterInt16=1)" },
{ "FICRTCollString()" },
{ "FICRTCTTwoPrim()" },
{ "FICRTCollCTTwoPrim()" },
- { "FICRTETMedia()" },
+ { "FICRTESMedia()" },
{ "ESTwoKeyNav/olingo.odata.test1.BAESTwoKeyNavRTESTwoKeyNav" },
{ "ESAllPrim/olingo.odata.test1.BAESAllPrimRTETAllPrim" },
[2/2] olingo-odata4 git commit: [OLINGO-557] Some function imports
for technical service
Posted by mi...@apache.org.
[OLINGO-557] Some function imports for technical service
Change-Id: I4f6589672eed8c70dd138d74f09dbd3caddf6cfb
Signed-off-by: Michael Bolz <mi...@sap.com>
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/93f2ed5c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/93f2ed5c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/93f2ed5c
Branch: refs/heads/master
Commit: 93f2ed5cf2aac3664adc0b303a10317ed1e82140
Parents: 0d57a07
Author: Klaus Straubinger <kl...@sap.com>
Authored: Thu Mar 5 08:47:54 2015 +0100
Committer: Michael Bolz <mi...@sap.com>
Committed: Thu Mar 5 09:10:43 2015 +0100
----------------------------------------------------------------------
.../olingo/fit/tecsvc/client/BasicITCase.java | 5 +-
.../fit/tecsvc/client/FunctionImportITCase.java | 91 ++++
.../edm/provider/EdmEntityContainerImpl.java | 10 +-
.../olingo/server/tecsvc/data/DataCreator.java | 444 +++++++++----------
.../olingo/server/tecsvc/data/DataProvider.java | 102 ++---
.../olingo/server/tecsvc/data/FunctionData.java | 67 +++
.../processor/TechnicalEntityProcessor.java | 37 +-
.../tecsvc/processor/TechnicalProcessor.java | 87 +++-
.../options/ServerSidePagingHandler.java | 2 +-
.../tecsvc/provider/ContainerProvider.java | 68 +--
.../tecsvc/provider/FunctionProvider.java | 56 ++-
.../server/tecsvc/provider/SchemaProvider.java | 4 +-
.../olingo/server/core/ODataHandlerTest.java | 2 +-
.../server/core/uri/UriResourceImplTest.java | 4 +-
.../core/uri/antlr/TestFullResourcePath.java | 58 +--
.../core/uri/antlr/TestUriParserImpl.java | 18 +-
.../queryoption/expression/ExpressionTest.java | 6 +-
.../core/uri/validator/UriValidatorTest.java | 4 +-
18 files changed, 632 insertions(+), 433 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
index 8ebaa1b..5bbde27 100644
--- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
@@ -24,7 +24,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.net.URI;
@@ -119,11 +118,9 @@ public class BasicITCase extends AbstractBaseTestITCase {
XMLMetadata xmlMetadata = response.getBody();
assertNotNull(xmlMetadata);
- assertTrue(xmlMetadata instanceof XMLMetadata);
assertEquals(2, xmlMetadata.getSchemas().size());
assertEquals("olingo.odata.test1", xmlMetadata.getSchema("olingo.odata.test1").getNamespace());
- final List<Reference> references =
- ((XMLMetadata) xmlMetadata).getReferences();
+ final List<Reference> references = xmlMetadata.getReferences();
assertEquals(1, references.size());
assertThat(references.get(0).getUri().toASCIIString(), containsString("vocabularies/Org.OData.Core.V1"));
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/FunctionImportITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/FunctionImportITCase.java b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/FunctionImportITCase.java
new file mode 100644
index 0000000..54ce6fa
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/FunctionImportITCase.java
@@ -0,0 +1,91 @@
+/*
+ * 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.fit.tecsvc.client;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.olingo.client.api.ODataClient;
+import org.apache.olingo.client.api.communication.request.invoke.ODataInvokeRequest;
+import org.apache.olingo.client.api.communication.response.ODataInvokeResponse;
+import org.apache.olingo.client.core.ODataClientFactory;
+import org.apache.olingo.commons.api.domain.ODataEntity;
+import org.apache.olingo.commons.api.domain.ODataEntitySet;
+import org.apache.olingo.commons.api.domain.ODataProperty;
+import org.apache.olingo.commons.api.domain.ODataValue;
+import org.apache.olingo.commons.api.format.ODataFormat;
+import org.apache.olingo.commons.api.http.HttpStatusCode;
+import org.apache.olingo.fit.AbstractBaseTestITCase;
+import org.apache.olingo.fit.tecsvc.TecSvcConst;
+import org.junit.Test;
+
+public class FunctionImportITCase extends AbstractBaseTestITCase {
+
+ @Test
+ public void entity() throws Exception {
+ final ODataInvokeRequest<ODataEntity> request = getClient().getInvokeRequestFactory()
+ .getFunctionInvokeRequest(getClient().newURIBuilder(TecSvcConst.BASE_URI)
+ .appendOperationCallSegment("FICRTESTwoKeyNav").build(), ODataEntity.class);
+ assertNotNull(request);
+
+ final ODataInvokeResponse<ODataEntity> response = request.execute();
+ assertEquals(HttpStatusCode.OK.getStatusCode(), response.getStatusCode());
+
+ final ODataEntity entity = response.getBody();
+ assertNotNull(entity);
+ final ODataProperty property = entity.getProperty("PropertyInt16");
+ assertNotNull(property);
+ assertEquals(1, property.getPrimitiveValue().toValue());
+ }
+
+ @Test
+ public void entityCollection() {
+ final ODataInvokeRequest<ODataEntitySet> request = getClient().getInvokeRequestFactory()
+ .getFunctionInvokeRequest(getClient().newURIBuilder(TecSvcConst.BASE_URI)
+ .appendOperationCallSegment("FICRTCollESTwoKeyNavParam").build(), ODataEntitySet.class,
+ Collections.<String, ODataValue> singletonMap("ParameterInt16",
+ getClient().getObjectFactory().newPrimitiveValueBuilder().buildInt32(2)));
+ assertNotNull(request);
+
+ final ODataInvokeResponse<ODataEntitySet> response = request.execute();
+ assertEquals(HttpStatusCode.OK.getStatusCode(), response.getStatusCode());
+
+ final ODataEntitySet entitySet = response.getBody();
+ assertNotNull(entitySet);
+ final List<ODataEntity> entities = entitySet.getEntities();
+ assertNotNull(entities);
+ assertEquals(2, entities.size());
+ final ODataEntity entity = entities.get(1);
+ assertNotNull(entity);
+ final ODataProperty property = entity.getProperty("PropertyString");
+ assertNotNull(property);
+ assertNotNull(property.getPrimitiveValue());
+ assertEquals("2", property.getPrimitiveValue().toValue());
+ }
+
+ @Override
+ protected ODataClient getClient() {
+ ODataClient odata = ODataClientFactory.getClient();
+ odata.getConfiguration().setDefaultPubFormat(ODataFormat.JSON);
+ return odata;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java
index 1ed8d56..74b2e4a 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java
@@ -139,13 +139,13 @@ public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
@Override
protected void loadAllFunctionImports() {
loadContainer();
- List<FunctionImport> providerFuctionImports = container.getFunctionImports();
- if (providerFuctionImports != null) {
- for (FunctionImport functionImport : providerFuctionImports) {
+ List<FunctionImport> providerFunctionImports = container.getFunctionImports();
+ if (providerFunctionImports != null) {
+ for (FunctionImport functionImport : providerFunctionImports) {
String functionName = functionImport.getName();
if (!functionImports.containsKey(functionName)) {
- EdmFunctionImportImpl impl = new EdmFunctionImportImpl(edm, this, functionImport);
- functionImports.put(functionName, impl);
+ functionImports.put(functionName,
+ new EdmFunctionImportImpl(edm, this, functionImport));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/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 d2e7a91..1f0f491 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
@@ -29,16 +29,17 @@ import java.util.Map;
import java.util.TimeZone;
import java.util.UUID;
+import org.apache.olingo.commons.api.data.ComplexValue;
import org.apache.olingo.commons.api.data.Entity;
import org.apache.olingo.commons.api.data.EntitySet;
import org.apache.olingo.commons.api.data.Link;
-import org.apache.olingo.commons.api.data.ComplexValue;
import org.apache.olingo.commons.api.data.Property;
import org.apache.olingo.commons.api.data.ValueType;
+import org.apache.olingo.commons.api.domain.ODataLinkType;
+import org.apache.olingo.commons.core.data.ComplexValueImpl;
import org.apache.olingo.commons.core.data.EntityImpl;
import org.apache.olingo.commons.core.data.EntitySetImpl;
import org.apache.olingo.commons.core.data.LinkImpl;
-import org.apache.olingo.commons.core.data.ComplexValueImpl;
import org.apache.olingo.commons.core.data.PropertyImpl;
public class DataCreator {
@@ -61,189 +62,171 @@ public class DataCreator {
data.put("ESTwoKeyNav", createESTwoKeyNav());
data.put("ESCompCollComp", createESCompCollComp());
data.put("ESServerSidePaging", createESServerSidePaging());
-
+
linkESTwoPrim(data);
linkESAllPrim(data);
linkESKeyNav(data);
linkESTwoKeyNav(data);
}
+ protected Map<String, EntitySet> getData() {
+ return data;
+ }
+
private EntitySet createESServerSidePaging() {
EntitySet entitySet = new EntitySetImpl();
-
- for(int i = 1; i <= 503; i++) {
+
+ for (int i = 1; i <= 503; i++) {
entitySet.getEntities().add(new EntityImpl()
- .addProperty(createPrimitive("PropertyInt16", i))
- .addProperty(createPrimitive("PropertyString", "Number:" + i))
- );
+ .addProperty(createPrimitive("PropertyInt16", i))
+ .addProperty(createPrimitive("PropertyString", "Number:" + i)));
}
-
+
return entitySet;
}
- Map<String, EntitySet> getData() {
- return data;
- }
-
private EntitySet createESKeyNav() {
final EntitySet entitySet = new EntitySetImpl();
-
+
entitySet.getEntities().add(createETKeyNavEntity(1, "I am String Property 1"));
entitySet.getEntities().add(createETKeyNavEntity(2, "I am String Property 2"));
entitySet.getEntities().add(createETKeyNavEntity(3, "I am String Property 3"));
-
+
return entitySet;
}
-
+
+ @SuppressWarnings("unchecked")
private Entity createETKeyNavEntity(int propertyInt16, String propertyString) {
- // PropertyCompAllPrim
- ComplexValue cvCompAllPrim = createKeyNavAllPrimComplexValue();
-
- // CollPropertyComp
- List<ComplexValue> ccComp = new ArrayList<ComplexValue>();
- ccComp.add(createCTPrimCompValue(1));
- ccComp.add(createCTPrimCompValue(2));
- ccComp.add(createCTPrimCompValue(3));
-
return new EntityImpl()
- .addProperty(createPrimitive("PropertyInt16", propertyInt16))
- .addProperty(createPrimitive("PropertyString", propertyString))
- .addProperty(createComplex("PropertyComp",
- createPrimitive("PropertyInt16", 1)))
- .addProperty(new PropertyImpl(null, "PropertyCompAllPrim", ValueType.COMPLEX, cvCompAllPrim))
- .addProperty(createComplex("PropertyCompTwoPrim",
- createPrimitive("PropertyInt16", 16),
- createPrimitive("PropertyString", "Test123")))
- .addProperty(createPrimitiveCollection("CollPropertyString",
- "Employee1@company.example",
- "Employee2@company.example",
- "Employee3@company.example"))
- .addProperty(createPrimitiveCollection("CollPropertyInt16", 1000, 2000, 30112))
- .addProperty(new PropertyImpl(null, "CollPropertyComp", ValueType.COLLECTION_COMPLEX, ccComp))
- .addProperty(createComplex("PropertyCompComp",
- createPrimitive("PropertyString", "1"),
- createComplex("PropertyComp", createPrimitive("PropertyInt16", 1))));
- }
-
- private ComplexValue createCTPrimCompValue(int properyInt16) {
- final ComplexValue cvBasePrimCompNav = new ComplexValueImpl();
- final ComplexValue cvAllPrim = createKeyNavAllPrimComplexValue();
-
- cvBasePrimCompNav.getValue().add(createPrimitive("PropertyInt16", properyInt16));
- cvBasePrimCompNav.getValue().add(new PropertyImpl(null, "PropertyComp", ValueType.COMPLEX, cvAllPrim));
-
- return cvBasePrimCompNav;
+ .addProperty(createPrimitive("PropertyInt16", propertyInt16))
+ .addProperty(createPrimitive("PropertyString", propertyString))
+ .addProperty(createComplex("PropertyComp",
+ createPrimitive("PropertyInt16", 1)))
+ .addProperty(createKeyNavAllPrimComplexValue("PropertyCompAllPrim"))
+ .addProperty(createComplex("PropertyCompTwoPrim",
+ createPrimitive("PropertyInt16", 16),
+ createPrimitive("PropertyString", "Test123")))
+ .addProperty(createPrimitiveCollection("CollPropertyString",
+ "Employee1@company.example",
+ "Employee2@company.example",
+ "Employee3@company.example"))
+ .addProperty(createPrimitiveCollection("CollPropertyInt16", 1000, 2000, 30112))
+ .addProperty(createComplexCollection("CollPropertyComp",
+ Arrays.asList(
+ createPrimitive("PropertyInt16", 1),
+ createKeyNavAllPrimComplexValue("PropertyComp")),
+ Arrays.asList(
+ createPrimitive("PropertyInt16", 2),
+ createKeyNavAllPrimComplexValue("PropertyComp")),
+ Arrays.asList(
+ createPrimitive("PropertyInt16", 3),
+ createKeyNavAllPrimComplexValue("PropertyComp"))))
+ .addProperty(createComplex("PropertyCompComp",
+ createPrimitive("PropertyString", "1"),
+ createComplex("PropertyComp", createPrimitive("PropertyInt16", 1))));
}
-
+
private EntitySet createESTwoKeyNav() {
final EntitySet entitySet = new EntitySetImpl();
-
+
entitySet.getEntities().add(createESTwoKeyNavEntity(1, "1"));
entitySet.getEntities().add(createESTwoKeyNavEntity(1, "2"));
entitySet.getEntities().add(createESTwoKeyNavEntity(2, "1"));
entitySet.getEntities().add(createESTwoKeyNavEntity(3, "1"));
-
+
return entitySet;
}
-
+
@SuppressWarnings("unchecked")
private Entity createESTwoKeyNavEntity(int propertyInt16, String propertyString) {
return new EntityImpl()
- .addProperty(createPrimitive("PropertyInt16", propertyInt16))
- .addProperty(createPrimitive("PropertyString", propertyString))
- .addProperty(createComplex("PropertyComp",
- createPrimitive("PropertyInt16", 11),
- createComplex("PropertyComp",
- createPrimitive("PropertyString", "StringValue"),
- createPrimitive("PropertyBinary", new byte[] { 1, 35, 69, 103, -119, -85, -51, -17 }),
- createPrimitive("PropertyBoolean", true),
- createPrimitive("PropertyByte", 255),
- createPrimitive("PropertyDate", getDateTime(2012, 12, 3, 7, 16, 23)),
- createPrimitive("PropertyDecimal", 34),
- createPrimitive("PropertySingle", 179000000000000000000D),
- createPrimitive("PropertyDouble", -179000000000000000000D),
- createPrimitive("PropertyDuration", 6),
- createPrimitive("PropertyGuid", UUID.fromString("01234567-89ab-cdef-0123-456789abcdef")),
- createPrimitive("PropertyInt16", Short.MAX_VALUE),
- createPrimitive("PropertyInt32", Integer.MAX_VALUE),
- createPrimitive("PropertyInt64", Long.MAX_VALUE),
- createPrimitive("PropertySByte", Byte.MAX_VALUE),
- createPrimitive("PropertyTimeOfDay", getTime(21, 5, 59))
- )
- ))
- .addProperty(new PropertyImpl(null, "PropertyCompNav", ValueType.COMPLEX, createCTPrimCompValue(1)))
- .addProperty(new PropertyImpl(null, "CollPropertyComp", ValueType.COLLECTION_COMPLEX,
- new ArrayList<ComplexValue>()))
- .addProperty(createComplexCollection("CollPropertyCompNav",
- Arrays.asList(createPrimitive("PropertyInt16", 1))))
- .addProperty(createPrimitiveCollection("CollPropertyString", 1, 2))
- .addProperty(createComplex("PropertyCompTwoPrim",
- createPrimitive("PropertyInt16", 11),
- createPrimitive("PropertyString", "11")
- ));
- }
-
- private ComplexValue createKeyNavAllPrimComplexValue() {
- ComplexValue cvAllPrim;
- cvAllPrim = new ComplexValueImpl();
- cvAllPrim.getValue().add(createPrimitive("PropertyString", "First Resource - positive values"));
- cvAllPrim.getValue().add(createPrimitive("PropertyBinary", new byte[] { 1, 35, 69, 103, -119, -85, -51, -17 } ));
- cvAllPrim.getValue().add(createPrimitive("PropertyBoolean", true));
- cvAllPrim.getValue().add(createPrimitive("PropertyByte", 255));
- cvAllPrim.getValue().add(createPrimitive("PropertyDate", getDateTime(2012, 12, 3, 7, 16, 23)));
- cvAllPrim.getValue().add(createPrimitive("PropertyDateTimeOffset", getTimestamp(2012, 12, 3, 7, 16, 23, 0)));
- cvAllPrim.getValue().add(createPrimitive("PropertyDecimal", 34));
- cvAllPrim.getValue().add(createPrimitive("PropertySingle", 179000000000000000000D));
- cvAllPrim.getValue().add(createPrimitive("PropertyDouble", -179000000000000000000D));
- cvAllPrim.getValue().add(createPrimitive("PropertyDuration", 6));
- cvAllPrim.getValue().add(createPrimitive("PropertyGuid", UUID.fromString("01234567-89ab-cdef-0123-456789abcdef")));
- cvAllPrim.getValue().add(createPrimitive("PropertyInt16", Short.MAX_VALUE));
- cvAllPrim.getValue().add(createPrimitive("PropertyInt32", Integer.MAX_VALUE));
- cvAllPrim.getValue().add(createPrimitive("PropertyInt64", Long.MAX_VALUE));
- cvAllPrim.getValue().add(createPrimitive("PropertySByte", Byte.MAX_VALUE));
- cvAllPrim.getValue().add(createPrimitive("PropertyTimeOfDay", getTime(21, 5, 59)));
-
- return cvAllPrim;
+ .addProperty(createPrimitive("PropertyInt16", propertyInt16))
+ .addProperty(createPrimitive("PropertyString", propertyString))
+ .addProperty(createComplex("PropertyComp",
+ createPrimitive("PropertyInt16", 11),
+ createComplex("PropertyComp",
+ createPrimitive("PropertyString", "StringValue"),
+ createPrimitive("PropertyBinary", new byte[] { 1, 35, 69, 103, -119, -85, -51, -17 }),
+ createPrimitive("PropertyBoolean", true),
+ createPrimitive("PropertyByte", 255),
+ createPrimitive("PropertyDate", getDateTime(2012, 12, 3, 7, 16, 23)),
+ createPrimitive("PropertyDecimal", 34),
+ createPrimitive("PropertySingle", 179000000000000000000D),
+ createPrimitive("PropertyDouble", -179000000000000000000D),
+ createPrimitive("PropertyDuration", 6),
+ createPrimitive("PropertyGuid", UUID.fromString("01234567-89ab-cdef-0123-456789abcdef")),
+ createPrimitive("PropertyInt16", Short.MAX_VALUE),
+ createPrimitive("PropertyInt32", Integer.MAX_VALUE),
+ createPrimitive("PropertyInt64", Long.MAX_VALUE),
+ createPrimitive("PropertySByte", Byte.MAX_VALUE),
+ createPrimitive("PropertyTimeOfDay", getTime(21, 5, 59)))))
+ .addProperty(createComplex("PropertyCompNav",
+ createPrimitive("PropertyInt16", 1),
+ createKeyNavAllPrimComplexValue("PropertyComp")))
+ .addProperty(createComplexCollection("CollPropertyComp"))
+ .addProperty(createComplexCollection("CollPropertyCompNav",
+ Arrays.asList(createPrimitive("PropertyInt16", 1))))
+ .addProperty(createPrimitiveCollection("CollPropertyString", 1, 2))
+ .addProperty(createComplex("PropertyCompTwoPrim",
+ createPrimitive("PropertyInt16", 11),
+ createPrimitive("PropertyString", "11")));
+ }
+
+ private Property createKeyNavAllPrimComplexValue(final String name) {
+ return createComplex(name,
+ createPrimitive("PropertyString", "First Resource - positive values"),
+ createPrimitive("PropertyBinary", new byte[] { 1, 35, 69, 103, -119, -85, -51, -17 }),
+ createPrimitive("PropertyBoolean", true),
+ createPrimitive("PropertyByte", 255),
+ createPrimitive("PropertyDate", getDateTime(2012, 12, 3, 7, 16, 23)),
+ createPrimitive("PropertyDateTimeOffset", getTimestamp(2012, 12, 3, 7, 16, 23, 0)),
+ createPrimitive("PropertyDecimal", 34),
+ createPrimitive("PropertySingle", 179000000000000000000D),
+ createPrimitive("PropertyDouble", -179000000000000000000D),
+ createPrimitive("PropertyDuration", 6),
+ createPrimitive("PropertyGuid", UUID.fromString("01234567-89ab-cdef-0123-456789abcdef")),
+ createPrimitive("PropertyInt16", Short.MAX_VALUE),
+ createPrimitive("PropertyInt32", Integer.MAX_VALUE),
+ createPrimitive("PropertyInt64", Long.MAX_VALUE),
+ createPrimitive("PropertySByte", Byte.MAX_VALUE),
+ createPrimitive("PropertyTimeOfDay", getTime(21, 5, 59)));
}
-
@SuppressWarnings("unchecked")
private EntitySet createESCompCollComp() {
final EntitySet entitySet = new EntitySetImpl();
-
+
entitySet.getEntities().add(new EntityImpl()
- .addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
- .addProperty(createComplex("PropertyComp",
- createComplexCollection("CollPropertyComp",
- Arrays.asList(
- createPrimitive("PropertyInt16", 555),
- createPrimitive("PropertyString", "1 Test Complex in Complex Property")),
- Arrays.asList(
- createPrimitive("PropertyInt16", 666),
- createPrimitive("PropertyString", "2 Test Complex in Complex Property")),
- Arrays.asList(
- createPrimitive("PropertyInt16", 777),
- createPrimitive("PropertyString", "3 Test Complex in Complex Property"))
- ))));
-
+ .addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
+ .addProperty(createComplex("PropertyComp",
+ createComplexCollection("CollPropertyComp",
+ Arrays.asList(
+ createPrimitive("PropertyInt16", 555),
+ createPrimitive("PropertyString", "1 Test Complex in Complex Property")),
+ Arrays.asList(
+ createPrimitive("PropertyInt16", 666),
+ createPrimitive("PropertyString", "2 Test Complex in Complex Property")),
+ Arrays.asList(
+ createPrimitive("PropertyInt16", 777),
+ createPrimitive("PropertyString", "3 Test Complex in Complex Property"))))));
+
entitySet.getEntities().add(new EntityImpl()
- .addProperty(createPrimitive("PropertyInt16", 12345))
- .addProperty(createComplex("PropertyComp",
- createComplexCollection("CollPropertyComp",
- Arrays.asList(
- createPrimitive("PropertyInt16", 888),
- createPrimitive("PropertyString", "11 Test Complex in Complex Property")),
- Arrays.asList(
- createPrimitive("PropertyInt16", 999),
- createPrimitive("PropertyString", "12 Test Complex in Complex Property")),
- Arrays.asList(
- createPrimitive("PropertyInt16", 0),
- createPrimitive("PropertyString", "13 Test Complex in Complex Property"))
- ))));
-
+ .addProperty(createPrimitive("PropertyInt16", 12345))
+ .addProperty(createComplex("PropertyComp",
+ createComplexCollection("CollPropertyComp",
+ Arrays.asList(
+ createPrimitive("PropertyInt16", 888),
+ createPrimitive("PropertyString", "11 Test Complex in Complex Property")),
+ Arrays.asList(
+ createPrimitive("PropertyInt16", 999),
+ createPrimitive("PropertyString", "12 Test Complex in Complex Property")),
+ Arrays.asList(
+ createPrimitive("PropertyInt16", 0),
+ createPrimitive("PropertyString", "13 Test Complex in Complex Property"))))));
+
return entitySet;
}
-
+
private EntitySet createESTwoPrim() {
EntitySet entitySet = new EntitySetImpl();
@@ -451,42 +434,40 @@ public class DataCreator {
}
private EntitySet createESMixPrimCollComp() {
- EntitySet entitySet = new EntitySetImpl();
-
- Entity entity = new EntityImpl();
- entity.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE));
- entity.addProperty(createPrimitiveCollection("CollPropertyString",
- "Employee1@company.example", "Employee2@company.example", "Employee3@company.example"));
- entity.addProperty(createComplex("PropertyComp",
- createPrimitive("PropertyInt16", 111),
- createPrimitive("PropertyString", "TEST A")));
@SuppressWarnings("unchecked")
final Property complexCollection = createComplexCollection("CollPropertyComp",
Arrays.asList(createPrimitive("PropertyInt16", 123), createPrimitive("PropertyString", "TEST 1")),
Arrays.asList(createPrimitive("PropertyInt16", 456), createPrimitive("PropertyString", "TEST 2")),
Arrays.asList(createPrimitive("PropertyInt16", 789), createPrimitive("PropertyString", "TEST 3")));
- entity.addProperty(complexCollection);
- entitySet.getEntities().add(entity);
- entity = new EntityImpl();
- entity.addProperty(createPrimitive("PropertyInt16", 7));
- entity.addProperty(createPrimitiveCollection("CollPropertyString",
- "Employee1@company.example", "Employee2@company.example", "Employee3@company.example"));
- entity.addProperty(createComplex("PropertyComp",
- createPrimitive("PropertyInt16", 222),
- createPrimitive("PropertyString", "TEST B")));
- entity.addProperty(complexCollection);
- entitySet.getEntities().add(entity);
+ EntitySet entitySet = new EntitySetImpl();
- entity = new EntityImpl();
- entity.addProperty(createPrimitive("PropertyInt16", 0));
- entity.addProperty(createPrimitiveCollection("CollPropertyString",
- "Employee1@company.example", "Employee2@company.example", "Employee3@company.example"));
- entity.addProperty(createComplex("PropertyComp",
- createPrimitive("PropertyInt16", 333),
- createPrimitive("PropertyString", "TEST C")));
- entity.addProperty(complexCollection);
- entitySet.getEntities().add(entity);
+ entitySet.getEntities().add(new EntityImpl()
+ .addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
+ .addProperty(createPrimitiveCollection("CollPropertyString",
+ "Employee1@company.example", "Employee2@company.example", "Employee3@company.example"))
+ .addProperty(createComplex("PropertyComp",
+ createPrimitive("PropertyInt16", 111),
+ createPrimitive("PropertyString", "TEST A")))
+ .addProperty(complexCollection));
+
+ entitySet.getEntities().add(new EntityImpl()
+ .addProperty(createPrimitive("PropertyInt16", 7))
+ .addProperty(createPrimitiveCollection("CollPropertyString",
+ "Employee1@company.example", "Employee2@company.example", "Employee3@company.example"))
+ .addProperty(createComplex("PropertyComp",
+ createPrimitive("PropertyInt16", 222),
+ createPrimitive("PropertyString", "TEST B")))
+ .addProperty(complexCollection));
+
+ entitySet.getEntities().add(new EntityImpl()
+ .addProperty(createPrimitive("PropertyInt16", 0))
+ .addProperty(createPrimitiveCollection("CollPropertyString",
+ "Employee1@company.example", "Employee2@company.example", "Employee3@company.example"))
+ .addProperty(createComplex("PropertyComp",
+ createPrimitive("PropertyInt16", 333),
+ createPrimitive("PropertyString", "TEST C")))
+ .addProperty(complexCollection));
return entitySet;
}
@@ -552,27 +533,27 @@ public class DataCreator {
private EntitySet createESMedia() {
EntitySet entitySet = new EntitySetImpl();
- Entity entity = new EntityImpl();
- entity.addProperty(createPrimitive("PropertyInt16", 1));
- entity.addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("darkturquoise")));
+ Entity entity = new EntityImpl()
+ .addProperty(createPrimitive("PropertyInt16", 1))
+ .addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("darkturquoise")));
entity.setMediaContentType("image/svg+xml");
entitySet.getEntities().add(entity);
- entity = new EntityImpl();
- entity.addProperty(createPrimitive("PropertyInt16", 2));
- entity.addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("royalblue")));
+ entity = new EntityImpl()
+ .addProperty(createPrimitive("PropertyInt16", 2))
+ .addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("royalblue")));
entity.setMediaContentType("image/svg+xml");
entitySet.getEntities().add(entity);
- entity = new EntityImpl();
- entity.addProperty(createPrimitive("PropertyInt16", 3));
- entity.addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("crimson")));
+ entity = new EntityImpl()
+ .addProperty(createPrimitive("PropertyInt16", 3))
+ .addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("crimson")));
entity.setMediaContentType("image/svg+xml");
entitySet.getEntities().add(entity);
- entity = new EntityImpl();
- entity.addProperty(createPrimitive("PropertyInt16", 4));
- entity.addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("black")));
+ entity = new EntityImpl()
+ .addProperty(createPrimitive("PropertyInt16", 4))
+ .addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("black")));
entity.setMediaContentType("image/svg+xml");
entitySet.getEntities().add(entity);
@@ -581,18 +562,19 @@ public class DataCreator {
private byte[] createImage(final String color) {
return ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
- + "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 100 100\">\n"
- + " <g stroke=\"darkmagenta\" stroke-width=\"16\" fill=\"" + color + "\">\n"
- + " <circle cx=\"50\" cy=\"50\" r=\"42\"/>\n"
- + " </g>\n"
- + "</svg>\n").getBytes(Charset.forName("UTF-8"));
+ + "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 100 100\">\n"
+ + " <g stroke=\"darkmagenta\" stroke-width=\"16\" fill=\"" + color + "\">\n"
+ + " <circle cx=\"50\" cy=\"50\" r=\"42\"/>\n"
+ + " </g>\n"
+ + "</svg>\n").getBytes(Charset.forName("UTF-8"));
}
private void linkESTwoPrim(Map<String, EntitySet> data) {
final EntitySet entitySet = data.get("ESTwoPrim");
final List<Entity> targetEntities = data.get("ESAllPrim").getEntities();
- setLinks(entitySet.getEntities().get(1), "NavPropertyETAllPrimMany", targetEntities.subList(1, 3));
+ setLinks(entitySet.getEntities().get(1), "NavPropertyETAllPrimMany",
+ targetEntities.get(1), targetEntities.get(2));
setLink(entitySet.getEntities().get(3), "NavPropertyETAllPrimOne", targetEntities.get(0));
}
@@ -601,73 +583,77 @@ public class DataCreator {
final EntitySet entitySet = data.get("ESAllPrim");
final List<Entity> targetEntities = data.get("ESTwoPrim").getEntities();
- setLinks(entitySet.getEntities().get(0), "NavPropertyETTwoPrimMany", targetEntities.subList(1, 2));
+ setLinks(entitySet.getEntities().get(0), "NavPropertyETTwoPrimMany", targetEntities.get(1));
setLink(entitySet.getEntities().get(0), "NavPropertyETTwoPrimOne", targetEntities.get(3));
setLinks(entitySet.getEntities().get(2), "NavPropertyETTwoPrimMany",
- Arrays.asList(targetEntities.get(0), targetEntities.get(2), targetEntities.get(3)));
+ targetEntities.get(0), targetEntities.get(2), targetEntities.get(3));
}
-
private void linkESKeyNav(Map<String, EntitySet> data) {
final EntitySet entitySet = data.get("ESKeyNav");
final List<Entity> esKeyNavTargets = data.get("ESKeyNav").getEntities();
final List<Entity> esTwoKeyNavTargets = data.get("ESTwoKeyNav").getEntities();
final List<Entity> esMediaTargets = data.get("ESMedia").getEntities();
-
+
// NavPropertyETKeyNavMany
- setLinks(entitySet.getEntities().get(0), "NavPropertyETKeyNavMany", esKeyNavTargets.subList(0, 2));
- setLinks(entitySet.getEntities().get(1), "NavPropertyETKeyNavMany", esKeyNavTargets.subList(1, 3));
-
+ setLinks(entitySet.getEntities().get(0), "NavPropertyETKeyNavMany",
+ esKeyNavTargets.get(0), esKeyNavTargets.get(1));
+ setLinks(entitySet.getEntities().get(1), "NavPropertyETKeyNavMany",
+ esKeyNavTargets.get(1), esKeyNavTargets.get(2));
+
// NavPropertyETKeyNavOne
setLink(entitySet.getEntities().get(0), "NavPropertyETKeyNavOne", esKeyNavTargets.get(1));
setLink(entitySet.getEntities().get(1), "NavPropertyETKeyNavOne", esKeyNavTargets.get(2));
-
+
// NavPropertyETTwoKeyNavOne
setLink(entitySet.getEntities().get(0), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(0));
setLink(entitySet.getEntities().get(1), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(1));
setLink(entitySet.getEntities().get(2), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(2));
-
+
// NavPropertyETTwoKeyNavMany
- setLinks(entitySet.getEntities().get(0), "NavPropertyETTwoKeyNavMany", esTwoKeyNavTargets.subList(0, 2));
- setLinks(entitySet.getEntities().get(1), "NavPropertyETTwoKeyNavMany", esTwoKeyNavTargets.subList(2, 3));
- setLinks(entitySet.getEntities().get(2), "NavPropertyETTwoKeyNavMany", esTwoKeyNavTargets.subList(3, 4));
-
+ setLinks(entitySet.getEntities().get(0), "NavPropertyETTwoKeyNavMany",
+ esTwoKeyNavTargets.get(0), esTwoKeyNavTargets.get(1));
+ setLinks(entitySet.getEntities().get(1), "NavPropertyETTwoKeyNavMany", esTwoKeyNavTargets.get(2));
+ setLinks(entitySet.getEntities().get(2), "NavPropertyETTwoKeyNavMany", esTwoKeyNavTargets.get(3));
+
// NavPropertyETMediaOne
setLink(entitySet.getEntities().get(0), "NavPropertyETMediaOne", esMediaTargets.get(0));
setLink(entitySet.getEntities().get(1), "NavPropertyETMediaOne", esMediaTargets.get(1));
setLink(entitySet.getEntities().get(2), "NavPropertyETMediaOne", esMediaTargets.get(2));
}
-
private void linkESTwoKeyNav(Map<String, EntitySet> data) {
final EntitySet entitySet = data.get("ESTwoKeyNav");
final List<Entity> esKeyNavTargets = data.get("ESKeyNav").getEntities();
final List<Entity> esTwoKeyNavTargets = data.get("ESTwoKeyNav").getEntities();
-
+
// NavPropertyETKeyNavOne
setLink(entitySet.getEntities().get(0), "NavPropertyETKeyNavOne", esKeyNavTargets.get(0));
setLink(entitySet.getEntities().get(1), "NavPropertyETKeyNavOne", esKeyNavTargets.get(0));
setLink(entitySet.getEntities().get(2), "NavPropertyETKeyNavOne", esKeyNavTargets.get(1));
setLink(entitySet.getEntities().get(3), "NavPropertyETKeyNavOne", esKeyNavTargets.get(2));
-
+
// NavPropertyETKeyNavMany
- setLinks(entitySet.getEntities().get(0), "NavPropertyETKeyNavMany", esKeyNavTargets.subList(0, 2));
- setLinks(entitySet.getEntities().get(1), "NavPropertyETKeyNavMany", esKeyNavTargets.subList(0, 2));
- setLinks(entitySet.getEntities().get(2), "NavPropertyETKeyNavMany", esKeyNavTargets.subList(1, 3));
-
+ setLinks(entitySet.getEntities().get(0), "NavPropertyETKeyNavMany",
+ esKeyNavTargets.get(0), esKeyNavTargets.get(1));
+ setLinks(entitySet.getEntities().get(1), "NavPropertyETKeyNavMany",
+ esKeyNavTargets.get(0), esKeyNavTargets.get(1));
+ setLinks(entitySet.getEntities().get(2), "NavPropertyETKeyNavMany",
+ esKeyNavTargets.get(1), esKeyNavTargets.get(2));
+
// NavPropertyETTwoKeyNavOne
setLink(entitySet.getEntities().get(0), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(0));
setLink(entitySet.getEntities().get(2), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(1));
setLink(entitySet.getEntities().get(3), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(2));
-
+
// NavPropertyETTwoKeyNavMany
- setLinks(entitySet.getEntities().get(0), "NavPropertyETTwoKeyNavMany", esKeyNavTargets.subList(0, 2));
- setLinks(entitySet.getEntities().get(1), "NavPropertyETTwoKeyNavMany", esKeyNavTargets.subList(0, 1));
- setLinks(entitySet.getEntities().get(2), "NavPropertyETTwoKeyNavMany", esKeyNavTargets.subList(1, 2));
+ setLinks(entitySet.getEntities().get(0), "NavPropertyETTwoKeyNavMany",
+ esKeyNavTargets.get(0), esKeyNavTargets.get(1));
+ setLinks(entitySet.getEntities().get(1), "NavPropertyETTwoKeyNavMany", esKeyNavTargets.get(0));
+ setLinks(entitySet.getEntities().get(2), "NavPropertyETTwoKeyNavMany", esKeyNavTargets.get(1));
}
-
protected static Property createPrimitive(final String name, final Object value) {
return new PropertyImpl(null, name, ValueType.PRIMITIVE, value);
}
@@ -719,18 +705,28 @@ public class DataCreator {
}
protected static void setLink(Entity entity, final String navigationPropertyName, final Entity target) {
- Link link = new LinkImpl();
- link.setTitle(navigationPropertyName);
+ Link link = entity.getNavigationLink(navigationPropertyName);
+ if (link == null) {
+ link = new LinkImpl();
+ link.setType(ODataLinkType.ENTITY_NAVIGATION.toString());
+ link.setTitle(navigationPropertyName);
+ entity.getNavigationLinks().add(link);
+ }
link.setInlineEntity(target);
- entity.getNavigationLinks().add(link);
}
- protected static void setLinks(Entity entity, final String navigationPropertyName, final List<Entity> targets) {
- Link link = new LinkImpl();
- link.setTitle(navigationPropertyName);
- EntitySet target = new EntitySetImpl();
- target.getEntities().addAll(targets);
- link.setInlineEntitySet(target);
- entity.getNavigationLinks().add(link);
+ protected static void setLinks(Entity entity, final String navigationPropertyName, final Entity... targets) {
+ Link link = entity.getNavigationLink(navigationPropertyName);
+ if (link == null) {
+ link = new LinkImpl();
+ link.setType(ODataLinkType.ENTITY_SET_NAVIGATION.toString());
+ link.setTitle(navigationPropertyName);
+ EntitySet target = new EntitySetImpl();
+ target.getEntities().addAll(Arrays.asList(targets));
+ link.setInlineEntitySet(target);
+ entity.getNavigationLinks().add(link);
+ } else {
+ link.getInlineEntitySet().getEntities().addAll(Arrays.asList(targets));
+ }
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java
index b28d263..9ef9e7b 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataProvider.java
@@ -31,12 +31,11 @@ import org.apache.olingo.commons.api.data.Entity;
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.domain.ODataLinkType;
import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmBindingTarget;
import org.apache.olingo.commons.api.edm.EdmComplexType;
import org.apache.olingo.commons.api.edm.EdmEntitySet;
import org.apache.olingo.commons.api.edm.EdmEntityType;
+import org.apache.olingo.commons.api.edm.EdmFunction;
import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
@@ -45,8 +44,6 @@ import org.apache.olingo.commons.api.edm.EdmStructuredType;
import org.apache.olingo.commons.api.edm.EdmType;
import org.apache.olingo.commons.api.http.HttpStatusCode;
import org.apache.olingo.commons.core.data.EntityImpl;
-import org.apache.olingo.commons.core.data.EntitySetImpl;
-import org.apache.olingo.commons.core.data.LinkImpl;
import org.apache.olingo.commons.core.edm.primitivetype.EdmInt16;
import org.apache.olingo.commons.core.edm.primitivetype.EdmInt32;
import org.apache.olingo.commons.core.edm.primitivetype.EdmInt64;
@@ -59,7 +56,6 @@ import org.apache.olingo.server.api.uri.UriParameter;
public class DataProvider {
protected static final String MEDIA_PROPERTY_NAME = "$value";
-// private static final String KEY_NAME = "PropertyInt16";
final private Map<String, EntitySet> data;
private Edm edm;
@@ -133,37 +129,6 @@ public class DataProvider {
}
}
-// public Entity create(final EdmEntitySet edmEntitySet) throws DataProviderException {
-// final EdmEntityType edmEntityType = edmEntitySet.getEntityType();
-// List<Entity> entities = readAll(edmEntitySet).getEntities();
-// Entity entity = new EntityImpl();
-// final List<String> keyNames = edmEntityType.getKeyPredicateNames();
-// if (keyNames.size() == 1 && keyNames.get(0).equals(KEY_NAME)) {
-// entity.addProperty(DataCreator.createPrimitive(KEY_NAME, findFreeKeyValue(entities)));
-// } else {
-// throw new DataProviderException("Key construction not supported!");
-// }
-// createProperties(edmEntityType, entity.getProperties());
-// entities.add(entity);
-// return entity;
-// }
-//
-// private Integer findFreeKeyValue(final List<Entity> entities) {
-// Integer result = 0;
-// boolean free;
-// do {
-// ++result;
-// free = true;
-// for (final Entity entity : entities) {
-// if (result.equals(entity.getProperty(KEY_NAME).getValue())) {
-// free = false;
-// break;
-// }
-// }
-// } while (!free);
-// return result;
-// }
-
public Entity create(final EdmEntitySet edmEntitySet) throws DataProviderException {
final EdmEntityType edmEntityType = edmEntitySet.getEntityType();
final EntitySet entitySet = readAll(edmEntitySet);
@@ -253,8 +218,7 @@ public class DataProvider {
}
public void update(final String rawBaseUri, final EdmEntitySet edmEntitySet, Entity entity,
- final Entity changedEntity, final boolean patch,
- final boolean isInsert) throws DataProviderException {
+ final Entity changedEntity, final boolean patch, final boolean isInsert) throws DataProviderException {
final EdmEntityType entityType = edmEntitySet.getEntityType();
final List<String> keyNames = entityType.getKeyPredicateNames();
@@ -320,8 +284,7 @@ public class DataProvider {
}
private void handleDeepInsert(final String rawBaseUri, final EdmEntitySet edmEntitySet, final Entity entity,
- final Entity changedEntity)
- throws DataProviderException {
+ final Entity changedEntity) throws DataProviderException {
final EdmEntityType entityType = edmEntitySet.getEntityType();
for (final String navPropertyName : entityType.getNavigationPropertyNames()) {
@@ -331,41 +294,40 @@ public class DataProvider {
// Deep inserts are not allowed in update operations, so we can be sure, that we do not override
// a navigation link!
final EdmNavigationProperty navigationProperty = entityType.getNavigationProperty(navPropertyName);
- final EdmBindingTarget target = edmEntitySet.getRelatedBindingTarget(navPropertyName);
- final EdmEntityType inlineEntityType = navigationProperty.getType();
+ final EdmEntitySet target = (EdmEntitySet) edmEntitySet.getRelatedBindingTarget(navPropertyName);
if (navigationProperty.isCollection()) {
final List<Entity> entities =
- createInlineEntities(rawBaseUri, target, inlineEntityType, navigationLink.getInlineEntitySet());
+ createInlineEntities(rawBaseUri, target, navigationLink.getInlineEntitySet());
for (final Entity inlineEntity : entities) {
createLink(navigationProperty, entity, inlineEntity);
}
} else {
final Entity inlineEntity =
- createInlineEntity(rawBaseUri, target, inlineEntityType, navigationLink.getInlineEntity());
+ createInlineEntity(rawBaseUri, target, navigationLink.getInlineEntity());
createLink(navigationProperty, entity, inlineEntity);
}
}
}
}
- private List<Entity> createInlineEntities(final String rawBaseUri, final EdmBindingTarget target,
- final EdmEntityType type, final EntitySet changedEntitySet) throws DataProviderException {
+ private List<Entity> createInlineEntities(final String rawBaseUri, final EdmEntitySet targetEntitySet,
+ final EntitySet changedEntitySet) throws DataProviderException {
List<Entity> entities = new ArrayList<Entity>();
for (final Entity newEntity : changedEntitySet.getEntities()) {
- entities.add(createInlineEntity(rawBaseUri, target, type, newEntity));
+ entities.add(createInlineEntity(rawBaseUri, targetEntitySet, newEntity));
}
return entities;
}
- private Entity createInlineEntity(final String rawBaseUri, final EdmBindingTarget target,
- final EdmEntityType type, final Entity changedEntity) throws DataProviderException {
+ private Entity createInlineEntity(final String rawBaseUri, final EdmEntitySet targetEntitySet,
+ final Entity changedEntity) throws DataProviderException {
- final Entity inlineEntity = create((EdmEntitySet) target);
- update(rawBaseUri, (EdmEntitySet) target, inlineEntity, changedEntity, false, true);
+ final Entity inlineEntity = create(targetEntitySet);
+ update(rawBaseUri, targetEntitySet, inlineEntity, changedEntity, false, true);
return inlineEntity;
}
@@ -380,27 +342,11 @@ public class DataProvider {
}
}
- // TODO Duplicated code in DataCreator
- private void setLink(final EdmNavigationProperty navigationProperty, final Entity srcEntity,
- final Entity destEntity) {
-
- Link link = srcEntity.getNavigationLink(navigationProperty.getName());
- if (link == null) {
- link = new LinkImpl();
- link.setTitle(navigationProperty.getName());
- srcEntity.getNavigationLinks().add(link);
- }
-
+ private void setLink(final EdmNavigationProperty navigationProperty, Entity srcEntity, final Entity targetEntity) {
if (navigationProperty.isCollection()) {
- if (link.getInlineEntitySet() == null) {
- link.setType(ODataLinkType.ENTITY_SET_NAVIGATION.toString());
- link.setInlineEntitySet(new EntitySetImpl());
- }
-
- link.getInlineEntitySet().getEntities().add(destEntity);
+ DataCreator.setLinks(srcEntity, navigationProperty.getName(), targetEntity);
} else {
- link.setType(ODataLinkType.ENTITY_NAVIGATION.toString());
- link.setInlineEntity(destEntity);
+ DataCreator.setLink(srcEntity, navigationProperty.getName(), targetEntity);
}
}
@@ -423,10 +369,8 @@ public class DataProvider {
} else {
final EdmComplexType type = (EdmComplexType) edmProperty.getType();
for (final String propertyName : type.getPropertyNames()) {
- List<Property> newProperties = null;
- if(newProperty != null && newProperty.asComplex() != null){
- newProperties = newProperty.asComplex().getValue();
- }
+ final List<Property> newProperties = newProperty == null || newProperty.asComplex() == null ? null :
+ newProperty.asComplex().getValue();
updateProperty(type.getStructuralProperty(propertyName),
findProperty(propertyName, property.asComplex().getValue()),
newProperties == null ? null : findProperty(propertyName, newProperties),
@@ -454,6 +398,16 @@ public class DataProvider {
entity.setMediaContentType(type);
}
+ public EntitySet readFunctionEntitySet(final EdmFunction function, final List<UriParameter> parameters)
+ throws DataProviderException {
+ return FunctionData.entityCollectionFunction(function.getName(), parameters, data);
+ }
+
+ public Entity readFunctionEntity(final EdmFunction function, final List<UriParameter> parameters)
+ throws DataProviderException {
+ return FunctionData.entityFunction(function.getName(), parameters, data);
+ }
+
public void setEdm(final Edm edm) {
this.edm = edm;
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/FunctionData.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/FunctionData.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/FunctionData.java
new file mode 100644
index 0000000..faa099b
--- /dev/null
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/FunctionData.java
@@ -0,0 +1,67 @@
+/*
+ * 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.server.tecsvc.data;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.olingo.commons.api.data.Entity;
+import org.apache.olingo.commons.api.data.EntitySet;
+import org.apache.olingo.commons.core.data.EntitySetImpl;
+import org.apache.olingo.server.api.uri.UriParameter;
+import org.apache.olingo.server.tecsvc.data.DataProvider.DataProviderException;
+
+public class FunctionData {
+
+ protected static EntitySet entityCollectionFunction(final String name, final List<UriParameter> parameters,
+ final Map<String, EntitySet> data) throws DataProviderException {
+ if (name.equals("UFCRTCollETTwoKeyNavParam")) {
+ final List<Entity> esTwoKeyNav = data.get("ESTwoKeyNav").getEntities();
+ EntitySet result = new EntitySetImpl();
+ final int endIndex = parameters.isEmpty() ? 0 : Short.valueOf(parameters.get(0).getText());
+ result.getEntities().addAll(
+ esTwoKeyNav.subList(0,
+ endIndex < 0 ? 0 : endIndex > esTwoKeyNav.size() ? esTwoKeyNav.size() : endIndex));
+ return result;
+ } else if (name.equals("UFCRTCollETMixPrimCollCompTwoParam")) {
+ return data.get("ESMixPrimCollComp");
+ } else if (name.equals("UFCRTCollETMedia")) {
+ return data.get("ESMedia");
+ } else {
+ throw new DataProviderException("Function " + name + " is not yet implemented.");
+ }
+ }
+
+ protected static Entity entityFunction(final String name, final List<UriParameter> parameters,
+ final Map<String, EntitySet> data) throws DataProviderException {
+ final List<Entity> esTwoKeyNav = data.get("ESTwoKeyNav").getEntities();
+ if (name.equals("UFCRTETTwoKeyNav")) {
+ return esTwoKeyNav.get(0);
+ } else if (name.equals("UFCRTETTwoKeyNavParam")) {
+ final int index = parameters.isEmpty() ? 0 : Short.valueOf(parameters.get(0).getText());
+ return index < 0 || index >= esTwoKeyNav.size() ? null : esTwoKeyNav.get(index);
+ } else if (name.equals("UFCRTETMedia")) {
+ final int index = parameters.isEmpty() ? 1 : Short.valueOf(parameters.get(0).getText());
+ final List<Entity> esMedia = data.get("ESMedia").getEntities();
+ return index < 1 || index > esTwoKeyNav.size() ? null : esMedia.get(index - 1);
+ } else {
+ throw new DataProviderException("Function " + name + " is not yet implemented.");
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/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 8414a21..3021db3 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
@@ -21,6 +21,7 @@ package org.apache.olingo.server.tecsvc.processor;
import java.util.Locale;
import org.apache.olingo.commons.api.data.ContextURL;
+import org.apache.olingo.commons.api.data.ContextURL.Builder;
import org.apache.olingo.commons.api.data.ContextURL.Suffix;
import org.apache.olingo.commons.api.data.Entity;
import org.apache.olingo.commons.api.data.EntitySet;
@@ -50,6 +51,7 @@ import org.apache.olingo.server.api.serializer.ODataSerializer;
import org.apache.olingo.server.api.serializer.SerializerException;
import org.apache.olingo.server.api.uri.UriInfo;
import org.apache.olingo.server.api.uri.UriResourceEntitySet;
+import org.apache.olingo.server.api.uri.UriResourceFunction;
import org.apache.olingo.server.api.uri.queryoption.ExpandOption;
import org.apache.olingo.server.api.uri.queryoption.SelectOption;
import org.apache.olingo.server.tecsvc.data.DataProvider;
@@ -77,6 +79,11 @@ public class TechnicalEntityProcessor extends TechnicalProcessor
validateOptions(uriInfo.asUriInfoResource());
final EdmEntitySet edmEntitySet = getEdmEntitySet(uriInfo.asUriInfoResource());
+ final EdmEntityType edmEntityType = edmEntitySet == null ?
+ (EdmEntityType) ((UriResourceFunction) uriInfo.getUriResourceParts()
+ .get(uriInfo.getUriResourceParts().size() - 1)).getType() :
+ edmEntitySet.getEntityType();
+
final EntitySet entitySetInitial = readEntityCollection(uriInfo);
if (entitySetInitial == null) {
throw new ODataApplicationException("Nothing found.", HttpStatusCode.NOT_FOUND.getStatusCode(), Locale.ROOT);
@@ -102,10 +109,10 @@ public class TechnicalEntityProcessor extends TechnicalProcessor
ODataSerializer serializer = odata.createSerializer(format);
final ExpandOption expand = uriInfo.getExpandOption();
final SelectOption select = uriInfo.getSelectOption();
- response.setContent(serializer.entityCollection(edmEntitySet.getEntityType(), entitySet,
+ response.setContent(serializer.entityCollection(edmEntityType, entitySet,
EntityCollectionSerializerOptions.with()
.contextURL(format == ODataFormat.JSON_NO_METADATA ? null :
- getContextUrl(edmEntitySet, false, expand, select))
+ getContextUrl(edmEntitySet, edmEntityType, false, expand, select))
.count(uriInfo.getCountOption())
.expand(expand).select(select)
.build()));
@@ -143,6 +150,11 @@ public class TechnicalEntityProcessor extends TechnicalProcessor
final ContentType requestedContentType) throws ODataApplicationException, SerializerException {
validateOptions(uriInfo.asUriInfoResource());
final EdmEntitySet edmEntitySet = getEdmEntitySet(uriInfo);
+ final EdmEntityType edmEntityType = edmEntitySet == null ?
+ (EdmEntityType) ((UriResourceFunction) uriInfo.getUriResourceParts()
+ .get(uriInfo.getUriResourceParts().size() - 1)).getType() :
+ edmEntitySet.getEntityType();
+
final Entity entity = readEntity(uriInfo);
final ODataFormat format = ODataFormat.fromContentType(requestedContentType);
@@ -152,7 +164,7 @@ public class TechnicalEntityProcessor extends TechnicalProcessor
response.setContent(serializer.entity(edmEntitySet.getEntityType(), entity,
EntitySerializerOptions.with()
.contextURL(format == ODataFormat.JSON_NO_METADATA ? null :
- getContextUrl(edmEntitySet, true, expand, select))
+ getContextUrl(edmEntitySet, edmEntityType, true, expand, select))
.expand(expand).select(select)
.build()));
response.setStatusCode(HttpStatusCode.OK.getStatusCode());
@@ -205,7 +217,7 @@ public class TechnicalEntityProcessor extends TechnicalProcessor
response.setContent(serializer.entity(edmEntityType, entity,
EntitySerializerOptions.with()
.contextURL(format == ODataFormat.JSON_NO_METADATA ? null :
- getContextUrl(edmEntitySet, true, null, null))
+ getContextUrl(edmEntitySet, edmEntityType, true, null, null))
.build()));
response.setStatusCode(HttpStatusCode.CREATED.getStatusCode());
response.setHeader(HttpHeader.CONTENT_TYPE, responseFormat.toContentTypeString());
@@ -269,12 +281,15 @@ public class TechnicalEntityProcessor extends TechnicalProcessor
}
}
- private ContextURL getContextUrl(final EdmEntitySet entitySet, final boolean isSingleEntity,
- final ExpandOption expand, final SelectOption select) throws SerializerException {
- return ContextURL.with().entitySet(entitySet)
- .selectList(odata.createUriHelper()
- .buildContextURLSelectList(entitySet.getEntityType(), expand, select))
- .suffix(isSingleEntity ? Suffix.ENTITY : null)
- .build();
+ private ContextURL getContextUrl(final EdmEntitySet entitySet, final EdmEntityType entityType,
+ final boolean isSingleEntity, final ExpandOption expand, final SelectOption select) throws SerializerException {
+ Builder builder = ContextURL.with();
+ builder = entitySet == null ?
+ isSingleEntity ? builder.type(entityType) : builder.asCollection().type(entityType) :
+ builder.entitySet(entitySet);
+ builder = builder.selectList(odata.createUriHelper()
+ .buildContextURLSelectList(entityType, expand, select))
+ .suffix(isSingleEntity ? Suffix.ENTITY : null);
+ return builder.build();
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java
index 36d02b8..4fb2e5e 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java
@@ -26,6 +26,8 @@ import org.apache.olingo.commons.api.data.EntitySet;
import org.apache.olingo.commons.api.data.Link;
import org.apache.olingo.commons.api.edm.EdmBindingTarget;
import org.apache.olingo.commons.api.edm.EdmEntitySet;
+import org.apache.olingo.commons.api.edm.EdmEntityType;
+import org.apache.olingo.commons.api.edm.EdmFunction;
import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
import org.apache.olingo.commons.api.http.HttpStatusCode;
import org.apache.olingo.server.api.OData;
@@ -36,6 +38,7 @@ import org.apache.olingo.server.api.uri.UriInfoResource;
import org.apache.olingo.server.api.uri.UriParameter;
import org.apache.olingo.server.api.uri.UriResource;
import org.apache.olingo.server.api.uri.UriResourceEntitySet;
+import org.apache.olingo.server.api.uri.UriResourceFunction;
import org.apache.olingo.server.api.uri.UriResourceNavigation;
import org.apache.olingo.server.tecsvc.data.DataProvider;
@@ -61,34 +64,31 @@ public abstract class TechnicalProcessor implements Processor {
}
protected EdmEntitySet getEdmEntitySet(final UriInfoResource uriInfo) throws ODataApplicationException {
+ EdmEntitySet entitySet = null;
final List<UriResource> resourcePaths = uriInfo.getUriResourceParts();
- // first must be entity set
- if (!(resourcePaths.get(0) instanceof UriResourceEntitySet)) {
- throw new ODataApplicationException("Invalid resource type.",
- HttpStatusCode.NOT_IMPLEMENTED.getStatusCode(), Locale.ROOT);
- }
- final UriResourceEntitySet uriResource = (UriResourceEntitySet) resourcePaths.get(0);
- if (uriResource.getTypeFilterOnCollection() != null || uriResource.getTypeFilterOnEntry() != null) {
- throw new ODataApplicationException("Type filters are not supported.",
+ // First must be entity set or function import.
+ blockTypeFilters(resourcePaths.get(0));
+ if (resourcePaths.get(0) instanceof UriResourceEntitySet) {
+ entitySet = ((UriResourceEntitySet) resourcePaths.get(0)).getEntitySet();
+ } else if (resourcePaths.get(0) instanceof UriResourceFunction) {
+ entitySet = ((UriResourceFunction) resourcePaths.get(0)).getFunctionImport().getReturnedEntitySet();
+ } else {
+ throw new ODataApplicationException("Invalid resource type.",
HttpStatusCode.NOT_IMPLEMENTED.getStatusCode(), Locale.ROOT);
}
- EdmEntitySet entitySet = uriResource.getEntitySet();
int navigationCount = 0;
- while (++navigationCount < resourcePaths.size()
+ while (entitySet != null
+ && ++navigationCount < resourcePaths.size()
&& resourcePaths.get(navigationCount) instanceof UriResourceNavigation) {
- final UriResourceNavigation uriNavigationResource = (UriResourceNavigation) resourcePaths.get(navigationCount);
- if (uriNavigationResource.getTypeFilterOnCollection() != null
- || uriNavigationResource.getTypeFilterOnEntry() != null) {
- throw new ODataApplicationException("Type filters are not supported.",
- HttpStatusCode.NOT_IMPLEMENTED.getStatusCode(), Locale.ROOT);
- }
- if (uriNavigationResource.getProperty().containsTarget()) {
+ final UriResourceNavigation uriResourceNavigation = (UriResourceNavigation) resourcePaths.get(navigationCount);
+ blockTypeFilters(uriResourceNavigation);
+ if (uriResourceNavigation.getProperty().containsTarget()) {
throw new ODataApplicationException("Containment navigation is not supported.",
HttpStatusCode.NOT_IMPLEMENTED.getStatusCode(), Locale.ROOT);
}
- final EdmBindingTarget target = entitySet.getRelatedBindingTarget(uriNavigationResource.getProperty().getName());
+ final EdmBindingTarget target = entitySet.getRelatedBindingTarget(uriResourceNavigation.getProperty().getName());
if (target instanceof EdmEntitySet) {
entitySet = (EdmEntitySet) target;
} else {
@@ -107,8 +107,31 @@ public abstract class TechnicalProcessor implements Processor {
*/
protected Entity readEntity(final UriInfoResource uriInfo) throws ODataApplicationException {
final List<UriResource> resourcePaths = uriInfo.getUriResourceParts();
- final UriResourceEntitySet uriResource = (UriResourceEntitySet) resourcePaths.get(0);
- Entity entity = dataProvider.read(uriResource.getEntitySet(), uriResource.getKeyPredicates());
+
+ Entity entity = null;
+ if (resourcePaths.get(0) instanceof UriResourceEntitySet) {
+ final UriResourceEntitySet uriResource = (UriResourceEntitySet) resourcePaths.get(0);
+ entity = dataProvider.read(uriResource.getEntitySet(), uriResource.getKeyPredicates());
+ } else if (resourcePaths.get(0) instanceof UriResourceFunction) {
+ final UriResourceFunction uriResource = (UriResourceFunction) resourcePaths.get(0);
+ final EdmFunction function = uriResource.getFunction();
+ if (function.getReturnType().getType() instanceof EdmEntityType) {
+ final List<UriParameter> key = uriResource.getKeyPredicates();
+ if (key.isEmpty()) {
+ if (uriResource.isCollection()) { // handled in readEntityCollection()
+ return null;
+ } else {
+ entity = dataProvider.readFunctionEntity(function, uriResource.getParameters());
+ }
+ } else {
+ entity = dataProvider.read((EdmEntityType) function.getReturnType().getType(),
+ dataProvider.readFunctionEntitySet(function, uriResource.getParameters()),
+ key);
+ }
+ } else {
+ return null;
+ }
+ }
if (entity == null) {
throw new ODataApplicationException("Nothing found.", HttpStatusCode.NOT_FOUND.getStatusCode(), Locale.ROOT);
}
@@ -119,7 +142,7 @@ public abstract class TechnicalProcessor implements Processor {
final UriResourceNavigation uriNavigationResource = (UriResourceNavigation) resourcePaths.get(navigationCount);
final EdmNavigationProperty navigationProperty = uriNavigationResource.getProperty();
final List<UriParameter> key = uriNavigationResource.getKeyPredicates();
- if (navigationProperty.isCollection() && key.isEmpty()) {
+ if (navigationProperty.isCollection() && key.isEmpty()) { // handled in readEntityCollection()
return entity;
}
final Link link = entity.getNavigationLink(navigationProperty.getName());
@@ -142,7 +165,12 @@ public abstract class TechnicalProcessor implements Processor {
final Link link = entity.getNavigationLink(getLastNavigation(uriInfo).getProperty().getName());
return link == null ? null : link.getInlineEntitySet();
} else {
- return dataProvider.readAll(((UriResourceEntitySet) resourcePaths.get(0)).getEntitySet());
+ if (resourcePaths.get(0) instanceof UriResourceFunction) {
+ final UriResourceFunction uriResource = (UriResourceFunction) resourcePaths.get(0);
+ return dataProvider.readFunctionEntitySet(uriResource.getFunction(), uriResource.getParameters());
+ } else {
+ return dataProvider.readAll(((UriResourceEntitySet) resourcePaths.get(0)).getEntitySet());
+ }
}
}
@@ -157,6 +185,21 @@ public abstract class TechnicalProcessor implements Processor {
return (UriResourceNavigation) resourcePaths.get(--navigationCount);
}
+ private void blockTypeFilters(final UriResource uriResource) throws ODataApplicationException {
+ if (uriResource instanceof UriResourceEntitySet
+ && (((UriResourceEntitySet) uriResource).getTypeFilterOnCollection() != null
+ || ((UriResourceEntitySet) uriResource).getTypeFilterOnEntry() != null)
+ || uriResource instanceof UriResourceFunction
+ && (((UriResourceFunction) uriResource).getTypeFilterOnCollection() != null
+ || ((UriResourceFunction) uriResource).getTypeFilterOnEntry() != null)
+ || uriResource instanceof UriResourceNavigation
+ && (((UriResourceNavigation) uriResource).getTypeFilterOnCollection() != null
+ || ((UriResourceNavigation) uriResource).getTypeFilterOnEntry() != null)) {
+ throw new ODataApplicationException("Type filters are not supported.",
+ HttpStatusCode.NOT_IMPLEMENTED.getStatusCode(), Locale.ROOT);
+ }
+ }
+
protected void validateOptions(final UriInfoResource uriInfo) throws ODataApplicationException {
if (uriInfo.getIdOption() != null
|| uriInfo.getSearchOption() != null) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/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 98ff0d9..b5aedac 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
@@ -37,7 +37,7 @@ public class ServerSidePagingHandler {
public static void applyServerSidePaging(final SkipTokenOption skipTokenOption, final EntitySet entitySet,
final EdmEntitySet edmEntitySet, final String rawRequestUri) throws ODataApplicationException {
- if (shouldApplyServerSidePaging(edmEntitySet)) {
+ if (edmEntitySet != null && shouldApplyServerSidePaging(edmEntitySet)) {
final int maxPageSize = getMaxPageSize();
final int page = getPage(skipTokenOption);
final int itemsToSkip = maxPageSize * page;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/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 d219657..3b438dd 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
@@ -123,19 +123,21 @@ public class ContainerProvider {
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FINInvisibleRTInt16"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FINInvisible2RTInt16"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTETKeyNav"));
+ functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTESTwoKeyNav"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTETTwoKeyNavParam"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTStringTwoParam"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTCollStringTwoParam"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTCTAllPrimTwoParam"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTESMixPrimCollCompTwoParam"));
- functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FINRTESMixPrimCollCompTwoParam"));
+ functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTCollETMixPrimCollCompTwoParam"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTCollCTTwoPrim"));
- functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTETMedia"));
+ functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTESMedia"));
+ functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTCollESMedia"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTCTTwoPrimParam"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTCTTwoPrim"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTCollString"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTString"));
- functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTESTwoKeyNavParam"));
+ functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTCollESTwoKeyNavParam"));
functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTCollCTTwoPrimParam"));
return container;
@@ -444,106 +446,120 @@ public class ContainerProvider {
if (entityContainer.equals(nameContainer)) {
if (name.equals("FINRTInt16")) {
return new FunctionImport()
- .setName("FINRTInt16")
+ .setName(name)
.setFunction(FunctionProvider.nameUFNRTInt16)
.setIncludeInServiceDocument(true);
} else if (name.equals("FINInvisibleRTInt16")) {
return new FunctionImport()
- .setName("FINInvisibleRTInt16")
+ .setName(name)
.setFunction(FunctionProvider.nameUFNRTInt16);
} else if (name.equals("FINInvisible2RTInt16")) {
return new FunctionImport()
- .setName("FINInvisible2RTInt16")
+ .setName(name)
.setFunction(FunctionProvider.nameUFNRTInt16);
} else if (name.equals("FICRTETKeyNav")) {
return new FunctionImport()
- .setName("FICRTETKeyNav")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTETKeyNav);
+ } else if (name.equals("FICRTESTwoKeyNav")) {
+ return new FunctionImport()
+ .setName(name)
+ .setFunction(FunctionProvider.nameUFCRTETTwoKeyNav)
+ .setEntitySet(new Target().setEntityContainer(entityContainer).setTargetName("ESTwoKeyNav"))
+ .setIncludeInServiceDocument(true);
} else if (name.equals("FICRTETTwoKeyNavParam")) {
return new FunctionImport()
- .setName("FICRTETTwoKeyNavParam")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTETTwoKeyNavParam)
.setIncludeInServiceDocument(true);
} else if (name.equals("FICRTStringTwoParam")) {
return new FunctionImport()
- .setName("FICRTStringTwoParam")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTStringTwoParam)
.setIncludeInServiceDocument(true);
} else if (name.equals("FICRTCollStringTwoParam")) {
return new FunctionImport()
- .setName("FICRTCollStringTwoParam")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTCollStringTwoParam)
.setIncludeInServiceDocument(true);
} else if (name.equals("FICRTCTAllPrimTwoParam")) {
return new FunctionImport()
- .setName("FICRTCTAllPrimTwoParam")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTCTAllPrimTwoParam)
.setIncludeInServiceDocument(true);
} else if (name.equals("FICRTESMixPrimCollCompTwoParam")) {
return new FunctionImport()
- .setName("FICRTESMixPrimCollCompTwoParam")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTESMixPrimCollCompTwoParam)
.setIncludeInServiceDocument(true);
- } else if (name.equals("FINRTESMixPrimCollCompTwoParam")) {
+ } else if (name.equals("FICRTCollETMixPrimCollCompTwoParam")) {
return new FunctionImport()
- .setName("FINRTESMixPrimCollCompTwoParam")
- .setFunction(FunctionProvider.nameUFNRTESMixPrimCollCompTwoParam)
+ .setName(name)
+ .setFunction(FunctionProvider.nameUFCRTCollETMixPrimCollCompTwoParam)
.setIncludeInServiceDocument(true);
} else if (name.equals("FICRTCollCTTwoPrim")) {
return new FunctionImport()
- .setName("FICRTCollCTTwoPrim")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTCollCTTwoPrim)
.setIncludeInServiceDocument(true);
- } else if (name.equals("FICRTETMedia")) {
+ } else if (name.equals("FICRTESMedia")) {
return new FunctionImport()
- .setName("FICRTETMedia")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTETMedia)
+ .setEntitySet(new Target().setEntityContainer(entityContainer).setTargetName("ESMedia"))
+ .setIncludeInServiceDocument(true);
+ } else if (name.equals("FICRTCollESMedia")) {
+ return new FunctionImport()
+ .setName(name)
+ .setFunction(FunctionProvider.nameUFCRTCollETMedia)
+ .setEntitySet(new Target().setEntityContainer(entityContainer).setTargetName("ESMedia"))
.setIncludeInServiceDocument(true);
} else if (name.equals("FICRTCTTwoPrimParam")) {
return new FunctionImport()
- .setName("FICRTCTTwoPrimParam")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTCTTwoPrimParam)
.setIncludeInServiceDocument(true);
} else if (name.equals("FICRTCTTwoPrim")) {
return new FunctionImport()
- .setName("FICRTCTTwoPrim")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTCTTwoPrim)
.setIncludeInServiceDocument(true);
} else if (name.equals("FICRTCollString")) {
return new FunctionImport()
- .setName("FICRTCollString")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTCollString)
.setIncludeInServiceDocument(true);
} else if (name.equals("FICRTString")) {
return new FunctionImport()
- .setName("FICRTString")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTString)
.setIncludeInServiceDocument(true);
- } else if (name.equals("FICRTESTwoKeyNavParam")) {
+ } else if (name.equals("FICRTCollESTwoKeyNavParam")) {
return new FunctionImport()
- .setName("FICRTESTwoKeyNavParam")
- .setFunction(FunctionProvider.nameUFCRTESTwoKeyNavParam)
+ .setName(name)
+ .setFunction(FunctionProvider.nameUFCRTCollETTwoKeyNavParam)
+ .setEntitySet(new Target().setEntityContainer(entityContainer).setTargetName("ESTwoKeyNav"))
.setIncludeInServiceDocument(true);
} else if (name.equals("FICRTCollCTTwoPrimParam")) {
return new FunctionImport()
- .setName("FICRTCollCTTwoPrimParam")
+ .setName(name)
.setFunction(FunctionProvider.nameUFCRTCollCTTwoPrimParam)
.setIncludeInServiceDocument(true);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/93f2ed5c/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/FunctionProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/FunctionProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/FunctionProvider.java
index c4ee503..1892e4e 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/FunctionProvider.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/FunctionProvider.java
@@ -26,6 +26,7 @@ import org.apache.olingo.server.api.edm.provider.ReturnType;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
public class FunctionProvider {
@@ -112,6 +113,12 @@ public class FunctionProvider {
public static final FullQualifiedName nameBFESTwoKeyNavRTESTwoKeyNav =
new FullQualifiedName(SchemaProvider.NAMESPACE, "BFESTwoKeyNavRTESTwoKeyNav");
+ public static final FullQualifiedName nameBFCESTwoKeyNavRTCTNavFiveProp = new FullQualifiedName(
+ SchemaProvider.NAMESPACE, "BFCESTwoKeyNavRTCTNavFiveProp");
+
+ public static final FullQualifiedName nameBFCESTwoKeyNavRTCollCTNavFiveProp = new FullQualifiedName(
+ SchemaProvider.NAMESPACE, "BFCESTwoKeyNavRTCollCTNavFiveProp");
+
// Unbound Functions
public static final FullQualifiedName nameUFCRTCollCTTwoPrim =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UFCRTCollCTTwoPrim");
@@ -129,15 +136,19 @@ public class FunctionProvider {
new FullQualifiedName(SchemaProvider.NAMESPACE, "UFCRTCTTwoPrimParam");
public static final FullQualifiedName nameUFCRTESMixPrimCollCompTwoParam =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UFCRTESMixPrimCollCompTwoParam");
- public static final FullQualifiedName nameUFCRTESTwoKeyNavParam =
- new FullQualifiedName(SchemaProvider.NAMESPACE, "UFCRTESTwoKeyNavParam");
+ public static final FullQualifiedName nameUFCRTCollETTwoKeyNavParam =
+ new FullQualifiedName(SchemaProvider.NAMESPACE, "UFCRTCollETTwoKeyNavParam");
public static final FullQualifiedName nameUFCRTETAllPrimTwoParam =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UFCRTETAllPrimTwoParam");
public static final FullQualifiedName nameUFCRTETKeyNav = new FullQualifiedName(SchemaProvider.NAMESPACE,
"UFCRTETKeyNav");
public static final FullQualifiedName nameUFCRTETMedia = new FullQualifiedName(SchemaProvider.NAMESPACE,
"UFCRTETMedia");
+ public static final FullQualifiedName nameUFCRTCollETMedia = new FullQualifiedName(SchemaProvider.NAMESPACE,
+ "UFCRTCollETMedia");
+ public static final FullQualifiedName nameUFCRTETTwoKeyNav =
+ new FullQualifiedName(SchemaProvider.NAMESPACE, "UFCRTETTwoKeyNav");
public static final FullQualifiedName nameUFCRTETTwoKeyNavParam =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UFCRTETTwoKeyNavParam");
@@ -150,30 +161,23 @@ public class FunctionProvider {
public static final FullQualifiedName nameUFCRTStringTwoParam =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UFCRTStringTwoParam");
- public static final FullQualifiedName nameUFNRTESMixPrimCollCompTwoParam =
- new FullQualifiedName(SchemaProvider.NAMESPACE, "UFNRTESMixPrimCollCompTwoParam");
+ public static final FullQualifiedName nameUFCRTCollETMixPrimCollCompTwoParam =
+ new FullQualifiedName(SchemaProvider.NAMESPACE, "UFCRTCollETMixPrimCollCompTwoParam");
+
public static final FullQualifiedName nameUFNRTInt16 =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UFNRTInt16");
public static final FullQualifiedName nameUFNRTCollCTNavFiveProp = new FullQualifiedName(SchemaProvider.NAMESPACE,
"UFNRTCollCTNavFiveProp");
- public static final FullQualifiedName nameBFCESTwoKeyNavRTCTNavFiveProp = new FullQualifiedName(
- SchemaProvider.NAMESPACE, "BFCESTwoKeyNavRTCTNavFiveProp");
-
- public static final FullQualifiedName nameBFCESTwoKeyNavRTCollCTNavFiveProp = new FullQualifiedName(
- SchemaProvider.NAMESPACE, "BFCESTwoKeyNavRTCollCTNavFiveProp");
-
public List<Function> getFunctions(final FullQualifiedName functionName) throws ODataException {
if (functionName.equals(nameUFNRTInt16)) {
return Arrays.asList(
new Function()
- .setName("UFNRTInt16")
- .setParameters(new ArrayList<Parameter>())
- .setReturnType(
- new ReturnType().setType(PropertyProvider.nameInt16))
- );
+ .setName(functionName.getName())
+ .setParameters(Collections.<Parameter> emptyList())
+ .setReturnType(new ReturnType().setType(PropertyProvider.nameInt16)));
} else if (functionName.equals(nameUFCRTETKeyNav)) {
return Arrays.asList(
@@ -185,6 +189,14 @@ public class FunctionProvider {
new ReturnType().setType(EntityTypeProvider.nameETKeyNav).setNullable(false))
);
+ } else if (functionName.equals(nameUFCRTETTwoKeyNav)) {
+ return Collections.singletonList(
+ new Function()
+ .setName(functionName.getName())
+ .setParameters(Collections.<Parameter> emptyList())
+ .setComposable(true)
+ .setReturnType(
+ new ReturnType().setType(EntityTypeProvider.nameETTwoKeyNav).setNullable(false)));
} else if (functionName.equals(nameUFCRTETTwoKeyNavParam)) {
return Arrays.asList(
new Function()
@@ -238,11 +250,11 @@ public class FunctionProvider {
);
- } else if (functionName.equals(nameUFCRTESTwoKeyNavParam)) {
+ } else if (functionName.equals(nameUFCRTCollETTwoKeyNavParam)) {
return Arrays.asList(
new Function()
.setName("UFCRTESTwoKeyNavParam")
- .setParameters(Arrays.asList(
+ .setParameters(Collections.singletonList(
new Parameter()
.setName("ParameterInt16")
.setType(PropertyProvider.nameInt16)
@@ -351,8 +363,16 @@ public class FunctionProvider {
.setReturnType(
new ReturnType().setType(EntityTypeProvider.nameETMedia).setNullable(false))
);
+ } else if (functionName.equals(nameUFCRTCollETMedia)) {
+ return Arrays.asList(
+ new Function()
+ .setName(functionName.getName())
+ .setParameters(Collections.<Parameter> emptyList())
+ .setComposable(true)
+ .setReturnType(
+ new ReturnType().setType(EntityTypeProvider.nameETMedia).setCollection(true).setNullable(false)));
- } else if (functionName.equals(nameUFNRTESMixPrimCollCompTwoParam)) {
+ } else if (functionName.equals(nameUFCRTCollETMixPrimCollCompTwoParam)) {
return Arrays.asList(
new Function()
.setName("UFNRTESMixPrimCollCompTwoParam")