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(