You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/06/15 09:41:27 UTC
[03/10] incubator-brooklyn git commit: require java 7
require java 7
needed for named groups in regexes;
also fix semantics of 'T' separator and tidy date parsing
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/0988b6d8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/0988b6d8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/0988b6d8
Branch: refs/heads/master
Commit: 0988b6d8f58bea06fe81191eddba691140fde5f1
Parents: 30c3029
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Jun 8 09:36:46 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Jun 10 18:38:17 2015 +0100
----------------------------------------------------------------------
docs/guide/ops/requirements.md | 5 +-
pom.xml | 2 +-
.../src/main/java/brooklyn/util/time/Time.java | 54 ++++++++++----------
.../test/java/brooklyn/util/time/TimeTest.java | 9 ++--
4 files changed, 35 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/0988b6d8/docs/guide/ops/requirements.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/requirements.md b/docs/guide/ops/requirements.md
index 7830bc9..d0cf7fd 100644
--- a/docs/guide/ops/requirements.md
+++ b/docs/guide/ops/requirements.md
@@ -28,12 +28,9 @@ Brooklyn has also been tested on Ubuntu 12.04 and OS X.
## Software Requirements
-Brooklyn requires Java (JRE or JDK) minimum version 6. The latest release of version 7 or 8 is recommended.
+Brooklyn requires Java (JRE or JDK) minimum version 7.
OpenJDK is recommended. Brooklyn has also been tested on IBM J9 and Oracle's JVM.
-* check your `iptables` or other firewall service, making sure that incoming connections on port 8443 is not blocked
-* check that the [linux kernel entropy](increase-entropy.html) is sufficient
-
## Configuration Requirements
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/0988b6d8/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 085e349..6e5bfb5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -108,7 +108,7 @@
<properties>
<!-- Compilation -->
- <java.version>1.6</java.version>
+ <java.version>1.7</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/0988b6d8/utils/common/src/main/java/brooklyn/util/time/Time.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/time/Time.java b/utils/common/src/main/java/brooklyn/util/time/Time.java
index 8fa52cb..ea433a1 100644
--- a/utils/common/src/main/java/brooklyn/util/time/Time.java
+++ b/utils/common/src/main/java/brooklyn/util/time/Time.java
@@ -540,8 +540,7 @@ public class Time {
private final static String COMMON_SEPARATORS = "-\\.";
private final static String TIME_SEPARATOR = COMMON_SEPARATORS+":";
private final static String DATE_SEPARATOR = COMMON_SEPARATORS+"/ ";
- private final static String TIME_ZONE_SEPARATOR = COMMON_SEPARATORS+":/ ,";
- private final static String DATE_TIME_SEPARATOR = TIME_ZONE_SEPARATOR+"T'";
+ private final static String DATE_TIME_ANY_ORDER_GROUP_SEPARATOR = COMMON_SEPARATORS+":/ ";
private final static String DATE_ONLY_WITH_INNER_SEPARATORS =
namedGroup("year", DIGIT+DIGIT+DIGIT+DIGIT)
@@ -589,12 +588,20 @@ public class Time {
notMatching(MERIDIAN+options("$", anyChar("^"+LETTER))) // not AM or PM
+ anyChar(LETTER)+"+"+anyChar(LETTER+DIGIT+"\\/\\-\\' _")+"*");
private final static String TIME_ZONE_SIGNED_OFFSET = namedGroup("tz", options(namedGroup("tzOffset", options("\\+", "-")+
- DIGIT+optionally(DIGIT)+options("h", "H", "", optionally(":")+DIGIT+DIGIT)),
+ DIGIT+optionally(DIGIT)+optionally(optionally(":")+DIGIT+DIGIT)),
optionally("\\+")+TZ_CODE));
- private final static String TIME_ZONE_OPTIONALLY_SIGNED_OFFSET = namedGroup("tz", options(namedGroup("tzOffset", options("\\+", "-", " ")+
- options(optionally(DIGIT)+DIGIT+options("h", "H"), options("0"+DIGIT, "10", "11", "12")+optionally(":")+DIGIT+DIGIT)),
- TZ_CODE));
+ private final static String TIME_ZONE_OPTIONALLY_SIGNED_OFFSET = namedGroup("tz",
+ options(
+ namedGroup("tzOffset", options("\\+", "-", " ")+
+ options("0"+DIGIT, "10", "11", "12")+optionally(optionally(":")+DIGIT+DIGIT)),
+ TZ_CODE));
+ private static String getDateTimeSeparatorPattern(String extraChars) {
+ return options(" +"+optionally(anyChar(DATE_TIME_ANY_ORDER_GROUP_SEPARATOR+extraChars+",")),
+ anyChar(DATE_TIME_ANY_ORDER_GROUP_SEPARATOR+extraChars+","))
+ + anyChar(DATE_TIME_ANY_ORDER_GROUP_SEPARATOR+extraChars)+"*";
+ }
+
@SuppressWarnings("deprecation")
private static Maybe<Date> parseDateSimpleFlexibleFormatParser(String input) {
input = input.trim();
@@ -611,11 +618,11 @@ public class Time {
};
String[] TZ_PATTERNS = new String[] {
// space then time zone with sign (+-) or code is preferred
- " " + TIME_ZONE_SIGNED_OFFSET,
+ optionally(getDateTimeSeparatorPattern("")) + " " + TIME_ZONE_SIGNED_OFFSET,
// then no TZ - but declare the named groups
namedGroup("tz", namedGroup("tzOffset", "")+namedGroup("tzCode", "")),
// then any separator then offset with sign
- anyChar(TIME_ZONE_SEPARATOR)+"+" + TIME_ZONE_SIGNED_OFFSET,
+ getDateTimeSeparatorPattern("") + TIME_ZONE_SIGNED_OFFSET,
// try parsing with enforced separators before TZ first
// (so e.g. in the case of DATE-0100, the -0100 is the time, not the timezone)
@@ -623,8 +630,8 @@ public class Time {
// finally match DATE-TIME-1000 as time zone -1000
// or DATE-TIME 1000 as TZ +1000 in case a + was supplied but converted to ' ' by web
- // (but be stricter about the format, 2h or 0200 required, and hours <= 12 so as not to confuse with a year)
- anyChar(TIME_ZONE_SEPARATOR)+"*" + TIME_ZONE_OPTIONALLY_SIGNED_OFFSET
+ // (but be stricter about the format, two or four digits required, and hours <= 12 so as not to confuse with a year)
+ optionally(getDateTimeSeparatorPattern("")) + TIME_ZONE_OPTIONALLY_SIGNED_OFFSET
};
List<String> basePatterns = MutableList.of();
@@ -632,28 +639,28 @@ public class Time {
// patterns with date first
String[] DATE_PATTERNS_UNCLOSED = new String[] {
// separator before time *required* if date had separators
- DATE_ONLY_WITH_INNER_SEPARATORS + "(,?"+(namedGroup("sep", anyChar(DATE_TIME_SEPARATOR)+"+")),
+ DATE_ONLY_WITH_INNER_SEPARATORS + "("+getDateTimeSeparatorPattern("T"),
// separator before time optional if date did not have separators
- DATE_ONLY_NO_SEPARATORS + "("+(namedGroup("sep", anyChar(DATE_TIME_SEPARATOR)+"*")),
- // separator before time required if date had words, comma allowed but needs something else (e.g. space), 'T' for UTC not supported
- DATE_WORDS_2 + "(,?"+anyChar(DATE_TIME_SEPARATOR)+"+"+namedGroup("sep",""),
- DATE_WORDS_3 + "(,?"+anyChar(DATE_TIME_SEPARATOR)+"+"+namedGroup("sep",""),
+ DATE_ONLY_NO_SEPARATORS + "("+optionally(getDateTimeSeparatorPattern("T")),
+ // separator before time required if date has words
+ DATE_WORDS_2 + "("+getDateTimeSeparatorPattern("T"),
+ DATE_WORDS_3 + "("+getDateTimeSeparatorPattern("T"),
};
for (String tzP: TZ_PATTERNS)
for (String dateP: DATE_PATTERNS_UNCLOSED)
for (String timeP: TIME_PATTERNS)
basePatterns.add("^" + dateP + timeP+")?" + tzP + "$");
- // also allow time first, with TZ after, then before; separator needed but sep T for UTC not supported
+ // also allow time first, with TZ after, then before
for (String tzP: TZ_PATTERNS)
for (String dateP: DATE_PATTERNS)
for (String timeP: TIME_PATTERNS)
- basePatterns.add("^" + timeP + ",?"+anyChar(DATE_TIME_SEPARATOR)+"+" +namedGroup("sep","") + dateP + tzP + "$");
- // also allow time first, with TZ after, then before; separator needed but sep T for UTC not supported
+ basePatterns.add("^" + timeP + getDateTimeSeparatorPattern("") + dateP + tzP + "$");
+ // also allow time first, with TZ after, then before
for (String tzP: TZ_PATTERNS)
for (String dateP: DATE_PATTERNS)
for (String timeP: TIME_PATTERNS)
- basePatterns.add("^" + timeP + tzP + ",?"+anyChar(DATE_TIME_SEPARATOR)+"+" +namedGroup("sep","") + dateP + "$");
+ basePatterns.add("^" + timeP + tzP + getDateTimeSeparatorPattern("") + dateP + "$");
Maybe<Matcher> mm = Maybe.absent();
for (String p: basePatterns) {
@@ -665,13 +672,6 @@ public class Time {
Calendar result;
String tz = m.group("tz");
- String sep = m.group("sep");
- if (sep!=null && sep.trim().equals("T")) {
- if (Strings.isNonBlank(tz)) {
- return Maybe.absent("Cannot use 'T' separator and specify time zone ("+tz+")");
- }
- tz = "UTC";
- }
int year = Integer.parseInt(m.group("year"));
int day = Integer.parseInt(m.group("day"));
@@ -701,7 +701,7 @@ public class Time {
tzz = getTimeZone(tz);
}
if (tzz==null) {
- Maybe<Matcher> tmm = match("^ ?(?<tzH>(\\+|\\-||)"+DIGIT+optionally(DIGIT)+")(h|H||"+optionally(":")+"(?<tzM>"+DIGIT+DIGIT+"))$", tz);
+ Maybe<Matcher> tmm = match("^ ?(?<tzH>(\\+|\\-||)"+DIGIT+optionally(DIGIT)+")"+optionally(optionally(":")+namedGroup("tzM", DIGIT+DIGIT))+"$", tz);
if (tmm.isAbsent()) {
return Maybe.absent("Unknown date format '"+input+"': invalid timezone '"+tz+"'; try 'yyyy-MM-dd HH:mm:ss.SSS +0000'");
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/0988b6d8/utils/common/src/test/java/brooklyn/util/time/TimeTest.java
----------------------------------------------------------------------
diff --git a/utils/common/src/test/java/brooklyn/util/time/TimeTest.java b/utils/common/src/test/java/brooklyn/util/time/TimeTest.java
index ae9f78e..774217e 100644
--- a/utils/common/src/test/java/brooklyn/util/time/TimeTest.java
+++ b/utils/common/src/test/java/brooklyn/util/time/TimeTest.java
@@ -213,6 +213,9 @@ public class TimeTest {
}
assertDatesParseToEqual("2015.6.4+0100", "2015-06-04-0000+0100");
assertDatesParseToEqual("20150604-+0100", "2015-06-04 +0100");
+ assertDatesParseToEqual("20150604, +0100", "2015-06-04 +0100");
+ assertDatesParseToEqual("201506040000, 0100", "2015-06-04 +0100");
+ assertDatesParseToEqual("20150604 , 0000 , 0100", "2015-06-04 +0100");
assertDatesParseToEqual("2015-6-4 +0100", "2015-06-04-0000 +0100");
assertDatesParseToEqual("2015-6-4 -0100", "2015-06-04-0000 -0100");
assertDatesParseToEqual("20150604-0000//-0100", "2015-06-04 -0100");
@@ -239,8 +242,8 @@ public class TimeTest {
// perverse, but accepted for the time being:
Assert.assertEquals(Time.parseDate("2013-2-29").getTime(), Time.parseDate("2013-3-1").getTime());
- assertDatesParseToEqual("20150604T080012.345", "2015-06-04-080012.345+0000");
- assertDatesParseToEqual("20150604080012.345Z", "2015-06-04-080012.345+0000");
+ assertDatesParseToEqual("20150604T080012.345", "2015-06-04-080012.345");
+ assertDatesParseToEqual("20150604T080012.345Z", "2015-06-04-080012.345+0000");
// accept am and pm
assertDatesParseToEqual("20150604 08:00:12.345a", "2015-06-04-080012.345");
@@ -284,7 +287,7 @@ public class TimeTest {
if (integration) assertDatesParseToEqual("16 Dec 1 2015", "2015-12-01-1600");
if (integration) assertDatesParseToEqual("16:30 1067 Dec 1 1066", "1067-12-01-1630 +1066");
assertDatesParseToEqual("1040 1045 12 1", "1045-12-01-1040");
- assertDatesParseToEqual("1040 1045 12 1 +0h", "1045-12-01-1040Z");
+ assertDatesParseToEqual("1040 1045 12 1 +0", "1045-12-01-1040Z");
if (integration) assertDatesParseToEqual("1045 Dec 1 1040", "1045-12-01-1040");
if (integration) assertDatesParseToEqual("10:40 Dec 1 1045", "1045-12-01-1040");
assertDatesParseToEqual("10.11-2020-12.01", "2020-12-01-1011");