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());