]> source.dussan.org Git - jgit.git/commitdiff
Introduce "never" as parseable date 95/7795/4
authorRobin Rosenberg <robin.rosenberg@dewire.com>
Tue, 18 Sep 2012 17:23:17 +0000 (19:23 +0200)
committerRobin Rosenberg <robin.rosenberg@dewire.com>
Tue, 18 Sep 2012 17:23:17 +0000 (19:23 +0200)
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>
org.eclipse.jgit.test/tst/org/eclipse/jgit/util/GitDateParserTest.java
org.eclipse.jgit/src/org/eclipse/jgit/util/GitDateParser.java

index 98e84fed83d2a0ff05f821f643407a72f7e07df6..6b0632aef083a93308c68c6f843728cdd5435a9d 100644 (file)
@@ -76,6 +76,17 @@ public class GitDateParserTest {
                Assert.assertEquals(cal.getTime(), parse);
        }
 
+       @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";
index dc5c7fa568b0b96205c511ed52afdabd353054eb..f1743d4f165b3477a05ee0e8d95173dad119cf86 100644 (file)
@@ -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;