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/"32767"\">\n" + + " m:metadata-etag=\"metadataETag\" m:etag=\"W/"32767"\">\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; }
