You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streams.apache.org by sb...@apache.org on 2014/05/05 20:53:58 UTC
[11/52] [abbrv] git commit: Added unit tests and fixed bugs
Added unit tests and fixed bugs
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/41a04f9c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/41a04f9c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/41a04f9c
Branch: refs/heads/sblackmon
Commit: 41a04f9c1e07ab83fe79a84b78e05a638d34ee03
Parents: 361fea9
Author: mfranklin <mf...@apache.org>
Authored: Mon Mar 31 23:24:51 2014 -0400
Committer: mfranklin <mf...@apache.org>
Committed: Mon Mar 31 23:24:51 2014 -0400
----------------------------------------------------------------------
.../apache/streams/data/util/RFC3339Utils.java | 33 +++++++++++++-------
.../data/data/util/RFC3339UtilsTest.java | 29 ++++++++++++++++-
2 files changed, 50 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/41a04f9c/streams-pojo/src/main/java/org/apache/streams/data/util/RFC3339Utils.java
----------------------------------------------------------------------
diff --git a/streams-pojo/src/main/java/org/apache/streams/data/util/RFC3339Utils.java b/streams-pojo/src/main/java/org/apache/streams/data/util/RFC3339Utils.java
index 9b8339e..daf73a6 100644
--- a/streams-pojo/src/main/java/org/apache/streams/data/util/RFC3339Utils.java
+++ b/streams-pojo/src/main/java/org/apache/streams/data/util/RFC3339Utils.java
@@ -23,6 +23,7 @@ import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import java.util.Locale;
+import java.util.TimeZone;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -43,14 +44,16 @@ public class RFC3339Utils {
private static final String BASE_FMT = "yyyy-MM-dd'T'HH:mm:ss";
private static final DateTimeFormatter UTC_STANDARD_FMT = DateTimeFormat.forPattern(BASE_FMT + "'Z'").withZoneUTC();
+ private static final DateTimeFormatter UTC_SUB_SECOND_FMT = DateTimeFormat.forPattern(BASE_FMT + ".SSS'Z'").withZoneUTC();
private static final DateTimeFormatter LOCAL_STANDARD_FMT = DateTimeFormat.forPattern(BASE_FMT + "Z").withZoneUTC();
+ private static final DateTimeFormatter LOCAL_SUB_SECOND_FMT = DateTimeFormat.forPattern(BASE_FMT + ".SSSZ").withZoneUTC();
private RFC3339Utils() {}
public static DateTime parseUTC(String toParse) {
if(MILLIS.matcher(toParse).matches()) {
- return new DateTime(Long.valueOf(toParse));
+ return new DateTime(Long.valueOf(toParse), DateTimeZone.UTC);
}
if(UTC_STANDARD.matcher(toParse).matches()) {
return parseUTC(UTC_STANDARD_FMT, toParse);
@@ -70,11 +73,11 @@ public class RFC3339Utils {
}
public static String format(DateTime toFormat) {
- return UTC_STANDARD_FMT.print(toFormat.getMillis());
+ return UTC_SUB_SECOND_FMT.print(toFormat.getMillis());
}
- public static String format(DateTime toFormat, Locale locale) {
- return LOCAL_STANDARD_FMT.withLocale(locale).print(toFormat.getMillis());
+ public static String format(DateTime toFormat, TimeZone tz) {
+ return LOCAL_SUB_SECOND_FMT.withZone(DateTimeZone.forTimeZone(tz)).print(toFormat.getMillis());
}
private static DateTime parseUTC(DateTimeFormatter formatter, String toParse) {
@@ -82,13 +85,21 @@ public class RFC3339Utils {
}
private static DateTimeFormatter getSubSecondFormat(String sub, String suffix) {
- StringBuilder pattern = new StringBuilder();
- pattern.append(BASE_FMT);
- pattern.append(".");
- for(int i=0; i<sub.length(); i++) {
- pattern.append("S");
+ DateTimeFormatter result;
+ //Since RFC3339 allows for any number of sub-second notations, we need to flexibly support more or less than 3
+ //digits; however, if it is exactly 3, just use the standards.
+ if(sub.length() == 3) {
+ result = suffix.equals("Z") ? LOCAL_SUB_SECOND_FMT : UTC_SUB_SECOND_FMT;
+ } else {
+ StringBuilder pattern = new StringBuilder();
+ pattern.append(BASE_FMT);
+ pattern.append(".");
+ for (int i = 0; i < sub.length(); i++) {
+ pattern.append("S");
+ }
+ pattern.append(suffix);
+ result = DateTimeFormat.forPattern(pattern.toString()).withZoneUTC();
}
- pattern.append(suffix);
- return DateTimeFormat.forPattern(pattern.toString()).withZoneUTC();
+ return result;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/41a04f9c/streams-pojo/src/test/java/org/apache/streams/data/data/util/RFC3339UtilsTest.java
----------------------------------------------------------------------
diff --git a/streams-pojo/src/test/java/org/apache/streams/data/data/util/RFC3339UtilsTest.java b/streams-pojo/src/test/java/org/apache/streams/data/data/util/RFC3339UtilsTest.java
index 0471d2b..1cf790a 100644
--- a/streams-pojo/src/test/java/org/apache/streams/data/data/util/RFC3339UtilsTest.java
+++ b/streams-pojo/src/test/java/org/apache/streams/data/data/util/RFC3339UtilsTest.java
@@ -19,8 +19,13 @@ package org.apache.streams.data.data.util;
import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
import org.junit.Test;
+import java.util.Locale;
+import java.util.TimeZone;
+
+import static org.apache.streams.data.util.RFC3339Utils.format;
import static org.apache.streams.data.util.RFC3339Utils.parseUTC;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
@@ -142,6 +147,28 @@ public class RFC3339UtilsTest {
assertThat(parsed.dayOfMonth().get(), is(equalTo(25)));
assertThat(parsed.monthOfYear().get(), is(equalTo(12)));
assertThat(parsed.millisOfSecond().get(), is(equalTo(734)));
- System.out.println(parsed.getMillis());
+ }
+
+ @Test
+ public void validLong() {
+ DateTime parsed = parseUTC("1419505200734");
+ assertThat(parsed.minuteOfHour().get(), is(equalTo(0)));
+ assertThat(parsed.hourOfDay().get(), is(equalTo(11)));
+ assertThat(parsed.dayOfMonth().get(), is(equalTo(25)));
+ assertThat(parsed.monthOfYear().get(), is(equalTo(12)));
+ assertThat(parsed.millisOfSecond().get(), is(equalTo(734)));
+ }
+
+ @Test
+ public void validFormatUTC() {
+ DateTime parsed = new DateTime(1419505200734L);
+ assertThat(format(parsed), is(equalTo("2014-12-25T11:00:00.734Z")));
+ }
+
+ @Test
+ public void validFormat() {
+ TimeZone cet = TimeZone.getTimeZone("CET");
+ DateTime parsed = new DateTime(1419505200734L);
+ assertThat(format(parsed, cet), is(equalTo("2014-12-25T12:00:00.734+0100")));
}
}