summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Rosenberg <robin.rosenberg@dewire.com>2012-09-18 19:23:17 +0200
committerRobin Rosenberg <robin.rosenberg@dewire.com>2012-09-18 19:23:17 +0200
commite0a3091af74846b697b5a34da0d7807fe4539e5c (patch)
treef3e38dc47dea2adb1223ac7e2bb0bdc48c2db8fd
parent84e171fbabd898ff46c714058d12a364c1b6499c (diff)
downloadjgit-e0a3091af74846b697b5a34da0d7807fe4539e5c.tar.gz
jgit-e0a3091af74846b697b5a34da0d7807fe4539e5c.zip
Introduce "never" as parseable date
For configuration parameter like "gc.pruneexpire" we need to understand the value "never". Never is handled as a date so far into the future that it will never happen. The actual value currently used is the constant GitDateParser.NEVER. Change-Id: I7744eaee9bf5026da517151c212c88325c348d6c Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/util/GitDateParserTest.java11
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/GitDateParser.java10
2 files changed, 21 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/GitDateParserTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/GitDateParserTest.java
index 98e84fed83..6b0632aef0 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/GitDateParserTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/GitDateParserTest.java
@@ -77,6 +77,17 @@ public class GitDateParserTest {
}
@Test
+ public void never() throws ParseException {
+ GregorianCalendar cal = new GregorianCalendar(SystemReader
+ .getInstance().getTimeZone(), SystemReader.getInstance()
+ .getLocale());
+ Date parse = GitDateParser.parse("never", cal);
+ Assert.assertEquals(GitDateParser.NEVER, parse);
+ parse = GitDateParser.parse("never", null);
+ Assert.assertEquals(GitDateParser.NEVER, parse);
+ }
+
+ @Test
public void now() throws ParseException {
String dateStr = "2007-02-21 15:35:00 +0100";
Date refDate = SystemReader.getInstance()
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/GitDateParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/GitDateParser.java
index dc5c7fa568..f1743d4f16 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/GitDateParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/GitDateParser.java
@@ -62,6 +62,12 @@ import org.eclipse.jgit.internal.JGitText;
* understands.
*/
public class GitDateParser {
+ /**
+ * The Date representing never. Though this is a concrete value, most
+ * callers are adviced to avoid depending on the actual value.
+ */
+ public static final Date NEVER = new Date(Long.MAX_VALUE);
+
// Since SimpleDateFormat instances are expensive to instantiate they should
// be cached. Since they are also not threadsafe they are cached using
// ThreadLocal.
@@ -113,6 +119,7 @@ public class GitDateParser {
* relative formats (e.g. "yesterday") the caller can specify the reference
* date. These types of strings can be parsed:
* <ul>
+ * <li>"never"</li>
* <li>"now"</li>
* <li>"yesterday"</li>
* <li>"(x) years|months|weeks|days|hours|minutes|seconds ago"<br>
@@ -146,6 +153,9 @@ public class GitDateParser {
throws ParseException {
dateStr = dateStr.trim();
Date ret;
+
+ if ("never".equalsIgnoreCase(dateStr))
+ return NEVER;
ret = parse_relative(dateStr, now);
if (ret != null)
return ret;