This is an automated email from the ASF dual-hosted git repository.

ramyav pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/olingo-odata4.git


The following commit(s) were added to refs/heads/master by this push:
     new 405fb76  [OLINGO-1375]OData V4: EntitySet in function Import need not 
be prefixed with namespace
405fb76 is described below

commit 405fb760886c5c21166981e0469082b191e98fec
Author: ramya vasanth <[email protected]>
AuthorDate: Thu Jun 27 14:26:41 2019 +0530

    [OLINGO-1375]OData V4: EntitySet in function Import need not be prefixed 
with namespace
---
 .../commons/core/edm/EdmEntityContainerImpl.java   |  3 +-
 .../xml/MetadataDocumentXmlSerializer.java         |  9 ++++-
 .../xml/MetadataDocumentXmlSerializerTest.java     | 40 ++++++++++++++++------
 .../xml/ServiceDocumentXmlSerializerTest.java      |  3 ++
 4 files changed, 42 insertions(+), 13 deletions(-)

diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmEntityContainerImpl.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmEntityContainerImpl.java
index 86733ee..0bf3d91 100644
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmEntityContainerImpl.java
+++ 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmEntityContainerImpl.java
@@ -267,7 +267,8 @@ public class EdmEntityContainerImpl extends 
AbstractEdmNamed implements EdmEntit
     try {
       if (null != provider.getAliasInfos()) {
         for (CsdlAliasInfo aliasInfo : provider.getAliasInfos()) {
-          if (aliasInfo.getNamespace().equalsIgnoreCase(namespace)) {
+          if (null != aliasInfo.getNamespace() && 
+                 aliasInfo.getNamespace().equalsIgnoreCase(namespace)) {
             return aliasInfo.getAlias();
           }
         }
diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
index e293000..cde9cf7 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
@@ -583,7 +583,14 @@ public class MetadataDocumentXmlSerializer {
 
       EdmEntitySet returnedEntitySet = functionImport.getReturnedEntitySet();
       if (returnedEntitySet != null) {
-        writer.writeAttribute(XML_ENTITY_SET, containerNamespace + "." + 
returnedEntitySet.getName());
+        String returnedEntitySetNamespace = 
returnedEntitySet.getEntityContainer().getNamespace();
+        if ((null != returnedEntitySetNamespace && 
returnedEntitySetNamespace.equals(containerNamespace)) || (
+            namespaceToAlias.get(returnedEntitySetNamespace) != null && 
+            
namespaceToAlias.get(returnedEntitySetNamespace).equals(containerNamespace))) {
+          writer.writeAttribute(XML_ENTITY_SET, returnedEntitySet.getName());
+        } else {
+          writer.writeAttribute(XML_ENTITY_SET, containerNamespace + "." + 
returnedEntitySet.getName());
+        }
       }
       // Default is false and we do not write the default
       if (functionImport.isIncludeInServiceDocument()) {
diff --git 
a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializerTest.java
 
b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializerTest.java
index 9710677..e5a07d6 100644
--- 
a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializerTest.java
+++ 
b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializerTest.java
@@ -316,6 +316,8 @@ public class MetadataDocumentXmlSerializerTest {
     assertTrue(metadata.contains("<ActionImport Name=\"AIRTPrimParam\" 
Action=\"Alias.UARTPrimParam\"></ActionImport"));
     assertTrue(metadata.contains("<FunctionImport Name=\"FINRTInt16\" " +
         "Function=\"Alias.UFNRTInt16\" 
IncludeInServiceDocument=\"true\"></FunctionImport>"));
+    assertTrue(metadata.contains("<FunctionImport Name=\"FINRTET\" 
Function=\"Alias.UFNRTETAllPrim\" "
+        + "EntitySet=\"ESAllPrim\" 
IncludeInServiceDocument=\"true\"></FunctionImport>"));
   }
 
   @Test
@@ -356,30 +358,30 @@ public class MetadataDocumentXmlSerializerTest {
     // All dynamic expressions
     // Logical expressions
     assertTrue(metadata.contains("<And><Bool>true</Bool><Bool>false</Bool>"
-               + "<Annotation Term=\"ns.term\"></Annotation></And>"));
+        + "<Annotation Term=\"ns.term\"></Annotation></And>"));
     assertTrue(metadata.contains("<Or><Bool>true</Bool><Bool>false</Bool>"
-               + "<Annotation Term=\"ns.term\"></Annotation></Or>"));
+        + "<Annotation Term=\"ns.term\"></Annotation></Or>"));
     assertTrue(metadata.contains("<Not><Bool>true</Bool><Annotation 
Term=\"ns.term\"></Annotation></Not>"));
 
     // Comparison expressions
     assertTrue(metadata.contains("<Eq><Bool>true</Bool><Bool>false</Bool>"
-               + "<Annotation Term=\"ns.term\"></Annotation></Eq>"));
+        + "<Annotation Term=\"ns.term\"></Annotation></Eq>"));
     assertTrue(metadata.contains("<Ne><Bool>true</Bool><Bool>false</Bool>"
-               + "<Annotation Term=\"ns.term\"></Annotation></Ne>"));
+        + "<Annotation Term=\"ns.term\"></Annotation></Ne>"));
     assertTrue(metadata.contains("<Gt><Bool>true</Bool><Bool>false</Bool>"
-               + "<Annotation Term=\"ns.term\"></Annotation></Gt>"));
+        + "<Annotation Term=\"ns.term\"></Annotation></Gt>"));
     assertTrue(metadata.contains("<Ge><Bool>true</Bool><Bool>false</Bool>"
-               + "<Annotation Term=\"ns.term\"></Annotation></Ge>"));
+        + "<Annotation Term=\"ns.term\"></Annotation></Ge>"));
     assertTrue(metadata.contains("<Lt><Bool>true</Bool><Bool>false</Bool>"
-               + "<Annotation Term=\"ns.term\"></Annotation></Lt>"));
+        + "<Annotation Term=\"ns.term\"></Annotation></Lt>"));
     assertTrue(metadata.contains("<Le><Bool>true</Bool><Bool>false</Bool>"
-               + "<Annotation Term=\"ns.term\"></Annotation></Le>"));
+        + "<Annotation Term=\"ns.term\"></Annotation></Le>"));
 
     // Other
     
assertTrue(metadata.contains("<AnnotationPath>AnnoPathValue</AnnotationPath>"));
     assertTrue(metadata
         .contains("<Apply Function=\"odata.concat\"><Bool>true</Bool>"
-                       + "<Annotation 
Term=\"ns.term\"></Annotation></Apply>"));
+            + "<Annotation Term=\"ns.term\"></Annotation></Apply>"));
     assertTrue(metadata
         .contains("<Cast Type=\"Edm.String\" MaxLength=\"1\" Precision=\"2\" 
Scale=\"3\">"
             + "<String>value</String><Annotation 
Term=\"ns.term\"></Annotation></Cast>"));
@@ -403,7 +405,7 @@ public class MetadataDocumentXmlSerializerTest {
             + "<Annotation Term=\"ns.term\"></Annotation></PropertyValue>"
             + "<Annotation Term=\"ns.term\"></Annotation></Record>"));
     assertTrue(metadata.contains("<UrlRef><String>URLRefValue</String>"
-               + "<Annotation Term=\"ns.term\"></Annotation></UrlRef>"));
+        + "<Annotation Term=\"ns.term\"></Annotation></UrlRef>"));
 
   }
 
@@ -491,6 +493,7 @@ public class MetadataDocumentXmlSerializerTest {
     private final FullQualifiedName nameCTTwoPrim = new 
FullQualifiedName(nameSpace, "CTTwoPrim");
     private final FullQualifiedName nameCTTwoPrimBase = new 
FullQualifiedName(nameSpace, "CTTwoPrimBase");
     private final FullQualifiedName nameUFNRTInt16 = new 
FullQualifiedName(nameSpace, "UFNRTInt16");
+    private final FullQualifiedName nameUFNRTETAllPrim = new 
FullQualifiedName(nameSpace, "UFNRTETAllPrim");
     private final FullQualifiedName nameContainer = new 
FullQualifiedName(nameSpace, "container");
     private final FullQualifiedName nameENString = new 
FullQualifiedName(nameSpace, "ENString");
 
@@ -567,6 +570,12 @@ public class MetadataDocumentXmlSerializerTest {
             .setName("UFNRTInt16")
             .setParameters(Collections.<CsdlParameter> emptyList())
             .setReturnType(new CsdlReturnType().setType(nameInt16)));
+      } else if (functionName.equals(nameUFNRTETAllPrim)) {
+        return Collections.singletonList(
+            new CsdlFunction()
+            .setName("UFNRTETAllPrim")
+            .setParameters(Collections.<CsdlParameter> emptyList())
+            .setReturnType(new CsdlReturnType().setType(nameETAbstractBase)));
       }
       return null;
     }
@@ -616,6 +625,12 @@ public class MetadataDocumentXmlSerializerTest {
           .setName("FINRTInt16")
           .setFunction(nameUFNRTInt16)
           .setIncludeInServiceDocument(true);
+        } else if (functionImportName.equals("FINRTET")) {
+          return new CsdlFunctionImport()
+          .setName("FINRTET")
+          .setFunction(nameUFNRTETAllPrim)
+          .setEntitySet("ESAllPrim")
+          .setIncludeInServiceDocument(true);
         }
       }
       return null;
@@ -649,6 +664,8 @@ public class MetadataDocumentXmlSerializerTest {
 
       // Functions
       schema.setFunctions(getFunctions(nameUFNRTInt16));
+      
+      schema.setFunctions(getFunctions(nameUFNRTETAllPrim));
 
       // EntityContainer
       schema.setEntityContainer(getEntityContainer());
@@ -692,7 +709,8 @@ public class MetadataDocumentXmlSerializerTest {
       
container.setActionImports(Collections.singletonList(getActionImport(nameContainer,
 "AIRTPrimParam")));
 
       // FunctionImports
-      
container.setFunctionImports(Collections.singletonList(getFunctionImport(nameContainer,
 "FINRTInt16")));
+      
container.setFunctionImports(Arrays.asList(getFunctionImport(nameContainer, 
"FINRTInt16"),
+          getFunctionImport(nameContainer, "FINRTET")));
 
       return container;
     }
diff --git 
a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java
 
b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java
index dae3011..4824732 100644
--- 
a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java
+++ 
b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java
@@ -93,6 +93,9 @@ public class ServiceDocumentXmlSerializerTest {
         + "<metadata:function-import href=\"FINRTInt16\" 
metadata:name=\"FINRTInt16\">"
         + "<atom:title>FINRTInt16</atom:title>"
         + "</metadata:function-import>"
+        + "<metadata:function-import href=\"FINRTET\" 
metadata:name=\"FINRTET\">"
+        + "<atom:title>FINRTET</atom:title>"
+        + "</metadata:function-import>"
         + "<metadata:singleton href=\"SI\" metadata:name=\"SI\">"
         + "<atom:title>SI</atom:title>"
         + "</metadata:singleton>"

Reply via email to