You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ar...@apache.org on 2018/07/16 05:31:24 UTC
olingo-odata2 git commit: [Olingo-1259]Function Import enhancements
Repository: olingo-odata2
Updated Branches:
refs/heads/master ae1653b2f -> 9aa18ee4f
[Olingo-1259]Function Import enhancements
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/9aa18ee4
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/9aa18ee4
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/9aa18ee4
Branch: refs/heads/master
Commit: 9aa18ee4f5f927470a466d487580cb0387d959b5
Parents: ae1653b
Author: Archana Rai <ar...@sap.com>
Authored: Mon Jul 16 11:01:09 2018 +0530
Committer: Archana Rai <ar...@sap.com>
Committed: Mon Jul 16 11:01:09 2018 +0530
----------------------------------------------------------------------
.../odata2/api/edm/EdmEntityContainer.java | 6 ++++
.../core/edm/Impl/EdmEntityContainerImpl.java | 10 +++++++
.../deserializer/XmlMetadataDeserializer.java | 1 +
.../XmlMetadataDeserializerTest.java | 28 ++++++++++++++++++-
.../provider/EdmEntityContainerImplProv.java | 29 +++++++++++++++++++-
.../EdmEntityContainerImplProvTest.java | 6 ++++
6 files changed, 78 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9aa18ee4/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmEntityContainer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmEntityContainer.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmEntityContainer.java
index 39e70e4..945a4bc 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmEntityContainer.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmEntityContainer.java
@@ -33,6 +33,12 @@ public interface EdmEntityContainer extends EdmNamed, EdmAnnotatable {
* @return <b>boolean</b> true if this is the default container
*/
boolean isDefaultEntityContainer();
+
+ /**
+ * @return <b>String</b> namepspace of the container
+ * @throws EdmException
+ */
+ String getNamespace() throws EdmException;
/**
* Get contained EntitySet by name
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9aa18ee4/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
index 1511a21..51ee01b 100644
--- a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
+++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java
@@ -52,6 +52,7 @@ public class EdmEntityContainerImpl implements EdmEntityContainer, EdmAnnotatabl
private EdmDocumentation documentation;
private String name;
private String extendz;
+ private String namespace;
public Map<String, EdmAssociationSet> getEdmAssociationSetMap() {
return edmAssociationSetMap;
@@ -73,6 +74,10 @@ public class EdmEntityContainerImpl implements EdmEntityContainer, EdmAnnotatabl
this.edm = edm;
}
+ public void setNamespace(String namespace) throws EdmException {
+ this.namespace = namespace;
+ }
+
public ClientEdm getEdm() {
return edm;
}
@@ -218,4 +223,9 @@ public class EdmEntityContainerImpl implements EdmEntityContainer, EdmAnnotatabl
public String toString() {
return String.format(name);
}
+
+ @Override
+ public String getNamespace() throws EdmException {
+ return namespace;
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9aa18ee4/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
index f2d85b2..956fa83 100644
--- a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
+++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java
@@ -503,6 +503,7 @@ public class XmlMetadataDeserializer {
if (edmAssociationSets != null && !edmAssociationSets.isEmpty()) {
setConatinerInAssociationSet(edmAssociationSets, container);
}
+ container.setNamespace(currentNamespace);
container.setEdmEntitySets(edmEntitySets).setEdmAssociationSets(edmAssociationSets).setEdmFunctionImports(
edmFunctionImports);
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9aa18ee4/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java
index daf7a5c..c900c23 100644
--- a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java
+++ b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializerTest.java
@@ -963,7 +963,33 @@ public class XmlMetadataDeserializerTest extends AbstractXmlDeserializerTest {
}
}
}
-
+
+ @Test
+ public void testEntityContainer() throws XMLStreamException,
+ EntityProviderException, EdmException, UnsupportedEncodingException {
+ final String xmWithEntityContainer =
+ "<edmx:Edmx Version=\"1.0\" xmlns:edmx=\"" + Edm.NAMESPACE_EDMX_2007_06 + "\">"
+ + "<edmx:DataServices m:DataServiceVersion=\"2.0\" xmlns:m=\"" + Edm.NAMESPACE_M_2007_08 + "\">"
+ + "<Schema Namespace=\"" + NAMESPACE + "\" xmlns=\"" + Edm.NAMESPACE_EDM_2008_09 + "\">"
+ + "<EntityType Name= \"Employee\" m:HasStream=\"true\">" + "<Key><PropertyRef Name=\"EmployeeId\"/></Key>"
+ + "<Property Name=\"" + propertyNames[0] + "\" Type=\"Edm.String\" Nullable=\"false\"/>"
+ + "<Property Name=\"" + propertyNames[1] + "\" Type=\"Edm.String\" m:FC_TargetPath=\"SyndicationTitle\"/>"
+ + "</EntityType>" + "<EntityContainer Name=\"Container1\" m:IsDefaultEntityContainer=\"true\">"
+ + "<EntitySet Name=\"Employees\" EntityType=\"RefScenario.Employee\"/>" + "</EntityContainer>"
+ + "</Schema>" + "</edmx:DataServices>" + "</edmx:Edmx>";
+ XmlMetadataDeserializer parser = new XmlMetadataDeserializer();
+ InputStream reader = createStreamReader(xmWithEntityContainer);
+ EdmDataServices result = parser.readMetadata(reader, true);
+ assertEquals("Container1", result.getEdm().getEntityContainer("Container1").getName());
+ for (EdmSchema schema : result.getEdm().getSchemas()) {
+ for (EdmEntityContainer container : schema.getEntityContainers()) {
+ assertEquals("Container1", container.getName());
+ assertEquals(Boolean.TRUE, container.isDefaultEntityContainer());
+ assertEquals(NAMESPACE, container.getNamespace());
+ }
+ }
+ }
+
@Test
public void testAssociationSet() throws XMLStreamException,
EntityProviderException, EdmException, UnsupportedEncodingException {
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9aa18ee4/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProv.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProv.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProv.java
index 5096fce..fad7994 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProv.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProv.java
@@ -55,7 +55,8 @@ public class EdmEntityContainerImplProv implements EdmEntityContainer, EdmAnnota
private EdmEntityContainer edmExtendedEntityContainer;
private boolean isDefaultContainer;
private EdmAnnotations annotations;
-
+ private String namespace;
+
public EdmEntityContainerImplProv(final EdmImplProv edm, final EntityContainerInfo entityContainerInfo)
throws EdmException {
this.edm = edm;
@@ -274,4 +275,30 @@ public class EdmEntityContainerImplProv implements EdmEntityContainer, EdmAnnota
}
return entityContainerHierachy;
}
+
+
+ @Override
+ public String getNamespace() throws EdmException{
+ try {
+ if (namespace == null) {
+ List<Schema> schemas;
+ schemas = edm.edmProvider.getSchemas();
+ for (Schema schema : schemas) {
+ List<EntityContainer> containers = schema.getEntityContainers();
+ for (EntityContainer container : containers) {
+ if (container.getName().equals(entityContainerInfo.getName())) {
+ this.namespace = schema.getNamespace();
+ break;
+ }
+ }
+ if (namespace != null) {
+ break;
+ }
+ }
+ }
+ } catch (ODataException e) {
+ throw new EdmException(EdmException.PROVIDERPROBLEM, e);
+ }
+ return namespace;
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9aa18ee4/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProvTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProvTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProvTest.java
index ca58152..b799465 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProvTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProvTest.java
@@ -77,6 +77,7 @@ public class EdmEntityContainerImplProvTest extends BaseTest {
entityContainers.add(entityContainer);
entityContainers.add(parentEntityContainer);
when(mockedSchema.getEntityContainers()).thenReturn(entityContainers);
+ when(mockedSchema.getNamespace()).thenReturn("Namespace");
schemas.add(mockedSchema);
when(edmProvider.getSchemas()).thenReturn(schemas);
@@ -128,6 +129,11 @@ public class EdmEntityContainerImplProvTest extends BaseTest {
}
@Test
+ public void testEntityContainerNamespace() throws EdmException {
+ assertEquals("Namespace", edmEntityContainer.getNamespace());
+ }
+
+ @Test
public void testEntityContainerInheritance() throws EdmException {
assertEquals("fooFromParent", edmEntityContainer.getEntitySet("fooFromParent").getName());