X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fcommon%2FRevision.java;h=a7e0d209054780f7de0e757214b9736c8be90f05;hb=refs%2Fchanges%2F03%2F90803%2F1;hp=32c6f50e5da64ae6308be6fd8b3dd212a736cf0b;hpb=7286488bb26fbd175297925978c4f75ecee1b70f;p=yangtools.git
diff --git a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/Revision.java b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/Revision.java
index 32c6f50e5d..a7e0d20905 100644
--- a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/Revision.java
+++ b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/Revision.java
@@ -18,15 +18,15 @@ import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Optional;
import java.util.regex.Pattern;
-import javax.annotation.RegEx;
+import org.checkerframework.checker.regex.qual.Regex;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
/**
* Dedicated object identifying a YANG module revision.
*
- *
- *
API design note
+ * API design note
* This class defines the contents of a revision statement, but modules do not require to have a revision (e.g. they
* have not started to keep track of revisions).
*
@@ -38,11 +38,13 @@ import org.eclipse.jdt.annotation.Nullable;
*
* @author Robert Varga
*/
-public final class Revision implements Comparable, Serializable {
+public final class Revision implements Comparable, Immutable, Serializable {
// Note: since we are using writeReplace() this version is not significant.
private static final long serialVersionUID = 1L;
- @RegEx
+ private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+
+ @Regex
// FIXME: we should improve this to filter incorrect dates -- see constructor.
private static final String STRING_FORMAT_PATTERN_STR = "\\d\\d\\d\\d\\-\\d\\d-\\d\\d";
@@ -51,7 +53,10 @@ public final class Revision implements Comparable, Serializable {
*/
public static final Pattern STRING_FORMAT_PATTERN = Pattern.compile(STRING_FORMAT_PATTERN_STR);
- private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ /**
+ * Revision which compares as greater than any other valid revision.
+ */
+ public static final Revision MAX_VALUE = Revision.of("9999-12-31");
private final @NonNull String str;
@@ -89,7 +94,7 @@ public final class Revision implements Comparable, Serializable {
* @return An optional Revision instance.
* @throws DateTimeParseException if the string format does not conform specification.
*/
- public static Optional ofNullable(final @Nullable String str) {
+ public static @NonNull Optional ofNullable(final @Nullable String str) {
return str == null ? Optional.empty() : Optional.of(new Revision(str));
}