Repository: olingo-odata4
Updated Branches:
  refs/heads/master 9933cb0bd -> 5d364dfa2


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5d364dfa/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerTest.java
----------------------------------------------------------------------
diff --git 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerTest.java
 
b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerTest.java
index 1feb17e..2e8ea14 100644
--- 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerTest.java
+++ 
b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerTest.java
@@ -28,8 +28,10 @@ import java.util.Collections;
 import java.util.Date;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.olingo.commons.api.Constants;
 import org.apache.olingo.commons.api.data.ContextURL;
 import org.apache.olingo.commons.api.data.ContextURL.Suffix;
+import org.apache.olingo.commons.api.data.ComplexValue;
 import org.apache.olingo.commons.api.data.Entity;
 import org.apache.olingo.commons.api.data.EntityCollection;
 import org.apache.olingo.commons.api.data.Property;
@@ -81,11 +83,11 @@ import org.xml.sax.SAXException;
 
 public class ODataXmlSerializerTest {
   private static final ServiceMetadata metadata = new ServiceMetadataImpl(
-      new EdmTechProvider(), Collections.<EdmxReference> emptyList(), new 
MetadataETagSupport("WmetadataETag"));
+      new EdmTechProvider(), Collections.<EdmxReference> emptyList(), new 
MetadataETagSupport("metadataETag"));
   private static final EdmEntityContainer entityContainer = 
metadata.getEdm().getEntityContainer();
   private static final DifferenceListener DIFFERENCE_LISTENER = new 
CustomDifferenceListener();
   private static final int MAX_ALLOWED_UPDATED_DIFFERENCE = 2000;
-  private static final String UPDATED_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
+  private static final SimpleDateFormat UPDATED_FORMAT = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
 
   private final DataProvider data = new DataProvider(OData.newInstance(), 
metadata.getEdm());
   private final ODataSerializer serializer = new ODataXmlSerializer();
@@ -115,12 +117,11 @@ public class ODataXmlSerializerTest {
         + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; "
         + "m:context=\"$metadata#ESAllPrim/$entity\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>ESAllPrim(32767)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -182,12 +183,11 @@ public class ODataXmlSerializerTest {
         "  xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; " +
         "m:context=\"$metadata#ESAllPrim/$entity\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>ESAllPrim(32767)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -279,7 +279,7 @@ public class ODataXmlSerializerTest {
         + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"; "
         + "xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; "
         + "m:context=\"http://host:port$metadata#ESCompAllPrim\"; "
-        + "m:metadata-etag=\"WmetadataETag\">"
+        + "m:metadata-etag=\"metadataETag\">"
         + "<a:id>http://host/svc/ESCompAllPrim</a:id>"
         + "<m:count>4</m:count>"
         + "<a:link rel=\"next\" href=\"/next\"/>"
@@ -304,12 +304,11 @@ public class ODataXmlSerializerTest {
         + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; "
         + 
"m:context=\"http://host/service/$metadata#ESCollAllPrim/$entity\"\n"; +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>ESCollAllPrim(1)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "<a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "<a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -421,12 +420,11 @@ public class ODataXmlSerializerTest {
         + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; "
         + "m:context=\"$metadata#ESCompAllPrim/$entity\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\" 
m:etag=\"W/&quot;32767&quot;\">\n" +
+        "  m:metadata-etag=\"metadataETag\" m:etag=\"W/&quot;32767&quot;\">\n" 
+
         "  <a:id>ESCompAllPrim(32767)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "<a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "<a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -476,12 +474,11 @@ public class ODataXmlSerializerTest {
         "  xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; \n" +
         "  m:context=\"$metadata#ESMixPrimCollComp/$entity\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>ESMixPrimCollComp(32767)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -537,12 +534,11 @@ public class ODataXmlSerializerTest {
         "  xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; "
         + "m:context=\"$metadata#ESMixPrimCollComp/$entity\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>ESMixPrimCollComp(32767)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -562,6 +558,90 @@ public class ODataXmlSerializerTest {
   }
 
   @Test
+  public void enumAndTypeDefinition() throws Exception {
+    final EdmEntitySet edmEntitySet = 
entityContainer.getEntitySet("ESMixEnumDefCollComp");
+    Entity entity = new Entity();
+    entity.addProperty(new Property(null, "PropertyInt16", 
ValueType.PRIMITIVE, 1));
+    entity.addProperty(new Property(null, "PropertyEnumString", 
ValueType.ENUM, 6));
+    entity.addProperty(new Property(null, "CollPropertyEnumString", 
ValueType.COLLECTION_ENUM,
+        Arrays.asList(2, 4, 6)));
+    entity.addProperty(new Property(null, "PropertyDefString", 
ValueType.PRIMITIVE, "Test"));
+    entity.addProperty(new Property(null, "CollPropertyDefString", 
ValueType.COLLECTION_PRIMITIVE,
+        Arrays.asList("Test1", "Test2")));
+    ComplexValue complexValue = new ComplexValue();
+    complexValue.getValue().add(entity.getProperty("PropertyEnumString"));
+    complexValue.getValue().add(entity.getProperty("CollPropertyEnumString"));
+    complexValue.getValue().add(entity.getProperty("PropertyDefString"));
+    complexValue.getValue().add(entity.getProperty("CollPropertyDefString"));
+    entity.addProperty(new Property(null, "PropertyCompMixedEnumDef", 
ValueType.COMPLEX, complexValue));
+    entity.addProperty(new Property(null, "CollPropertyCompMixedEnumDef", 
ValueType.COLLECTION_COMPLEX,
+        Collections.singletonList(complexValue)));
+    final long currentTimeMillis = System.currentTimeMillis();
+    final String resultString = IOUtils.toString(serializer.entity(metadata, 
edmEntitySet.getEntityType(), entity,
+        EntitySerializerOptions.with()
+            
.contextURL(ContextURL.with().entitySet(edmEntitySet).suffix(Suffix.ENTITY).build())
+            .build()).getContent());
+    checkXMLEqual(resultString,
+        "<?xml version='1.0' encoding='UTF-8'?>\n"
+        + "<a:entry xmlns:a=\"" + Constants.NS_ATOM + "\""
+        + "  xmlns:m=\"" + Constants.NS_METADATA + "\" xmlns:d=\"" + 
Constants.NS_DATASERVICES + "\""
+        + " m:context=\"$metadata#ESMixEnumDefCollComp/$entity\" 
m:metadata-etag=\"metadataETag\">\n"
+        + "  <a:title /> <a:summary />\n"
+        + "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) 
+ "</a:updated>\n"
+        + "  <a:author> <a:name /> </a:author>\n"
+        + "  <a:category scheme=\"" + Constants.NS_SCHEME + "\"\n"
+        + "    term=\"#olingo.odata.test1.ETMixEnumDefCollComp\" />\n"
+        + "  <a:content type=\"application/xml\">\n"
+        + "    <m:properties>\n"
+        + "      <d:PropertyInt16 m:type=\"Int16\">1</d:PropertyInt16>\n"
+        + "      <d:PropertyEnumString 
m:type=\"#olingo.odata.test1.ENString\">String2,String3"
+        + "</d:PropertyEnumString>\n"
+        + "      <d:CollPropertyEnumString 
m:type=\"#Collection(olingo.odata.test1.ENString)\">\n"
+        + "        <m:element>String2</m:element>\n"
+        + "        <m:element>String3</m:element>\n"
+        + "        <m:element>String2,String3</m:element>\n"
+        + "      </d:CollPropertyEnumString>\n"
+        + "      <d:PropertyDefString 
m:type=\"#olingo.odata.test1.TDString\">Test</d:PropertyDefString>\n"
+        + "      <d:CollPropertyDefString 
m:type=\"#Collection(olingo.odata.test1.TDString)\">\n"
+        + "        <m:element>Test1</m:element>\n"
+        + "        <m:element>Test2</m:element>\n"
+        + "      </d:CollPropertyDefString>\n"
+        + "      <d:PropertyCompMixedEnumDef 
m:type=\"#olingo.odata.test1.CTMixEnumDef\">\n"
+        + "        <d:PropertyEnumString 
m:type=\"#olingo.odata.test1.ENString\">String2,String3"
+        + "</d:PropertyEnumString>\n"
+        + "        <d:CollPropertyEnumString 
m:type=\"#Collection(olingo.odata.test1.ENString)\">\n"
+        + "          <m:element>String2</m:element>\n"
+        + "          <m:element>String3</m:element>\n"
+        + "          <m:element>String2,String3</m:element>\n"
+        + "        </d:CollPropertyEnumString>\n"
+        + "        <d:PropertyDefString 
m:type=\"#olingo.odata.test1.TDString\">Test</d:PropertyDefString>\n"
+        + "        <d:CollPropertyDefString 
m:type=\"#Collection(olingo.odata.test1.TDString)\">\n"
+        + "          <m:element>Test1</m:element>\n"
+        + "          <m:element>Test2</m:element>\n"
+        + "        </d:CollPropertyDefString>\n"
+        + "      </d:PropertyCompMixedEnumDef>\n"
+        + "      <d:CollPropertyCompMixedEnumDef 
m:type=\"#Collection(olingo.odata.test1.CTMixEnumDef)\">\n"
+        + "        <m:element>\n"
+        + "          <d:PropertyEnumString 
m:type=\"#olingo.odata.test1.ENString\">String2,String3"
+        + "</d:PropertyEnumString>\n"
+        + "          <d:CollPropertyEnumString 
m:type=\"#Collection(olingo.odata.test1.ENString)\">\n"
+        + "            <m:element>String2</m:element>\n"
+        + "            <m:element>String3</m:element>\n"
+        + "            <m:element>String2,String3</m:element>\n"
+        + "          </d:CollPropertyEnumString>\n"
+        + "          <d:PropertyDefString 
m:type=\"#olingo.odata.test1.TDString\">Test</d:PropertyDefString>\n"
+        + "          <d:CollPropertyDefString 
m:type=\"#Collection(olingo.odata.test1.TDString)\">\n"
+        + "            <m:element>Test1</m:element>\n"
+        + "            <m:element>Test2</m:element>\n"
+        + "          </d:CollPropertyDefString>\n"
+        + "        </m:element>\n"
+        + "      </d:CollPropertyCompMixedEnumDef>\n"
+        + "    </m:properties>\n"
+        + "  </a:content>\n"
+        + "</a:entry>");
+  }
+
+  @Test
   public void entityTwoPrimNoMetadata() throws Exception {
     final EdmEntitySet edmEntitySet = 
entityContainer.getEntitySet("ESTwoPrim");
     final Entity entity = data.readAll(edmEntitySet).getEntities().get(0);
@@ -605,12 +685,11 @@ public class ODataXmlSerializerTest {
         "  xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; " +
         "  m:context=\"$metadata#ESMedia/$entity\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>ESMedia(1)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -643,14 +722,13 @@ public class ODataXmlSerializerTest {
         "<a:feed xmlns:a=\"http://www.w3.org/2005/Atom\"\n"; +
         "  xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; 
m:context=\"$metadata#ESMedia\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>http://host/svc/ESMedia</a:id>\n" +
         "  <a:entry>\n" +
         "    <a:id>ESMedia(1)</a:id>\n" +
         "    <a:title />\n" +
         "    <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "    <a:author>\n" +
         "      <a:name />\n" +
         "    </a:author>\n" +
@@ -667,8 +745,7 @@ public class ODataXmlSerializerTest {
         "    <a:id>ESMedia(2)</a:id>\n" +
         "    <a:title />\n" +
         "    <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "    <a:author>\n" +
         "      <a:name />\n" +
         "    </a:author>\n" +
@@ -685,8 +762,7 @@ public class ODataXmlSerializerTest {
         "    <a:id>ESMedia(3)</a:id>\n" +
         "    <a:title />\n" +
         "    <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "    <a:author>\n" +
         "      <a:name />\n" +
         "    </a:author>\n" +
@@ -703,8 +779,7 @@ public class ODataXmlSerializerTest {
         "    <a:id>ESMedia(4)</a:id>\n" +
         "    <a:title />\n" +
         "    <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "    <a:author>\n" +
         "      <a:name />\n" +
         "    </a:author>\n" +
@@ -740,14 +815,13 @@ public class ODataXmlSerializerTest {
         + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; "
         + "m:context=\"http://host/svc$metadata#ESAllNullable\"\n"; +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>http://host/svc/ESAllNullable</a:id>\n" +
         "  <a:entry>\n" +
         "    <a:id>ESAllNullable(1)</a:id>\n" +
         "    <a:title />\n" +
         "    <a:summary />\n" +
-        "    <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "    <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) 
+ "</a:updated>" +
         "    <a:author>\n" +
         "      <a:name />\n" +
         "    </a:author>\n" +
@@ -775,82 +849,82 @@ public class ODataXmlSerializerTest {
         "        <d:PropertyTimeOfDay m:null=\"true\" />\n" +
         "        <d:CollPropertyString m:type=\"#Collection(String)\">\n" +
         "          <m:element>[email protected]</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>[email protected]</m:element>\n" +
         "        </d:CollPropertyString>\n" +
         "        <d:CollPropertyBoolean m:type=\"#Collection(Boolean)\">\n" +
         "          <m:element>true</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>false</m:element>\n" +
         "        </d:CollPropertyBoolean>\n" +
         "        <d:CollPropertyByte m:type=\"#Collection(Byte)\">\n" +
         "          <m:element>50</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>249</m:element>\n" +
         "        </d:CollPropertyByte>\n" +
         "        <d:CollPropertySByte m:type=\"#Collection(SByte)\">\n" +
         "          <m:element>-120</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>126</m:element>\n" +
         "        </d:CollPropertySByte>\n" +
         "        <d:CollPropertyInt16 m:type=\"#Collection(Int16)\">\n" +
         "          <m:element>1000</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>30112</m:element>\n" +
         "        </d:CollPropertyInt16>\n" +
         "        <d:CollPropertyInt32 m:type=\"#Collection(Int32)\">\n" +
         "          <m:element>23232323</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>10000001</m:element>\n" +
         "        </d:CollPropertyInt32>\n" +
         "        <d:CollPropertyInt64 m:type=\"#Collection(Int64)\">\n" +
         "          <m:element>929292929292</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>444444444444</m:element>\n" +
         "        </d:CollPropertyInt64>\n" +
         "        <d:CollPropertySingle m:type=\"#Collection(Single)\">\n" +
         "          <m:element>1790.0</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>3210.0</m:element>\n" +
         "        </d:CollPropertySingle>\n" +
         "        <d:CollPropertyDouble m:type=\"#Collection(Double)\">\n" +
         "          <m:element>-17900.0</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>3210.0</m:element>\n" +
         "        </d:CollPropertyDouble>\n" +
         "        <d:CollPropertyDecimal m:type=\"#Collection(Decimal)\">\n" +
         "          <m:element>12</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>1234</m:element>\n" +
         "        </d:CollPropertyDecimal>\n" +
         "        <d:CollPropertyBinary m:type=\"#Collection(Binary)\">\n" +
         "          <m:element>q83v</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>VGeJ</m:element>\n" +
         "        </d:CollPropertyBinary>\n" +
         "        <d:CollPropertyDate m:type=\"#Collection(Date)\">\n" +
         "          <m:element>1958-12-03</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>2013-06-25</m:element>\n" +
         "        </d:CollPropertyDate>\n" +
         "        <d:CollPropertyDateTimeOffset 
m:type=\"#Collection(DateTimeOffset)\">\n" +
         "          <m:element>2015-08-12T03:08:34Z</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>1948-02-17T09:09:09Z</m:element>\n" +
         "        </d:CollPropertyDateTimeOffset>\n" +
         "        <d:CollPropertyDuration m:type=\"#Collection(Duration)\">\n" +
         "          <m:element>PT13S</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>PT1H0S</m:element>\n" +
         "        </d:CollPropertyDuration>\n" +
         "        <d:CollPropertyGuid m:type=\"#Collection(Guid)\">\n" +
         "          
<m:element>ffffff67-89ab-cdef-0123-456789aaaaaa</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          
<m:element>cccccc67-89ab-cdef-0123-456789cccccc</m:element>\n" +
         "        </d:CollPropertyGuid>\n" +
         "        <d:CollPropertyTimeOfDay 
m:type=\"#Collection(TimeOfDay)\">\n" +
         "          <m:element>04:14:13</m:element>\n" +
-        "          <m:element d:null=\"true\" />\n" +
+        "          <m:element m:null=\"true\" />\n" +
         "          <m:element>00:37:13</m:element>\n" +
         "        </d:CollPropertyTimeOfDay>\n" +
         "      </m:properties>\n" +
@@ -884,12 +958,11 @@ public class ODataXmlSerializerTest {
         "  xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; " +
         "  
m:context=\"$metadata#ESAllPrim(PropertyBoolean,PropertyDate)/$entity\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>ESAllPrim(32767)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "    <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "    <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) 
+ "</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -937,14 +1010,13 @@ public class ODataXmlSerializerTest {
         "  xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"\n"; +
         "  
m:context=\"$metadata#ESCompComp(PropertyComp/PropertyComp/PropertyString)\"\n" 
+
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>http://host/svc/ESCompComp</a:id>\n" +
         "  <a:entry>\n" +
         "    <a:id>ESCompComp(1)</a:id>\n" +
         "    <a:title />\n" +
         "    <a:summary />\n" +
-        "<a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "<a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "    <a:author>\n" +
         "      <a:name />\n" +
         "    </a:author>\n" +
@@ -965,8 +1037,7 @@ public class ODataXmlSerializerTest {
         "    <a:id>ESCompComp(2)</a:id>\n" +
         "    <a:title />\n" +
         "    <a:summary />\n" +
-        "<a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "<a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "    <a:author>\n" +
         "      <a:name />\n" +
         "    </a:author>\n" +
@@ -1011,14 +1082,13 @@ public class ODataXmlSerializerTest {
         "  xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; \n" +
         "  m:context=\"$metadata#ESCompComp(PropertyComp/PropertyComp)\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>http://host/svc/ESCompComp</a:id>\n" +
         "  <a:entry>\n" +
         "    <a:id>ESCompComp(1)</a:id>\n" +
         "    <a:title />\n" +
         "    <a:summary />\n" +
-        "    <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "    <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) 
+ "</a:updated>" +
         "    <a:author>\n" +
         "      <a:name />\n" +
         "    </a:author>\n" +
@@ -1040,8 +1110,7 @@ public class ODataXmlSerializerTest {
         "    <a:id>ESCompComp(2)</a:id>\n" +
         "    <a:title />\n" +
         "    <a:summary />\n" +
-        "    <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "    <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) 
+ "</a:updated>" +
         "    <a:author>\n" +
         "      <a:name />\n" +
         "    </a:author>\n" +
@@ -1080,12 +1149,11 @@ public class ODataXmlSerializerTest {
         "<a:entry xmlns:a=\"http://www.w3.org/2005/Atom\"; "
         + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; 
m:context=\"$metadata#ESTwoPrim/$entity\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>ESTwoPrim(32767)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "    <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "    <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) 
+ "</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -1099,8 +1167,7 @@ public class ODataXmlSerializerTest {
         "        <a:id>ESAllPrim(32767)</a:id>\n" +
         "        <a:title />\n" +
         "        <a:summary />\n" +
-        "    <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "    <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) 
+ "</a:updated>" +
         "        <a:author>\n" +
         "          <a:name />\n" +
         "        </a:author>\n" +
@@ -1191,12 +1258,11 @@ public class ODataXmlSerializerTest {
         + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"\n"; +
         "  
m:context=\"$metadata#ESTwoPrim(NavPropertyETAllPrimOne(PropertyDate))/$entity\"\n"
 +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>ESTwoPrim(32767)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -1210,8 +1276,7 @@ public class ODataXmlSerializerTest {
         "        <a:id>ESAllPrim(32767)</a:id>\n" +
         "        <a:title />\n" +
         "        <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "        <a:author>\n" +
         "          <a:name />\n" +
         "        </a:author>\n" +
@@ -1278,12 +1343,11 @@ public class ODataXmlSerializerTest {
         "  xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; "
         + "m:context=\"$metadata#ESAllPrim(PropertySByte)/$entity\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>ESAllPrim(32767)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -1297,8 +1361,8 @@ public class ODataXmlSerializerTest {
         "        <a:id>ESTwoPrim(32767)</a:id>\n" +
         "        <a:title />\n" +
         "        <a:summary />\n" +
-        "        <a:updated>" + new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "        <a:updated>" + UPDATED_FORMAT.format(new 
Date(currentTimeMillis))
+        + "</a:updated>" +
         "        <a:author>\n" +
         "          <a:name />\n" +
         "        </a:author>\n" +
@@ -1332,8 +1396,8 @@ public class ODataXmlSerializerTest {
         "          <a:id>ESTwoPrim(-365)</a:id>\n" +
         "          <a:title />\n" +
         "          <a:summary />\n" +
-        "          <a:updated>" + new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "          <a:updated>" + UPDATED_FORMAT.format(new 
Date(currentTimeMillis))
+        + "</a:updated>" +
         "          <a:author>\n" +
         "            <a:name />\n" +
         "          </a:author>\n" +
@@ -1396,12 +1460,11 @@ public class ODataXmlSerializerTest {
         + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; "
         + "m:context=\"$metadata#ESAllPrim(PropertyTimeOfDay)/$entity\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>ESAllPrim(-32768)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -1462,12 +1525,11 @@ public class ODataXmlSerializerTest {
         + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n"; +
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"\n"; +
         "  
m:context=\"$metadata#ESTwoPrim(NavPropertyETAllPrimMany(PropertyInt32))/$entity\"\n"
 +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <a:id>ESTwoPrim(-365)</a:id>\n" +
         "  <a:title />\n" +
         "  <a:summary />\n" +
-        "  <a:updated>" + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-        .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "  <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + 
"</a:updated>" +
         "  <a:author>\n" +
         "    <a:name />\n" +
         "  </a:author>\n" +
@@ -1486,8 +1548,8 @@ public class ODataXmlSerializerTest {
         "          <a:id>ESAllPrim(-32768)</a:id>\n" +
         "          <a:title />\n" +
         "          <a:summary />\n" +
-        "          <a:updated>" + new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "          <a:updated>" + UPDATED_FORMAT.format(new 
Date(currentTimeMillis))
+        + "</a:updated>" +
         "          <a:author>\n" +
         "            <a:name />\n" +
         "          </a:author>\n" +
@@ -1518,8 +1580,8 @@ public class ODataXmlSerializerTest {
         "          <a:id>ESAllPrim(0)</a:id>\n" +
         "          <a:title />\n" +
         "          <a:summary />\n" +
-        "          <a:updated>" + new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "          <a:updated>" + UPDATED_FORMAT.format(new 
Date(currentTimeMillis))
+        + "</a:updated>" +
         "          <a:author>\n" +
         "            <a:name />\n" +
         "          </a:author>\n" +
@@ -1540,9 +1602,8 @@ public class ODataXmlSerializerTest {
         "                  <a:id>ESTwoPrim(32766)</a:id>\n" +
         "                  <a:title />\n" +
         "                  <a:summary />\n" +
-        "                  <a:updated>" + new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
-
+        "                  <a:updated>" + UPDATED_FORMAT.format(new 
Date(currentTimeMillis))
+        + "</a:updated>" +
         "                  <a:author>\n" +
         "                    <a:name />\n" +
         "                  </a:author>\n" +
@@ -1568,8 +1629,8 @@ public class ODataXmlSerializerTest {
         "                  <a:id>ESTwoPrim(-32766)</a:id>\n" +
         "                  <a:title />\n" +
         "                  <a:summary />\n" +
-        "                  <a:updated>" + new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "                  <a:updated>" + UPDATED_FORMAT.format(new 
Date(currentTimeMillis))
+        + "</a:updated>" +
         "                  <a:author>\n" +
         "                    <a:name />\n" +
         "                  </a:author>\n" +
@@ -1595,8 +1656,8 @@ public class ODataXmlSerializerTest {
         "                  <a:id>ESTwoPrim(32767)</a:id>\n" +
         "                  <a:title />\n" +
         "                  <a:summary />\n" +
-        "                  <a:updated>" + new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
-            .format(new Date(currentTimeMillis)) + "</a:updated>" +
+        "                  <a:updated>" + UPDATED_FORMAT.format(new 
Date(currentTimeMillis))
+        + "</a:updated>" +
         "                  <a:author>\n" +
         "                    <a:name />\n" +
         "                  </a:author>\n" +
@@ -1660,7 +1721,7 @@ public class ODataXmlSerializerTest {
     String expected = "<?xml version='1.0' encoding='UTF-8'?>"
         + "<m:value xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"; "
         + "m:context=\"$metadata#ESAllPrim(32767)/PropertyString\" "
-        + "m:metadata-etag=\"WmetadataETag\">"
+        + "m:metadata-etag=\"metadataETag\">"
         + "First Resource - positive values</m:value>";
     Assert.assertEquals(expected, resultString);
   }
@@ -1680,7 +1741,7 @@ public class ODataXmlSerializerTest {
     String expected = "<?xml version='1.0' encoding='UTF-8'?>"
         + "<m:value xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"; "
         + "m:context=\"$metadata#ESAllPrim(4242)/PropertyString\" "
-        + "m:metadata-etag=\"WmetadataETag\" "
+        + "m:metadata-etag=\"metadataETag\" "
         + "m:null=\"true\"/>";
     Assert.assertEquals(expected, response);
   }
@@ -1701,7 +1762,7 @@ public class ODataXmlSerializerTest {
     String expected = "<?xml version='1.0' encoding='UTF-8'?>"
         + "<m:value xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"; "
         + "m:context=\"$metadata#ESCollAllPrim(1)/CollPropertyString\" "
-        + "m:metadata-etag=\"WmetadataETag\"  m:type=\"#Collection(String)\">"
+        + "m:metadata-etag=\"metadataETag\"  m:type=\"#Collection(String)\">"
         + "<m:element>[email protected]</m:element>"
         + "<m:element>[email protected]</m:element>"
         + "<m:element>[email protected]</m:element>"
@@ -1727,7 +1788,7 @@ public class ODataXmlSerializerTest {
         + "xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; "
         + "m:type=\"#olingo.odata.test1.CTTwoPrim\" "
         + "m:context=\"$metadata#ESMixPrimCollComp(32767)/PropertyComp\" "
-        + "m:metadata-etag=\"WmetadataETag\">"
+        + "m:metadata-etag=\"metadataETag\">"
         + "<d:PropertyInt16 m:type=\"Int16\">111</d:PropertyInt16>"
         + "<d:PropertyString>TEST A</d:PropertyString>"
         + "</m:value>";
@@ -1751,7 +1812,7 @@ public class ODataXmlSerializerTest {
         "  xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"; "
         + "m:type=\"#Collection(olingo.odata.test1.CTTwoPrim)\"\n" +
         "  
m:context=\"$metadata#ESMixPrimCollComp(32767)/CollPropertyComp\"\n" +
-        "  m:metadata-etag=\"WmetadataETag\">\n" +
+        "  m:metadata-etag=\"metadataETag\">\n" +
         "  <m:element>\n" +
         "    <d:PropertyInt16 m:type=\"Int16\">123</d:PropertyInt16>\n" +
         "    <d:PropertyString>TEST 1</d:PropertyString>\n" +
@@ -1838,31 +1899,28 @@ public class ODataXmlSerializerTest {
   
   private static class CustomDifferenceListener implements DifferenceListener {
 
-
     @Override
     public int differenceFound(Difference difference) {
       final String xpath = "/updated[1]/text()[1]";
       if(difference.getControlNodeDetail().getXpathLocation().endsWith(xpath)) 
{
         String controlValue = difference.getControlNodeDetail().getValue();
         String testValue = difference.getTestNodeDetail().getValue();
-        // allow a difference from two seconds
-        SimpleDateFormat sdf = new SimpleDateFormat(UPDATED_FORMAT);
+        // Allow a difference of up to 2 seconds.
         try {
-          long controlTime = sdf.parse(controlValue).getTime();
-          long testTime = sdf.parse(testValue).getTime();
+          long controlTime = UPDATED_FORMAT.parse(controlValue).getTime();
+          long testTime = UPDATED_FORMAT.parse(testValue).getTime();
           long diff = controlTime - testTime;
-          if(diff < 0) {
+          if (diff < 0) {
             diff = diff * -1;
           }
-          if(diff <= MAX_ALLOWED_UPDATED_DIFFERENCE) {
-            // allow a difference from 2 seconds
+          if (diff <= MAX_ALLOWED_UPDATED_DIFFERENCE) {
             return DifferenceListener.RETURN_IGNORE_DIFFERENCE_NODES_SIMILAR;
           }
         } catch (ParseException e) {
           throw new RuntimeException("Parse exception for updated value (see 
difference '" + difference + "').");
         }
       }
-      //Yes it is a difference so throw an exception
+      // Yes it is a difference so throw an exception.
       return DifferenceListener.RETURN_ACCEPT_DIFFERENCE;
     }
 

Reply via email to