You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2014/10/14 09:54:48 UTC
git commit: [OLINGO-428] Fixed optional alias attribute for Schema
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 <mi...@apache.org>
Authored: Tue Oct 14 09:49:20 2014 +0200
Committer: mibo <mi...@apache.org>
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(