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 5b790f8 [OLINGO-1429]Enhance metadata serializer to include Entity
Set attribute for an Action Import
5b790f8 is described below
commit 5b790f82c70f00d418dda1a0697d9a6e3a949fe7
Author: ramya vasanth <[email protected]>
AuthorDate: Thu Feb 20 10:11:25 2020 +0530
[OLINGO-1429]Enhance metadata serializer to include Entity Set attribute
for an Action Import
---
.../xml/MetadataDocumentXmlSerializer.java | 11 +++
.../xml/MetadataDocumentXmlSerializerTest.java | 78 ++++++++++++++++++++--
2 files changed, 85 insertions(+), 4 deletions(-)
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 152ca98..5411d90 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
@@ -607,6 +607,17 @@ public class MetadataDocumentXmlSerializer {
writer.writeStartElement(XML_ACTION_IMPORT);
writer.writeAttribute(XML_NAME, actionImport.getName());
writer.writeAttribute(XML_ACTION,
getAliasedFullQualifiedName(actionImport.getUnboundAction(), false));
+ EdmEntitySet returnedEntitySet = actionImport.getReturnedEntitySet();
+ if (returnedEntitySet != null) {
+ String fullQualifiedName = returnedEntitySet.getEntityContainer()
+ .getFullQualifiedName().getFullQualifiedNameAsString();
+ if
(!actionImport.getEntityContainer().getFullQualifiedName().getFullQualifiedNameAsString()
+ .equalsIgnoreCase(fullQualifiedName)) {
+ writer.writeAttribute(XML_ENTITY_SET, fullQualifiedName + "/" +
returnedEntitySet.getName());
+ } else {
+ writer.writeAttribute(XML_ENTITY_SET, returnedEntitySet.getName());
+ }
+ }
appendAnnotations(writer, actionImport);
writer.writeEndElement();
}
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 e5a07d6..8b7e2ce 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
@@ -318,6 +318,12 @@ public class MetadataDocumentXmlSerializerTest {
"Function=\"Alias.UFNRTInt16\"
IncludeInServiceDocument=\"true\"></FunctionImport>"));
assertTrue(metadata.contains("<FunctionImport Name=\"FINRTET\"
Function=\"Alias.UFNRTETAllPrim\" "
+ "EntitySet=\"ESAllPrim\"
IncludeInServiceDocument=\"true\"></FunctionImport>"));
+ assertTrue(metadata.contains("<ActionImport Name=\"AIRTOtherEntity\"
Action=\"Alias.UARTOtherEntity\" "
+ + "EntitySet=\"namespace1.container1/ES\"></ActionImport>"));
+ assertTrue(metadata.contains("<ActionImport Name=\"AIRTEntity\"
Action=\"Alias.UARTEntity\" "
+ + "EntitySet=\"ESAllPrim\"></ActionImport>"));
+ assertTrue(metadata.contains("<ActionImport Name=\"AIRTEntityNoES\"
Action=\"Alias.UARTEntity\">"
+ + "</ActionImport>"));
}
@Test
@@ -475,13 +481,17 @@ public class MetadataDocumentXmlSerializerTest {
static class LocalProvider implements CsdlEdmProvider {
private final static String nameSpace = "namespace";
+ private final static String nameSpace1 = "namespace1";
private final FullQualifiedName nameETAbstract = new
FullQualifiedName(nameSpace, "ETAbstract");
+ private final FullQualifiedName nameET = new FullQualifiedName(nameSpace1,
"ET");
private final FullQualifiedName nameETAbstractBase = new
FullQualifiedName(nameSpace, "ETAbstractBase");
private final FullQualifiedName nameInt16 =
EdmPrimitiveTypeKind.Int16.getFullQualifiedName();
private final FullQualifiedName nameString =
EdmPrimitiveTypeKind.String.getFullQualifiedName();
private final FullQualifiedName nameUARTPrimParam = new
FullQualifiedName(nameSpace, "UARTPrimParam");
+ private final FullQualifiedName nameUARTOtherEntity = new
FullQualifiedName(nameSpace, "UARTOtherEntity");
+ private final FullQualifiedName nameUARTEntity = new
FullQualifiedName(nameSpace, "UARTEntity");
private final CsdlProperty propertyInt16_NotNullable = new CsdlProperty()
.setName("PropertyInt16")
.setType(nameInt16)
@@ -495,6 +505,7 @@ public class MetadataDocumentXmlSerializerTest {
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 nameContainer1 = new
FullQualifiedName(nameSpace1, "container1");
private final FullQualifiedName nameENString = new
FullQualifiedName(nameSpace, "ENString");
@Override
@@ -528,6 +539,11 @@ public class MetadataDocumentXmlSerializerTest {
.setBaseType(nameETAbstract)
.setKey(Collections.singletonList(new
CsdlPropertyRef().setName("PropertyInt16")))
.setProperties(Collections.singletonList(propertyInt16_NotNullable));
+ } else if (entityTypeName.equals(nameET)) {
+ return new CsdlEntityType()
+ .setName("ET")
+ .setKey(Collections.singletonList(new
CsdlPropertyRef().setName("PropertyInt16")))
+ .setProperties(Collections.singletonList(propertyInt16_NotNullable));
}
return null;
}
@@ -558,6 +574,14 @@ public class MetadataDocumentXmlSerializerTest {
.setParameters(Collections.singletonList(
new
CsdlParameter().setName("ParameterInt16").setType(nameInt16)))
.setReturnType(new CsdlReturnType().setType(nameString)));
+ } else if (actionName.equals(nameUARTOtherEntity)) {
+ return Collections.singletonList(
+ new CsdlAction().setName("UARTOtherEntity")
+ .setReturnType(new CsdlReturnType().setType(nameET)));
+ } else if (actionName.equals(nameUARTEntity)) {
+ return Collections.singletonList(
+ new CsdlAction().setName("UARTEntity")
+ .setReturnType(new CsdlReturnType().setType(nameETAbstract)));
}
return null;
}
@@ -587,6 +611,10 @@ public class MetadataDocumentXmlSerializerTest {
return new CsdlEntitySet()
.setName("ESAllPrim")
.setType(nameETAbstractBase);
+ } else if (entitySetName.equals("ES")) {
+ return new CsdlEntitySet()
+ .setName("ES")
+ .setType(nameET);
}
return null;
}
@@ -610,6 +638,20 @@ public class MetadataDocumentXmlSerializerTest {
return new CsdlActionImport()
.setName("AIRTPrimParam")
.setAction(nameUARTPrimParam);
+ } else if (actionImportName.equals("AIRTOtherEntity")) {
+ return new CsdlActionImport()
+ .setName("AIRTOtherEntity")
+ .setAction(nameUARTOtherEntity)
+ .setEntitySet(nameContainer1.getFullQualifiedNameAsString() +
"/ES");
+ } else if (actionImportName.equals("AIRTEntity")) {
+ return new CsdlActionImport()
+ .setName("AIRTEntity")
+ .setAction(nameUARTEntity)
+ .setEntitySet("ESAllPrim");
+ } else if (actionImportName.equals("AIRTEntityNoES")) {
+ return new CsdlActionImport()
+ .setName("AIRTEntityNoES")
+ .setAction(nameUARTEntity);
}
}
return null;
@@ -643,6 +685,17 @@ public class MetadataDocumentXmlSerializerTest {
schema.setNamespace(nameSpace);
schema.setAlias("Alias");
schemas.add(schema);
+
+ CsdlSchema schema1 = new CsdlSchema();
+ schema1.setNamespace(nameSpace1);
+ schema1.setAlias("Alias1");
+ schemas.add(schema1);
+
+ // Add entity type
+ schema1.setEntityTypes(Arrays.asList(getEntityType(nameET)));
+
+ // Add entity container
+ schema1.setEntityContainer(getEntityContainer1());
// EnumTypes
schema.setEnumTypes(Collections.singletonList(getEnumType(nameENString)));
@@ -660,7 +713,11 @@ public class MetadataDocumentXmlSerializerTest {
// TypeDefinitions
// Actions
- schema.setActions(getActions(nameUARTPrimParam));
+ List<CsdlAction> actions = new ArrayList<>();
+ actions.addAll(getActions(nameUARTPrimParam));
+ actions.addAll(getActions(nameUARTOtherEntity));
+ actions.addAll(getActions(nameUARTEntity));
+ schema.setActions(actions);
// Functions
schema.setFunctions(getFunctions(nameUFNRTInt16));
@@ -698,15 +755,19 @@ public class MetadataDocumentXmlSerializerTest {
public CsdlEntityContainer getEntityContainer() throws ODataException {
CsdlEntityContainer container = new CsdlEntityContainer();
container.setName("container");
-
+
// EntitySets
-
container.setEntitySets(Collections.singletonList(getEntitySet(nameContainer,
"ESAllPrim")));
+ List<CsdlEntitySet> entitySets = new ArrayList<>();
+ entitySets.add(getEntitySet(nameContainer, "ESAllPrim"));
+ container.setEntitySets(entitySets);
// Singletons
container.setSingletons(Collections.singletonList(getSingleton(nameContainer,
"SI")));
// ActionImports
-
container.setActionImports(Collections.singletonList(getActionImport(nameContainer,
"AIRTPrimParam")));
+ container.setActionImports(Arrays.asList(getActionImport(nameContainer,
"AIRTPrimParam"),
+ getActionImport(nameContainer, "AIRTOtherEntity"),
getActionImport(nameContainer, "AIRTEntity"),
+ getActionImport(nameContainer, "AIRTEntityNoES")));
// FunctionImports
container.setFunctionImports(Arrays.asList(getFunctionImport(nameContainer,
"FINRTInt16"),
@@ -715,6 +776,15 @@ public class MetadataDocumentXmlSerializerTest {
return container;
}
+ public CsdlEntityContainer getEntityContainer1() throws ODataException {
+ CsdlEntityContainer container = new CsdlEntityContainer();
+ container.setName("container1");
+
+ // EntitySets
+
container.setEntitySets(Collections.singletonList(getEntitySet(nameContainer1,
"ES")));
+ return container;
+ }
+
@Override
public CsdlTypeDefinition getTypeDefinition(final FullQualifiedName
typeDefinitionName) throws ODataException {
return null;