Repository: olingo-odata4 Updated Branches: refs/heads/master c9ce087e9 -> 3b9eb2fb8
[OLINGO-428] Fixed optional alias attribute for Schema Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/3b9eb2fb Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/3b9eb2fb Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/3b9eb2fb Branch: refs/heads/master Commit: 3b9eb2fb8af171246f7b3c4aad5088eb94520bc8 Parents: c9ce087 Author: mibo <[email protected]> Authored: Tue Oct 14 09:49:20 2014 +0200 Committer: mibo <[email protected]> Committed: Tue Oct 14 09:49:20 2014 +0200 ---------------------------------------------------------------------- .../xml/MetadataDocumentXmlSerializer.java | 14 ++++--- .../serializer/xml/MetadataDocumentTest.java | 44 +++++++++++++++++--- 2 files changed, 47 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3b9eb2fb/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 a9cf2f8..7a9ad7e 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 @@ -79,6 +79,8 @@ public class MetadataDocumentXmlSerializer { private static final String XML_TARGET_NAMESPACE = "TargetNamespace"; private static final String XML_QUALIFIER = "Qualifier"; private static final String URI = "Uri"; + private static final String SCHEMA = "Schema"; + private static final String DATA_SERVICES = "DataServices"; private final ServiceMetadata serviceMetadata; @@ -88,8 +90,8 @@ public class MetadataDocumentXmlSerializer { private final static String NS_EDM = "http://docs.oasis-open.org/odata/ns/edm"; - public MetadataDocumentXmlSerializer(final ServiceMetadata edm) { - this.serviceMetadata = edm; + public MetadataDocumentXmlSerializer(final ServiceMetadata serviceMetadata) { + this.serviceMetadata = serviceMetadata; } public void writeMetadataDocument(final XMLStreamWriter writer) throws XMLStreamException { @@ -108,7 +110,7 @@ public class MetadataDocumentXmlSerializer { private void appendDataServices(final XMLStreamWriter writer) throws XMLStreamException { writer.setDefaultNamespace(NS_EDM); - writer.writeStartElement(NS_EDMX, "DataServices"); + writer.writeStartElement(NS_EDMX, DATA_SERVICES); for (EdmSchema schema : serviceMetadata.getEdm().getSchemas()) { appendSchema(writer, schema); } @@ -116,10 +118,12 @@ public class MetadataDocumentXmlSerializer { } private void appendSchema(final XMLStreamWriter writer, final EdmSchema schema) throws XMLStreamException { - writer.writeStartElement(NS_EDM, "Schema"); + writer.writeStartElement(NS_EDM, SCHEMA); writer.writeDefaultNamespace(NS_EDM); writer.writeAttribute(XML_NAMESPACE, schema.getNamespace()); - writer.writeAttribute(XML_ALIAS, schema.getAlias()); + if(schema.getAlias() != null) { + writer.writeAttribute(XML_ALIAS, schema.getAlias()); + } // EnumTypes appendEnumTypes(writer, schema.getEnumTypes()); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3b9eb2fb/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java index 2856cc4..be1f808 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java @@ -18,6 +18,7 @@ */ package org.apache.olingo.server.core.serializer.xml; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; @@ -257,14 +258,45 @@ public class MetadataDocumentTest { } /** - * <code> - * <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/cs02/vocabularies/Org.OData.Core.V1.xml"> - * <edmx:Include Namespace="Org.OData.Core.V1" Alias="Core"/> - * </edmx:Reference> - * </code> + * Write simplest (empty) Schema. * - * @return default emdx reference + * @throws Exception */ + @Test + public void writeMetadataWithEmptySchema() throws Exception { + ODataSerializer serializer = OData.newInstance().createSerializer(ODataFormat.XML); + List<EdmxReference> edmxReferences = Collections.emptyList(); + ServiceMetadata serviceMetadata = new ServiceMetadataImpl(ODataServiceVersion.V40, + new EdmProvider() { + @Override + public List<Schema> getSchemas() throws ODataException { + return Arrays.asList(new Schema().setNamespace("MyNamespace")); + } + }, + edmxReferences); + + InputStream metadata = serializer.metadataDocument(serviceMetadata); + assertNotNull(metadata); + + String metadataString = IOUtils.toString(metadata); + assertEquals("<?xml version='1.0' encoding='UTF-8'?>" + + "<edmx:Edmx Version=\"4.0\" xmlns:edmx=\"http://docs.oasis-open.org/odata/ns/edmx\">" + + "<edmx:DataServices>" + + "<Schema xmlns=\"http://docs.oasis-open.org/odata/ns/edm\" Namespace=\"MyNamespace\"/>" + + "</edmx:DataServices>" + + "</edmx:Edmx>", + metadataString); + } + + /** + * <code> + * <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/cs02/vocabularies/Org.OData.Core.V1.xml"> + * <edmx:Include Namespace="Org.OData.Core.V1" Alias="Core"/> + * </edmx:Reference> + * </code> + * + * @return default emdx reference + */ private List<EdmxReference> getEdmxReferences() { List<EdmxReference> edmxReferences = new ArrayList<EdmxReference>(); EdmxReferenceImpl reference = new EdmxReferenceImpl(
