You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2015/01/19 11:05:21 UTC
olingo-odata4 git commit: [OLINGO-538] Fix:
MetadataDocumentXmlSerializer serializes abstract property of complex types
Repository: olingo-odata4
Updated Branches:
refs/heads/master 2591c86c8 -> af64cb1fa
[OLINGO-538] Fix: MetadataDocumentXmlSerializer serializes abstract property of complex types
Signed-off-by: Christian Amend <ch...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/af64cb1f
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/af64cb1f
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/af64cb1f
Branch: refs/heads/master
Commit: af64cb1fa9f5815c750748ea1976c9992f06af27
Parents: 2591c86
Author: Christian Holzer <c....@sap.com>
Authored: Mon Jan 19 10:31:34 2015 +0100
Committer: Christian Amend <ch...@apache.org>
Committed: Mon Jan 19 10:58:31 2015 +0100
----------------------------------------------------------------------
.../xml/MetadataDocumentXmlSerializer.java | 9 ++++-
.../xml/MetadataDocumentXmlSerializerTest.java | 40 +++++++++++++++++++-
2 files changed, 46 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/af64cb1f/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
----------------------------------------------------------------------
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 2ab7809..d962d82 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
@@ -58,6 +58,7 @@ import org.apache.olingo.server.api.serializer.ODataSerializer;
public class MetadataDocumentXmlSerializer {
+ private static final String TRUE = "true";
private static final String XML_EXTENDS = "Extends";
private static final String XML_TARGET = "Target";
private static final String XML_PATH = "Path";
@@ -423,7 +424,11 @@ public class MetadataDocumentXmlSerializer {
if (complexType.getBaseType() != null) {
writer.writeAttribute(XML_BASE_TYPE, getAliasedFullQualifiedName(complexType.getBaseType(), false));
}
-
+
+ if(complexType.isAbstract()) {
+ writer.writeAttribute(ABSTRACT, TRUE);
+ }
+
appendProperties(writer, complexType);
appendNavigationProperties(writer, complexType);
@@ -447,7 +452,7 @@ public class MetadataDocumentXmlSerializer {
}
if (entityType.isAbstract()) {
- writer.writeAttribute(ABSTRACT, "true");
+ writer.writeAttribute(ABSTRACT, TRUE);
}
appendKey(writer, entityType);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/af64cb1f/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializerTest.java
----------------------------------------------------------------------
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 55e5279..8b54fdf 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
@@ -34,6 +34,7 @@ import java.util.List;
import org.apache.commons.io.IOUtils;
import org.apache.olingo.commons.api.ODataException;
import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmComplexType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.EdmSchema;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
@@ -65,6 +66,7 @@ import org.apache.olingo.server.api.edmx.EdmxReferenceIncludeAnnotation;
import org.apache.olingo.server.api.serializer.ODataSerializer;
import org.apache.olingo.server.api.serializer.SerializerException;
import org.apache.olingo.server.core.ServiceMetadataImpl;
+import org.apache.olingo.server.core.edm.provider.EdmComplexTypeImpl;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -227,7 +229,43 @@ public class MetadataDocumentXmlSerializerTest {
assertTrue(metadata.contains("<FunctionImport Name=\"FINRTInt16\" " +
"Function=\"Alias.UFNRTInt16\" IncludeInServiceDocument=\"true\"/>"));
}
-
+
+ @Test
+ public void writeAbstractComplexType() throws Exception {
+ EdmSchema schema = mock(EdmSchema.class);
+ when(schema.getNamespace()).thenReturn("MyNamespace");
+ Edm edm = mock(Edm.class);
+ when(edm.getSchemas()).thenReturn(Arrays.asList(schema));
+ ServiceMetadata serviceMetadata = mock(ServiceMetadata.class);
+ when(serviceMetadata.getEdm()).thenReturn(edm);
+ List<EdmComplexType> complexTypes = new ArrayList<EdmComplexType>();
+
+ FullQualifiedName name = new FullQualifiedName("namespace", "ComplexType");
+ ComplexType complexType = new ComplexType();
+ complexType.setAbstract(true);
+ complexType.setName(name.getName());
+ complexType.setOpenType(true);
+ List<Property> properties = new ArrayList<Property>();
+
+ properties.add(new Property().setName("prop1").setType(EdmPrimitiveTypeKind.String.getFullQualifiedName()));
+ properties.add(new Property().setName("prop2").setType(EdmPrimitiveTypeKind.String.getFullQualifiedName()));
+
+ complexType.setProperties(properties);
+ EdmComplexTypeImpl c1 = EdmComplexTypeImpl.getInstance(edm, name, complexType);
+ complexTypes.add(c1);
+
+ when(schema.getComplexTypes()).thenReturn(complexTypes);
+
+
+ InputStream metadataStream = serializer.metadataDocument(serviceMetadata);
+ String metadata = IOUtils.toString(metadataStream);
+
+ assertTrue(metadata.contains("<ComplexType Name=\"ComplexType\" Abstract=\"true\">"
+ + "<Property Name=\"prop1\" Type=\"Edm.String\"/>"
+ + "<Property Name=\"prop2\" Type=\"Edm.String\"/>"
+ + "</ComplexType>"));
+ }
+
private class LocalProvider extends EdmProvider {
private final static String nameSpace = "namespace";