You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2011/02/14 20:01:24 UTC

svn commit: r1070607 - in /incubator/clerezza/trunk/parent/rdf.core/src: main/java/org/apache/clerezza/rdf/core/impl/util/W3CDateFormat.java test/java/org/apache/clerezza/rdf/core/impl/util/W3CDateFormatTest.java

Author: reto
Date: Mon Feb 14 19:01:24 2011
New Revision: 1070607

URL: http://svn.apache.org/viewvc?rev=1070607&view=rev
Log:
CLEREZZA-419: serializing date objects indepemdemtly of local time zone in UTC Z-notation

Modified:
    incubator/clerezza/trunk/parent/rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/util/W3CDateFormat.java
    incubator/clerezza/trunk/parent/rdf.core/src/test/java/org/apache/clerezza/rdf/core/impl/util/W3CDateFormatTest.java

Modified: incubator/clerezza/trunk/parent/rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/util/W3CDateFormat.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/util/W3CDateFormat.java?rev=1070607&r1=1070606&r2=1070607&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/util/W3CDateFormat.java (original)
+++ incubator/clerezza/trunk/parent/rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/util/W3CDateFormat.java Mon Feb 14 19:01:24 2011
@@ -38,6 +38,17 @@ public class W3CDateFormat extends DateF
 
 	private static final TimeZone utcTZ = new SimpleTimeZone(0, "UTC");
 
+	static {
+		dateFormatWithMillis.setTimeZone(utcTZ);
+		dateFormatNoMillis.setTimeZone(utcTZ);
+	}
+
+	@Override
+	public void setTimeZone(TimeZone zone) {
+		super.setTimeZone(zone);
+	}
+
+
 	/**
 	 * @see java.text.DateFormat#format(java.util.Date, java.lang.StringBuffer,
 	 *      java.text.FieldPosition)
@@ -49,9 +60,15 @@ public class W3CDateFormat extends DateF
 		final DateFormat dateFormat = (date.getTime() % 1000) == 0 ?
 			dateFormatNoMillis : dateFormatWithMillis;
 		String string = dateFormat.format(date);
-		StringBuffer result = new StringBuffer(string);
-		result.insert(string.length() - 2, ':');
-		return result;
+		if (string.endsWith("0000")) {
+			StringBuffer result = new StringBuffer(string.substring(0, string.length()-5));
+			result.append('Z');
+			return result;
+		} else {
+			StringBuffer result = new StringBuffer(string);
+			result.insert(string.length() - 2, ':');
+			return result;
+		}
 	}
 
 	/**

Modified: incubator/clerezza/trunk/parent/rdf.core/src/test/java/org/apache/clerezza/rdf/core/impl/util/W3CDateFormatTest.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/rdf.core/src/test/java/org/apache/clerezza/rdf/core/impl/util/W3CDateFormatTest.java?rev=1070607&r1=1070606&r2=1070607&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/rdf.core/src/test/java/org/apache/clerezza/rdf/core/impl/util/W3CDateFormatTest.java (original)
+++ incubator/clerezza/trunk/parent/rdf.core/src/test/java/org/apache/clerezza/rdf/core/impl/util/W3CDateFormatTest.java Mon Feb 14 19:01:24 2011
@@ -50,6 +50,15 @@ public class W3CDateFormatTest {
 	}
 
 	@Test
+	public void dateObjectSerializedWithoutTimeZone() throws Exception {
+		Calendar calendar = new GregorianCalendar(2009, 0, 1, 1, 33, 58);
+		calendar.setTimeZone(TimeZone.getTimeZone("GMT+7:00"));
+		Date date = calendar.getTime();
+		String serializedDate = new W3CDateFormat().format(date);
+		assertEquals("2008-12-31T18:33:58Z", serializedDate);
+	}
+
+	@Test
 	public void roundTrip() throws Exception {
 		Calendar calendar = new GregorianCalendar(2009, 0, 1,
 				1, 33, 58);