BUG-4688: switch revisions from Date to Revision 83/62083/11
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 25 Oct 2017 10:09:09 +0000 (12:09 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 25 Oct 2017 16:53:21 +0000 (18:53 +0200)
This is a mass conversion of revision representation from java.util.Date
to yang.common.Revision. Using java.util.Date was a mistake from the get
go, causing confusion in users and implementation.

QName.parseRevision() is removed in favor of Revision.valueOf() and invalid
revision strings are updated.

Change-Id: Ifce810bab4183186b67f5f3acfad03ac9c081815
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
106 files changed:
yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/QName.java
yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/QNameModule.java
yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/Revision.java
yang/yang-common/src/test/java/org/opendaylight/yangtools/yang/common/QNameTest.java
yang/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/PathArgumentListTest.java
yang/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifierTest.java
yang/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriterTest.java
yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug5446Test.java
yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug5396Test.java
yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug5446Test.java
yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodeXmlTranslationTest.java
yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/RandomPrefixTest.java
yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemalessXMLStreamNormalizedNodeStreamWriterTest.java
yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java
yang/yang-data-codec-xml/src/test/resources/schema/augment_choice_hell.yang
yang/yang-data-codec-xml/src/test/resources/schema/test.yang
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefPathParserListenerImpl.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaUtils.java
yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriterTest.java
yang/yang-data-impl/src/test/resources/org/opendaylight/yangtools/yang/data/impl/schema/augment_choice_hell.yang
yang/yang-data-impl/src/test/resources/org/opendaylight/yangtools/yang/data/impl/schema/test.yang
yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/BitIsSetXPathFunctionTest.java
yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/DerefXPathFunctionTest.java
yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/DerivedFromXPathFunctionTest.java
yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/EnumValueXPathFunctionTest.java
yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/JaxenTest.java
yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ParserStreamUtils.java
yang/yang-maven-plugin/src/test/resources/test.yang
yang/yang-maven-plugin/src/test/resources/test2.yang
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Module.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleIdentifier.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleImport.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/NamespaceRevisionAware.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionStatement.java
yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java
yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaToStatementWriterAdaptor.java
yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/YangModuleWriter.java
yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/YinExportUtils.java
yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/Bug6856Test.java
yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/YinExportTestUtils.java
yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractSchemaContext.java
yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/AbstractSchemaContext.java
yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java
yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleDependencySort.java
yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleIdentifierImpl.java
yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextProxyTest.java
yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/type/BitImplTest.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/util/YangModelDependencyInfo.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/DependencyResolver.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ImportStatementDefinition.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/IncludeStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ModuleStatementSupport.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionDateStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SubmoduleStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveModule.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AugmentEffectiveStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ImportEffectiveStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/RevisionDateEffectiveStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/RevisionEffectiveStatementImpl.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ConstraintDefinitionsTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/Bug6871Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/Bug6887Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/Bug9241Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/IdentityStatementTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/IdentityrefStatementTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/LeafrefStatementTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/SchemaContextUtilTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/AugmentTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug1412Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug2872Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug4231Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug4610Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug5884Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug6491Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug6961Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug6972Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug7440Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug7480Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug8307Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug8597Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug9005Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug9242Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug9244Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/CaseStmtTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/ControllerStmtParserTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeclaredStatementsTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeviationResolutionTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeviationStmtTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModulesAndSubmodulesTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveSchemaContextTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/GroupingTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/MoreRevisionsTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/RpcStmtTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/TypesResolutionTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/UsesAugmentTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangDataExtensionTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserSimpleTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserWithContextTest.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/NamespaceKeyCriterion.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContextUtils.java

index dec755e68c3956ed698c6060106a591b6c4a3cc5..ce3c1f305cf5ddbbaae86f1c668ec8d33fe1a00d 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.common;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Objects.requireNonNull;
-import static org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil.getRevisionFormat;
 
 import com.google.common.base.Strings;
 import com.google.common.collect.Interner;
@@ -17,8 +16,6 @@ import com.google.common.collect.Interners;
 import java.io.Serializable;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.text.ParseException;
-import java.util.Date;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.regex.Matcher;
@@ -151,7 +148,7 @@ public final class QName implements Immutable, Serializable, Comparable<QName> {
      *            Local name part of QName. MUST NOT BE null.
      * @return Instance of QName
      */
-    public static QName create(final URI namespace, @Nullable final Date revision, final String localName) {
+    public static QName create(final URI namespace, @Nullable final Revision revision, final String localName) {
         return create(QNameModule.create(namespace, revision), localName);
     }
 
@@ -166,7 +163,7 @@ public final class QName implements Immutable, Serializable, Comparable<QName> {
      *            Local name part of QName. MUST NOT BE null.
      * @return Instance of QName
      */
-    public static QName create(final URI namespace, final Optional<Date> revision, final String localName) {
+    public static QName create(final URI namespace, final Optional<Revision> revision, final String localName) {
         return create(QNameModule.create(namespace, revision), localName);
     }
 
@@ -181,7 +178,7 @@ public final class QName implements Immutable, Serializable, Comparable<QName> {
      *            Local name part of QName. MUST NOT BE null.
      * @return Instance of QName
      */
-    public static QName create(final String namespace, final String localName, final Date revision) {
+    public static QName create(final String namespace, final String localName, final Revision revision) {
         final URI namespaceUri = parseNamespace(namespace);
         return create(QNameModule.create(namespaceUri, revision), localName);
     }
@@ -206,7 +203,7 @@ public final class QName implements Immutable, Serializable, Comparable<QName> {
      */
     public static QName create(final String namespace, final String revision, final String localName) {
         final URI namespaceUri = parseNamespace(namespace);
-        final Date revisionDate = parseRevision(revision);
+        final Revision revisionDate = Revision.valueOf(revision);
         return create(namespaceUri, revisionDate, localName);
     }
 
@@ -278,7 +275,7 @@ public final class QName implements Immutable, Serializable, Comparable<QName> {
      *
      * @return revision of the YANG module if the module has defined revision.
      */
-    public Optional<Date> getRevision() {
+    public Optional<Revision> getRevision() {
         return module.getRevision();
     }
 
@@ -376,19 +373,8 @@ public final class QName implements Immutable, Serializable, Comparable<QName> {
         return create(getNamespace(), localName);
     }
 
-    @SuppressWarnings("checkstyle:illegalCatch")
-    public static Date parseRevision(final String formatedDate) {
-        try {
-            return getRevisionFormat().parse(formatedDate);
-        } catch (ParseException | RuntimeException e) {
-            throw new IllegalArgumentException(
-                    String.format("Revision '%s'is not in a supported format", formatedDate), e);
-        }
-    }
-
     /**
-     * Formats {@link Date} representing revision to format
-     * <code>YYYY-mm-dd</code>
+     * Formats {@link Revision} representing revision to format <code>YYYY-mm-dd</code>
      *
      * <p>
      * YANG Specification defines format for <code>revision</code> as
@@ -396,11 +382,11 @@ public final class QName implements Immutable, Serializable, Comparable<QName> {
      * such as capabilities URI, YANG modules, etc.
      *
      * @param revision
-     *            Date object to formatl
+     *            Date object to format
      * @return String representation or null if the input was null.
      */
-    public static String formattedRevision(final Optional<Date> revision) {
-        return revision.map(rev -> getRevisionFormat().format(rev)).orElse(null);
+    public static String formattedRevision(final Optional<Revision> revision) {
+        return revision.map(Revision::toString).orElse(null);
     }
 
     /**
@@ -434,14 +420,6 @@ public final class QName implements Immutable, Serializable, Comparable<QName> {
             return result;
         }
 
-        final Date myRev = getRevision().orElse(null);
-        final Date otherRev = other.getRevision().orElse(null);
-
-        // compare nullable revision parameter
-        if (myRev != null) {
-            return otherRev == null ? 1 : myRev.compareTo(otherRev);
-        }
-
-        return otherRev == null ? 0 : -1;
+        return Revision.compare(getRevision(), other.getRevision());
     }
 }
index 8827ed754542d674d6ec6335609b82020f90399f..31a4b85212ea434cef116b2c8453aa837b8e6c5f 100644 (file)
@@ -15,26 +15,23 @@ import com.google.common.collect.Interners;
 import java.io.Serializable;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.Date;
 import java.util.Objects;
 import java.util.Optional;
+import javax.annotation.Nullable;
 import org.opendaylight.yangtools.concepts.Immutable;
 
 public final class QNameModule implements Immutable, Serializable {
     private static final Interner<QNameModule> INTERNER = Interners.newWeakInterner();
-    private static final long serialVersionUID = 2L;
+    private static final long serialVersionUID = 3L;
 
     private final URI namespace;
 
     //Nullable
-    private final Date revision;
-
-    //Nullable
-    private transient volatile String formattedRevision;
+    private final Revision revision;
 
     private transient int hash;
 
-    private QNameModule(final URI namespace, final Date revision) {
+    private QNameModule(final URI namespace, final Revision revision) {
         this.namespace = requireNonNull(namespace);
         this.revision = revision;
     }
@@ -55,7 +52,7 @@ public final class QNameModule implements Immutable, Serializable {
      * @param revision Module revision
      * @return A new, potentially shared, QNameModule instance
      */
-    public static QNameModule create(final URI namespace, final Optional<Date> revision) {
+    public static QNameModule create(final URI namespace, final Optional<Revision> revision) {
         return new QNameModule(namespace, revision.orElse(null));
     }
 
@@ -76,22 +73,12 @@ public final class QNameModule implements Immutable, Serializable {
      * @param revision Module revision
      * @return A new, potentially shared, QNameModule instance
      */
-    public static QNameModule create(final URI namespace, final Date revision) {
+    public static QNameModule create(final URI namespace, @Nullable final Revision revision) {
         return new QNameModule(namespace, revision);
     }
 
     public String getFormattedRevision() {
-        if (revision == null) {
-            return null;
-        }
-
-        String ret = formattedRevision;
-        if (ret == null) {
-            ret = SimpleDateFormatUtil.getRevisionFormat().format(revision);
-            formattedRevision = ret;
-        }
-
-        return ret;
+        return revision == null ? null : revision.toString();
     }
 
     /**
@@ -110,8 +97,7 @@ public final class QNameModule implements Immutable, Serializable {
      * @return date of the module revision which is specified as argument of
      *         YANG Module <b><font color="#339900">revison</font></b> keyword
      */
-    // FIXME: BUG-4688: should return Optional<Revision>
-    public Optional<Date> getRevision() {
+    public Optional<Revision> getRevision() {
         return Optional.ofNullable(revision);
     }
 
@@ -144,7 +130,7 @@ public final class QNameModule implements Immutable, Serializable {
      *
      */
     URI getRevisionNamespace() throws URISyntaxException {
-        final String query = revision == null ? "" : "revision=" + getFormattedRevision();
+        final String query = revision == null ? "" : "revision=" + revision.toString();
         return new URI(namespace.getScheme(), namespace.getUserInfo(), namespace.getHost(), namespace.getPort(),
             namespace.getPath(), query, namespace.getFragment());
     }
@@ -152,6 +138,6 @@ public final class QNameModule implements Immutable, Serializable {
     @Override
     public String toString() {
         return MoreObjects.toStringHelper(QNameModule.class).omitNullValues().add("ns", getNamespace())
-            .add("rev", getFormattedRevision()).toString();
+            .add("rev", revision).toString();
     }
 }
index 7bd1fe425fadfff59b8c1b1b2dd7e348766decbb..dee497aa688bee02c84b8511e3bbee46215a68d9 100644 (file)
@@ -48,8 +48,8 @@ public final class Revision implements Comparable<Revision>, Serializable {
 
     private Revision(final String str) {
         // Since all strings conform to this format, compareTo() can be delegated to String.compareTo()
-        Preconditions.checkArgument(STRING_FORMAT.matcher(str).matches(), "String '%s' does match revision format",
-            str);
+        Preconditions.checkArgument(STRING_FORMAT.matcher(str).matches(),
+            "String '%s' does match revision format YYYY-MM-DD", str);
         this.str = str;
     }
 
index 00e896620ed2110fe1c8153326edd8490d88cc99..eece15c8a7a5f9f43dd1d51b2f472952d7bad226 100644 (file)
@@ -14,7 +14,6 @@ import static org.junit.Assert.fail;
 
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.Date;
 import java.util.Optional;
 import org.junit.Test;
 
@@ -72,7 +71,7 @@ public class QNameTest {
 
         // compare with 1 null revision
         qa = QName.create(URI.create(A), A);
-        qb = QName.create(URI.create(A), QName.parseRevision(REVISION), A);
+        qb = QName.create(URI.create(A), Revision.valueOf(REVISION), A);
         assertTrue(qa.compareTo(qb) < 0);
         assertTrue(qb.compareTo(qa) > 0);
 
@@ -90,14 +89,14 @@ public class QNameTest {
         assertEquals(qname1, qname.withoutRevision());
         assertEquals(qname1, qname2);
         assertTrue(qname.isEqualWithoutRevision(qname1));
-        assertNotNull(QName.formattedRevision(Optional.of(new Date())));
+        assertNotNull(QName.formattedRevision(Optional.of(Revision.valueOf("2000-01-01"))));
         assertNotNull(qname.hashCode());
         assertEquals(qname, qname.intern());
     }
 
     @Test
     public void testQNameModule() throws URISyntaxException {
-        final QNameModule qnameModule = QNameModule.create(NS, new Date());
+        final QNameModule qnameModule = QNameModule.create(NS, Revision.valueOf("2000-01-01"));
         assertNotNull(qnameModule.toString());
         assertNotNull(qnameModule.getRevisionNamespace());
     }
index 26b28216a27847725d91746f8c306bafb44fdc9b..b69a7aec48ff9bc16892c210b29843f7dc6fd441 100644 (file)
@@ -14,14 +14,12 @@ import static org.junit.Assert.fail;
 
 import com.google.common.collect.UnmodifiableIterator;
 import java.net.URI;
-import java.net.URISyntaxException;
-import java.text.ParseException;
 import java.util.HashMap;
 import java.util.Map;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 
 public class PathArgumentListTest {
@@ -95,9 +93,9 @@ public class PathArgumentListTest {
     }
 
     @Test
-    public void testPathArgument() throws URISyntaxException, ParseException {
-        final QNameModule qNameModule = QNameModule.create(new URI("urn:opendaylight.test2"),
-                SimpleDateFormatUtil.getRevisionFormat().parse("2015-08-08"));
+    public void testPathArgument() {
+        final QNameModule qNameModule = QNameModule.create(URI.create("urn:opendaylight.test2"),
+            Revision.valueOf("2015-08-08"));
         final QName qNameRoot = QName.create(qNameModule, "root");
         final QName qNameList = QName.create(qNameModule, "list");
         final QName qNameLeaf = QName.create(qNameModule, "leaf-a");
index 94bb478dc05349eb9ec6659a292bc5f59a5f323d..1c18036cb7465b37b1351757532119617160568b 100644 (file)
@@ -42,13 +42,13 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum
  */
 public class YangInstanceIdentifierTest {
 
-    private static final QName NODENAME1 = QName.create("test", "2014-5-28", "node1");
-    private static final QName NODENAME2 = QName.create("test", "2014-5-28", "node2");
-    private static final QName NODENAME3 = QName.create("test", "2014-5-28", "node3");
-    private static final QName NODENAME4 = QName.create("test", "2014-5-28", "node4");
-    private static final QName KEY1 = QName.create("test", "2014-5-28", "key1");
-    private static final QName KEY2 = QName.create("test", "2014-5-28", "key2");
-    private static final QName KEY3 = QName.create("test", "2014-5-28", "key3");
+    private static final QName NODENAME1 = QName.create("test", "2014-05-28", "node1");
+    private static final QName NODENAME2 = QName.create("test", "2014-05-28", "node2");
+    private static final QName NODENAME3 = QName.create("test", "2014-05-28", "node3");
+    private static final QName NODENAME4 = QName.create("test", "2014-05-28", "node4");
+    private static final QName KEY1 = QName.create("test", "2014-05-28", "key1");
+    private static final QName KEY2 = QName.create("test", "2014-05-28", "key2");
+    private static final QName KEY3 = QName.create("test", "2014-05-28", "key3");
 
     @Test
     public void testGetLastPathArgument() {
index 315e9d5b7e729989114e18bf8bf23edaff0e7ea6..0abad1b0d93e34907eca2947968b987bb362a298 100644 (file)
@@ -18,17 +18,14 @@ import static org.mockito.Mockito.mock;
 
 import com.google.common.collect.ImmutableSet;
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 import java.net.URI;
-import java.net.URISyntaxException;
-import java.text.ParseException;
 import java.util.Optional;
 import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
@@ -57,10 +54,8 @@ public class NormalizedNodeWriterTest {
     private QName myLeafList;
 
     @Before
-    public void setUp() throws URISyntaxException, ParseException, UnsupportedEncodingException {
-        bazModule = QNameModule.create(new URI("baz-namespace"), SimpleDateFormatUtil.getRevisionFormat()
-                .parse("1970-01-01"));
-
+    public void setUp() {
+        bazModule = QNameModule.create(URI.create("baz-namespace"), Revision.valueOf("1970-01-01"));
         myKeyedList = QName.create(bazModule, "my-keyed-list");
         myKeyLeaf = QName.create(bazModule, "my-key-leaf");
         myLeafList = QName.create(bazModule, "my-leaf-list");
index 0d0252f89f7877ca92b68809dc2c1825e63464cf..07d0ebe770708145a97e5f8a6c5ebebff1ce84a2 100644 (file)
@@ -25,6 +25,7 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@@ -48,7 +49,7 @@ public class Bug5446Test {
 
     @BeforeClass
     public static void init() {
-        fooModuleQName = QNameModule.create(URI.create("foo"), QName.parseRevision("2015-11-05"));
+        fooModuleQName = QNameModule.create(URI.create("foo"), Revision.valueOf("2015-11-05"));
         rootQName = QName.create(fooModuleQName, "root");
         ipAddressQName = QName.create(fooModuleQName, "ip-address");
 
index 82197b3e0329469adf72d09e736ac0d34ef8592f..de830704f0dfa4c0ad42ebfffef391d9f67d118a 100644 (file)
@@ -22,6 +22,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@@ -42,7 +43,7 @@ public class Bug5396Test {
 
     @Before
     public void setUp() throws Exception {
-        fooModuleQName = QNameModule.create(new URI("foo"), QName.parseRevision("2016-03-22"));
+        fooModuleQName = QNameModule.create(new URI("foo"), Revision.valueOf("2016-03-22"));
         schemaContext = YangParserTestUtils.parseYangResource("/bug5396/yang/foo.yang");
     }
 
index e63ab7db07356bfda63870182702cbe66ddaa18f..6f1738911a902a9f0600c6ede63868cfe63e42aa 100644 (file)
@@ -33,6 +33,7 @@ import org.junit.Test;
 import org.opendaylight.yangtools.util.xml.UntrustedXML;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@@ -63,7 +64,7 @@ public class Bug5446Test extends XMLTestCase {
     private final SchemaContext schemaContext;
 
     public Bug5446Test() throws Exception {
-        fooModuleQName = QNameModule.create(new URI("foo"), QName.parseRevision("2015-11-05"));
+        fooModuleQName = QNameModule.create(URI.create("foo"), Revision.valueOf("2015-11-05"));
         rootQName = QName.create(fooModuleQName, "root");
         ipAddressQName = QName.create(fooModuleQName, "ip-address");
 
index 1d2ee34139a089035c697c08a0345a8f13b4d2b0..3e07041df2b40542a2845d484cf9afe146b0d85a 100644 (file)
@@ -24,7 +24,6 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -51,6 +50,7 @@ import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.opendaylight.yangtools.util.xml.UntrustedXML;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -99,7 +99,7 @@ public class NormalizedNodeXmlTranslationTest {
     }
 
     private static final String NAMESPACE = "urn:opendaylight:params:xml:ns:yang:controller:test";
-    private static final Date REVISION = QName.parseRevision("2014-03-13");
+    private static final Revision REVISION = Revision.valueOf("2014-03-13");
 
     static final XMLOutputFactory XML_FACTORY;
 
index 52ee399b850862a7b897b4fea9a593eaed3eb120..57fb2f56caa341ef3cab96a865d41291ba46b818 100644 (file)
@@ -13,13 +13,13 @@ import static org.junit.Assert.assertThat;
 import com.google.common.collect.Iterables;
 import java.net.URI;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import org.hamcrest.CoreMatchers;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 public class RandomPrefixTest {
     static final int MAX_COUNTER = 4000;
@@ -48,7 +48,7 @@ public class RandomPrefixTest {
         for (int i = 0; i < MAX_COUNTER; i++) {
             final String prefix = RandomPrefix.encode(i);
             final URI uri = new URI("localhost:" + prefix);
-            final QName qname = QName.create(QNameModule.create(uri, new Date()), "local-name");
+            final QName qname = QName.create(QNameModule.create(uri, Revision.valueOf("2000-01-01")), "local-name");
             allGenerated.add(a.encodePrefix(qname.getNamespace()));
         }
 
@@ -68,8 +68,8 @@ public class RandomPrefixTest {
         final RandomPrefix a = new RandomPrefix(null);
 
         final URI uri = URI.create("localhost");
-        final QName qname = QName.create(QNameModule.create(uri, new Date()), "local-name");
-        final QName qname2 = QName.create(QNameModule.create(uri, new Date()), "local-name");
+        final QName qname = QName.create(QNameModule.create(uri, Revision.valueOf("2000-01-01")), "local-name");
+        final QName qname2 = QName.create(QNameModule.create(uri, Revision.valueOf("2000-01-01")), "local-name");
 
         assertEquals(a.encodePrefix(qname.getNamespace()), a.encodePrefix(qname2.getNamespace()));
     }
@@ -79,11 +79,11 @@ public class RandomPrefixTest {
         final RandomPrefix a = new RandomPrefix(null);
 
         final URI uri = URI.create("localhost");
-        QName qname = QName.create(uri, new Date(), "local-name");
+        QName qname = QName.create(uri, Revision.valueOf("2000-01-01"), "local-name");
         assertEquals("a", a.encodePrefix(qname.getNamespace()));
-        qname = QName.create(QNameModule.create(uri, new Date()), "local-name");
+        qname = QName.create(QNameModule.create(uri, Revision.valueOf("2000-01-01")), "local-name");
         assertEquals("a", a.encodePrefix(qname.getNamespace()));
-        qname = QName.create(QNameModule.create(URI.create("second"), new Date()), "local-name");
+        qname = QName.create(QNameModule.create(URI.create("second"), Revision.valueOf("2000-01-01")), "local-name");
         assertEquals("b", a.encodePrefix(qname.getNamespace()));
 
     }
index fdb8cb296879b2a4ca422ece894881315bf1782f..8aa40fa281468015c74596baaa4bb580e07e3be0 100644 (file)
@@ -40,6 +40,7 @@ import org.junit.Test;
 import org.opendaylight.yangtools.util.xml.UntrustedXML;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -102,7 +103,7 @@ public class SchemalessXMLStreamNormalizedNodeStreamWriterTest {
 
     @Before
     public void setup() {
-        foobarModule = QNameModule.create(URI.create("foobar-namespace"), QName.parseRevision("2016-09-19"));
+        foobarModule = QNameModule.create(URI.create("foobar-namespace"), Revision.valueOf("2016-09-19"));
 
         outerContainer = QName.create(foobarModule, "outer-container");
 
index 6f7d908cf03860e6d6b814bd205ed0eb859c59d8..6cd32eef77e29ff0554c9d38f77ea4146d2c59fe 100644 (file)
@@ -19,7 +19,6 @@ import java.io.FileNotFoundException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.AbstractMap;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
@@ -34,6 +33,7 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
@@ -108,7 +108,7 @@ public class XmlStreamUtilsTest {
         final XMLStreamWriter writer = XML_OUTPUT_FACTORY.createXMLStreamWriter(out);
 
         writer.writeStartElement("element");
-        final QNameModule parent = QNameModule.create(URI.create("parent:uri"), new Date());
+        final QNameModule parent = QNameModule.create(URI.create("parent:uri"), Revision.valueOf("2000-01-01"));
         XMLStreamWriterUtils.write(writer, null, QName.create(parent, "identity"), parent);
         writer.writeEndElement();
 
index 5c3e49f797ca6cf4d09d6c121032ab7a413a6a54..d386d485a6d68a0226017c5e572de0ef8ce06c56 100644 (file)
@@ -6,7 +6,7 @@ module test {
 
     organization "Cisco Systems, Inc.";
 
-    revision "2014-3-13" {
+    revision "2014-03-13" {
         description
             "Initial revision";
     }
index d5def9cfba721fb78efba903114c344d96594411..0b108abd8c3b22b2649803660049d469bf2355f5 100644 (file)
@@ -6,7 +6,7 @@ module test {
 
     organization "Cisco Systems, Inc.";
 
-    revision "2014-3-13" {
+    revision "2014-03-13" {
         description
             "Initial revision";
     }
@@ -240,4 +240,4 @@ module test {
         base test-identity;
     }
 
-}
\ No newline at end of file
+}
index 3bbf32a2a815a832fef2c9f7b938a7c6e938325d..172ab3bd1e9a302278f4c2c8d8b6098474fca04f 100644 (file)
@@ -12,12 +12,12 @@ import static com.google.common.base.Preconditions.checkArgument;
 import com.google.common.collect.Lists;
 import java.net.URI;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 import java.util.Optional;
 import org.antlr.v4.runtime.tree.TerminalNode;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefPathParser.IdentifierContext;
 import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefPathParser.Node_identifierContext;
 import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefPathParser.Path_argContext;
@@ -175,7 +175,7 @@ final class LeafRefPathParserListenerImpl extends LeafRefPathParserBaseListener
         }
 
         final String moduleName = moduleImport.getModuleName();
-        final Optional<Date> revision = moduleImport.getRevision();
+        final Optional<Revision> revision = moduleImport.getRevision();
         return schemaContext.findModule(moduleName, revision).map(Module::getQNameModule);
     }
 
index f615f9cc63f49d313feb7f9699843f93703f7e3f..37c563709765f0f2a669bf3f31f811ed6d7e1ae4 100644 (file)
@@ -25,6 +25,7 @@ import java.util.Optional;
 import java.util.Set;
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
@@ -35,7 +36,6 @@ import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 import org.opendaylight.yangtools.yang.model.api.NotificationNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -60,7 +60,7 @@ public final class SchemaUtils {
         if (dataSchemaNode != null && qname != null) {
             for (final DataSchemaNode dsn : dataSchemaNode) {
                 if (qname.isEqualWithoutRevision(dsn.getQName())) {
-                    if (schema == null || ModuleIdentifier.compareRevisions(schema.getQName().getRevision(),
+                    if (schema == null || Revision.compare(schema.getQName().getRevision(),
                         dsn.getQName().getRevision()) < 0) {
                         schema = dsn;
                     }
index 471bc299545ef730862a49e4da4cd904fa8febd2..57065d701a9df7559cec33c6dcb0574631921a28 100644 (file)
@@ -25,7 +25,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -83,8 +83,7 @@ public class ImmutableNormalizedNodeStreamWriterTest {
 
     @Before
     public void setup() throws URISyntaxException, ParseException {
-        bazModule = QNameModule.create(new URI("baz-namespace"), SimpleDateFormatUtil.getRevisionFormat()
-            .parse("1970-01-01"));
+        bazModule = QNameModule.create(new URI("baz-namespace"), Revision.valueOf("1970-01-01"));
 
         outerContainer = QName.create(bazModule, "outer-container");
 
index 5c3e49f797ca6cf4d09d6c121032ab7a413a6a54..d386d485a6d68a0226017c5e572de0ef8ce06c56 100644 (file)
@@ -6,7 +6,7 @@ module test {
 
     organization "Cisco Systems, Inc.";
 
-    revision "2014-3-13" {
+    revision "2014-03-13" {
         description
             "Initial revision";
     }
index 29edc670e12f1cd027e6c5160bfdf2afd7d148d8..b39298eebd36dc80f22d75f59ee395c2f25ffce4 100644 (file)
@@ -6,7 +6,7 @@ module test {
 
     organization "Cisco Systems, Inc.";
 
-    revision "2014-3-13" {
+    revision "2014-03-13" {
         description
             "Initial revision";
     }
@@ -246,4 +246,4 @@ module test {
         base test-identity;
     }
 
-}
\ No newline at end of file
+}
index d1c61840f3d160d6cd8b56321578a13a730d54c8..9e369b427f074f13a05f93c2d958de21ac14a708 100644 (file)
@@ -31,7 +31,7 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -58,8 +58,7 @@ public class BitIsSetXPathFunctionTest {
     public static void setup() throws ParseException {
         jaxenSchemaContextFactory = new JaxenSchemaContextFactory();
 
-        fooModule = QNameModule.create(URI.create("foo-ns"),
-                SimpleDateFormatUtil.getRevisionFormat().parse("2017-04-03"));
+        fooModule = QNameModule.create(URI.create("foo-ns"), Revision.valueOf("2017-04-03"));
         myContainer = QName.create(fooModule, "my-container");
         myList = QName.create(fooModule, "my-list");
         flags = QName.create(fooModule, "flags");
index 4ec1e25a34b4f43d1f9541f19763e7dcbba85076..ac03f3ea223bdcc848bbbfd63786b0806dc30dde 100644 (file)
@@ -18,14 +18,13 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import java.net.URI;
-import java.text.ParseException;
 import java.util.Map;
 import org.jaxen.Function;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -62,11 +61,10 @@ public class DerefXPathFunctionTest {
     private static QName ordinaryLeafB;
 
     @BeforeClass
-    public static void setup() throws ParseException {
+    public static void setup() {
         jaxenSchemaContextFactory = new JaxenSchemaContextFactory();
 
-        fooModule = QNameModule.create(URI.create("foo-ns"),
-                SimpleDateFormatUtil.getRevisionFormat().parse("2017-04-03"));
+        fooModule = QNameModule.create(URI.create("foo-ns"), Revision.valueOf("2017-04-03"));
         myContainer = QName.create(fooModule, "my-container");
         myInnerContainer = QName.create(fooModule, "my-inner-container");
         myList = QName.create(fooModule, "my-list");
index 7598cc3cb2488376a505fe91d5685c149b42732d..1c0c1d5fb391b12bd4a33abe196c3e5aaaad5c51 100644 (file)
@@ -21,7 +21,6 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import java.net.URI;
-import java.text.ParseException;
 import org.jaxen.Context;
 import org.jaxen.Function;
 import org.jaxen.FunctionCallException;
@@ -29,7 +28,7 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -54,11 +53,10 @@ public class DerivedFromXPathFunctionTest {
     private static QName idC2Identity;
 
     @BeforeClass
-    public static void setup() throws ParseException {
+    public static void setup() {
         jaxenSchemaContextFactory = new JaxenSchemaContextFactory();
 
-        barModule = QNameModule.create(URI.create("bar-ns"),
-                SimpleDateFormatUtil.getRevisionFormat().parse("2017-04-03"));
+        barModule = QNameModule.create(URI.create("bar-ns"), Revision.valueOf("2017-04-03"));
         myContainer = QName.create(barModule, "my-container");
         myList = QName.create(barModule, "my-list");
         keyLeaf = QName.create(barModule, "key-leaf");
index 3a860d84b80e779bff864cb8eec510691ff54253..344c4c8cfc43aaac41d7859dcd960eba78d7cb78 100644 (file)
@@ -28,7 +28,7 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -55,8 +55,7 @@ public class EnumValueXPathFunctionTest {
     public static void setup() throws ParseException {
         jaxenSchemaContextFactory = new JaxenSchemaContextFactory();
 
-        fooModule = QNameModule.create(URI.create("foo-ns"),
-                SimpleDateFormatUtil.getRevisionFormat().parse("2017-04-03"));
+        fooModule = QNameModule.create(URI.create("foo-ns"), Revision.valueOf("2017-04-03"));
         myContainer = QName.create(fooModule, "my-container");
         alarm = QName.create(fooModule, "alarm");
         severity = QName.create(fooModule, "severity");
index cd85e70e49558d55d9314a4c8468fa8ceb160418..56e594235d93b26f266857fb23474e86266bed98 100644 (file)
@@ -37,7 +37,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.xpath.XPathDocument;
@@ -220,8 +220,7 @@ public class JaxenTest {
     }
 
     private void initQNames() throws URISyntaxException, ParseException {
-        this.moduleQName = QNameModule.create(new URI("urn:opendaylight.test2"),
-                SimpleDateFormatUtil.getRevisionFormat().parse("2015-08-08"));
+        this.moduleQName = QNameModule.create(new URI("urn:opendaylight.test2"), Revision.valueOf("2015-08-08"));
         this.rootQName = QName.create(moduleQName, "root");
         this.listAQName = QName.create(moduleQName, "list-a");
         this.listBQName = QName.create(moduleQName, "list-b");
index 3e08e5a32e5e01b9b7ae85a2a58bc3ced86366d4..e2372c2f1a40745d1cec3ad55b65b5ef5afd450a 100644 (file)
@@ -14,11 +14,11 @@ import java.util.ArrayList;
 import java.util.Deque;
 import java.util.List;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 
 public final class ParserStreamUtils {
 
@@ -47,7 +47,7 @@ public final class ParserStreamUtils {
                     final QName childQName = childNode.getQName();
 
                     if (childQName.getLocalName().equals(childName) && childQName.getNamespace().equals(namespace)) {
-                        if (potentialChildNode == null || ModuleIdentifier.compareRevisions(childQName.getRevision(),
+                        if (potentialChildNode == null || Revision.compare(childQName.getRevision(),
                             potentialChildNode.getQName().getRevision()) > 0) {
                             potentialChildNode = childNode;
                         }
index 4d97b4246293839686268be638656635f8d2d2fb..a01d7dd004aeb2850e0bf46d648afcd83805ddfe 100644 (file)
@@ -12,7 +12,7 @@ module test {
 
     organization "Cisco Systems, Inc.";
 
-    revision "2014-3-13" {
+    revision "2014-03-13" {
         description
             "Initial revision";
     }
@@ -22,4 +22,4 @@ module test {
             type string;
         }
     }
-}
\ No newline at end of file
+}
index f2c05c94e4df2cdb10219bb7c2aa8f3b5fafe8dc..913cca809ddc7f227699e38e7db9e0abace06652 100644 (file)
@@ -12,7 +12,7 @@ module test2 {
 
     organization "Cisco Systems, Inc.";
 
-    revision "2014-3-13" {
+    revision "2014-03-13" {
         description
             "Initial revision";
     }
@@ -22,4 +22,4 @@ module test2 {
             type string;
         }
     }
-}
\ No newline at end of file
+}
index c5b33ae879b356bb47ce71ab31de80852b49818a..83347c5e9fe5df7376a83229ea70d3a809cfb3bb 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.model.api;
 
 import java.net.URI;
-import java.util.Date;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
@@ -16,6 +15,7 @@ import javax.annotation.Nonnull;
 import javax.annotation.concurrent.Immutable;
 import org.opendaylight.yangtools.concepts.SemVer;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 
 /**
@@ -102,8 +102,7 @@ public interface Module extends DataNodeContainer, NotificationNodeContainer {
      *         YANG {@link Module <b><font color="#339900">revison</font></b>}
      *         keyword
      */
-    // FIXME: BUG-4688: should return Optional<Revision>
-    default Optional<Date> getRevision() {
+    default Optional<Revision> getRevision() {
         return getQNameModule().getRevision();
     }
 
index 67eed3ad303712eadb276cf7270ab9fb77988a6b..e31e1dfadbfd90289f1628aa15f0e2c2bab494f5 100644 (file)
@@ -7,8 +7,8 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
-import java.util.Date;
 import java.util.Optional;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 
 /**
@@ -34,13 +34,5 @@ public interface ModuleIdentifier {
      *         YANG {@link Module <b><font color="#339900">revison</font></b>}
      *         keyword
      */
-    // FIXME: BUG-4688: should return Optional<Revision>
-    Optional<Date> getRevision();
-
-    static int compareRevisions(final Optional<Date> first, final Optional<Date> second) {
-        if (!first.isPresent()) {
-            return second.isPresent() ? -1 : 0;
-        }
-        return second.isPresent() ? first.get().compareTo(second.get()) : 1;
-    }
+    Optional<Revision> getRevision();
 }
index dbad2094793d54d011783e798b4cc0578f06c3bf..b317038e2ee4f659c07b1ecafa1dd021708db232 100644 (file)
@@ -7,9 +7,9 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
-import java.util.Date;
 import java.util.Optional;
 import org.opendaylight.yangtools.concepts.SemVer;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 /**
  * Interface describing YANG 'import' statement.
@@ -30,7 +30,7 @@ public interface ModuleImport extends DocumentedNode {
      *
      * @return Revision of module to import
      */
-    Optional<Date> getRevision();
+    Optional<Revision> getRevision();
 
     /**
      * Returns the semantic version to import.
index 479720620b3dcbadbdf5f63ab0452fd49740b53a..7e905f5170775057ef154fd485d08440d5e52649 100644 (file)
@@ -8,11 +8,12 @@
 package org.opendaylight.yangtools.yang.model.api;
 
 import java.net.URI;
-import java.util.Date;
+import java.util.Optional;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 public interface NamespaceRevisionAware {
 
     URI getNamespace();
 
-    Date getRevision();
+    Optional<Revision> getRevision();
 }
index 2063a799d350bb3f8ced551d68637cdf6ed1efcd..ea57bbf70952f20a6fcf9b1151e7d1992b6f6462 100644 (file)
@@ -9,13 +9,13 @@ package org.opendaylight.yangtools.yang.model.api;
 
 import com.google.common.collect.Sets;
 import java.net.URI;
-import java.util.Date;
 import java.util.Optional;
 import java.util.Set;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 /**
  * The interface represents static view of compiled yang files,
@@ -72,11 +72,11 @@ public interface SchemaContext extends ContainerSchemaNode {
      * @param name
      *            string with the module name
      * @param revision
-     *            date of the module revision, may be null
+     *            date of the module revision
      * @return module instance which has name and revision the same as are the values specified in parameters
      *         <code>name</code> and <code>revision</code>.
      */
-    Optional<Module> findModule(String name, @Nullable Date revision);
+    Optional<Module> findModule(String name, Optional<Revision> revision);
 
     /**
      * Returns module instance (from the context) with concrete name and revision date.
@@ -100,15 +100,19 @@ public interface SchemaContext extends ContainerSchemaNode {
      * @return module instance which has name and revision the same as are the values specified in parameters
      *         <code>name</code> and <code>revision</code>.
      */
-    default Optional<Module> findModule(final String name, final Optional<Date> revision) {
-        return findModule(name, revision.orElse(null));
+    default Optional<Module> findModule(final String name, @Nullable final Revision revision) {
+        return findModule(name, Optional.ofNullable(revision));
     }
 
     default Optional<Module> findModule(final URI namespace) {
         return findModule(QNameModule.create(namespace));
     }
 
-    default Optional<Module> findModule(final URI namespace, @Nullable final Date revision) {
+    default Optional<Module> findModule(final URI namespace, @Nullable final Revision revision) {
+        return findModule(QNameModule.create(namespace, revision));
+    }
+
+    default Optional<Module> findModule(final URI namespace, final Optional<Revision> revision) {
         return findModule(QNameModule.create(namespace, revision));
     }
 
index 1b91cb642a23d6e03f0849e6478d547c33719604..057f7b4750565f5bd32446cf5386ffa94e121d52 100644 (file)
@@ -7,12 +7,11 @@
  */
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
-import java.util.Date;
-
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 
-public interface RevisionDateStatement extends DeclaredStatement<Date> {
+public interface RevisionDateStatement extends DeclaredStatement<Revision> {
 
-    Date getDate();
+    Revision getDate();
 }
 
index dbc9b98f275d174103c0a140bc01c67fc03c2feb..017ad49b5c9b25ab621a10fa4a45428721d11e97 100644 (file)
@@ -7,11 +7,11 @@
  */
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
-import java.util.Date;
 import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 
-public interface RevisionStatement extends DeclaredStatement<Date>, DocumentationGroup {
+public interface RevisionStatement extends DeclaredStatement<Revision>, DocumentationGroup {
 
-    @Nonnull Date getDate();
+    @Nonnull Revision getDate();
 }
index cee0cf18923a949158ae6d83c840c1a76ea2f242..a9010814479663891ef13c0251e6685082386cb6 100644 (file)
@@ -17,7 +17,6 @@ import com.google.common.collect.RangeSet;
 import com.google.common.primitives.UnsignedInteger;
 import java.net.URI;
 import java.util.Collection;
-import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -29,6 +28,7 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.NotThreadSafe;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
 import org.opendaylight.yangtools.yang.model.api.AnyDataSchemaNode;
@@ -1349,7 +1349,7 @@ abstract class SchemaContextEmitter {
             }
         }
 
-        private void emitRevision(final Date date) {
+        private void emitRevision(final Revision date) {
             if (date != null) {
                 super.writer.startRevisionNode(date);
 
@@ -1361,7 +1361,7 @@ abstract class SchemaContextEmitter {
             }
         }
 
-        private void emitRevisionDateNode(final Date date) {
+        private void emitRevisionDateNode(final Revision date) {
             super.writer.startRevisionDateNode(date);
             super.writer.endNode();
         }
index bbbdc9e4c5b360b898b8e06fc771ab7cc530893e..f86f9e99a91f946990a66511b0e7303d8bb6170a 100644 (file)
@@ -13,12 +13,11 @@ import com.google.common.collect.Iterables;
 import com.google.common.primitives.UnsignedInteger;
 import java.net.URI;
 import java.util.Collection;
-import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import javax.annotation.concurrent.NotThreadSafe;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.Status;
@@ -228,9 +227,9 @@ final class SchemaToStatementWriterAdaptor implements YangModuleWriter {
     }
 
     @Override
-    public void startRevisionNode(final Date date) {
+    public void startRevisionNode(final Revision date) {
         writer.startStatement(YangStmtMapping.REVISION);
-        writer.writeArgument(SimpleDateFormatUtil.getRevisionFormat().format(date));
+        writer.writeArgument(date.toString());
     }
 
     @Override
@@ -306,9 +305,9 @@ final class SchemaToStatementWriterAdaptor implements YangModuleWriter {
     }
 
     @Override
-    public void startRevisionDateNode(final Date date) {
+    public void startRevisionDateNode(final Revision date) {
         writer.startStatement(YangStmtMapping.REVISION_DATE);
-        writer.writeArgument(SimpleDateFormatUtil.getRevisionFormat().format(date));
+        writer.writeArgument(date.toString());
     }
 
     @Override
index c6b66ae9d1a2dd2db5df04e2d775d36d2cab1a1c..0b4baccce1bd241094ffcdef641fe664183b058b 100644 (file)
@@ -9,9 +9,9 @@ package org.opendaylight.yangtools.yang.model.export;
 
 import com.google.common.primitives.UnsignedInteger;
 import java.net.URI;
-import java.util.Date;
 import java.util.List;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.Status;
@@ -79,7 +79,7 @@ interface YangModuleWriter {
 
     void startTypedefNode(QName qName);
 
-    void startRevisionNode(Date date);
+    void startRevisionNode(Revision date);
 
     void startDefaultNode(String string);
 
@@ -105,7 +105,7 @@ interface YangModuleWriter {
 
     void startReferenceNode(String input);
 
-    void startRevisionDateNode(Date date);
+    void startRevisionDateNode(Revision date);
 
     void startImportNode(String moduleName);
 
index ec9b723c0a2548f59360d0d9b05cb6c5b34c0c4a..510fdab8337349a059362463e92c2d8189f988e6 100644 (file)
@@ -12,13 +12,12 @@ import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
 import java.io.OutputStream;
 import java.net.URI;
-import java.util.Date;
 import java.util.Map;
 import java.util.Optional;
 import javax.xml.stream.XMLOutputFactory;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
@@ -40,9 +39,8 @@ public final class YinExportUtils {
      *            Revision of module or submodule
      * @return well-formed file name of YIN file as defined in RFC6020.
      */
-    public static String wellFormedYinName(final String name, final Optional<Date> revision) {
-        return !revision.isPresent() ? wellFormedYinName(name, (String) null) :
-            wellFormedYinName(name, SimpleDateFormatUtil.getRevisionFormat().format(revision.get()));
+    public static String wellFormedYinName(final String name, final Optional<Revision> revision) {
+        return wellFormedYinName(name, revision.map(Revision::toString).orElse(null));
     }
 
     /**
index 9df4db341a29672ddbfe0b2c0e8f9b44f32a9088..67386e88687d1b6756aa4ed097f2f10f6b8d5744 100644 (file)
@@ -16,7 +16,7 @@ import java.io.BufferedOutputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.OutputStream;
 import org.junit.Test;
-import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.export.YinExportUtils;
@@ -33,7 +33,7 @@ public class Bug6856Test {
         final OutputStream byteArrayOutputStream = new ByteArrayOutputStream();
         final BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(byteArrayOutputStream);
 
-        final Module fooModule = schemaContext.findModule("foo", QName.parseRevision("2017-02-28")).get();
+        final Module fooModule = schemaContext.findModule("foo", Revision.valueOf("2017-02-28")).get();
         YinExportUtils.writeModuleToOutputStream(schemaContext, fooModule, bufferedOutputStream);
 
         final String output = byteArrayOutputStream.toString();
@@ -53,7 +53,7 @@ public class Bug6856Test {
         final OutputStream byteArrayOutputStream = new ByteArrayOutputStream();
         final BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(byteArrayOutputStream);
 
-        final Module barModule = schemaContext.findModule("bar", QName.parseRevision("2017-02-28")).get();
+        final Module barModule = schemaContext.findModule("bar", Revision.valueOf("2017-02-28")).get();
         YinExportUtils.writeModuleToOutputStream(schemaContext, barModule, bufferedOutputStream);
 
         final String output = byteArrayOutputStream.toString();
index 0f13c4e3873d8abf0a48e9f5b73d423e85fa4452..a93706ce4ca1cfcebe7349306f6ce73fbfed41be 100644 (file)
@@ -11,7 +11,6 @@ import com.google.common.base.Preconditions;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.StringWriter;
-import java.util.Date;
 import java.util.Optional;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
@@ -21,7 +20,7 @@ import javax.xml.transform.TransformerFactoryConfigurationError;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 import org.opendaylight.yangtools.util.xml.UntrustedXML;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.w3c.dom.Document;
@@ -35,9 +34,8 @@ public class YinExportTestUtils {
     }
 
     public static Document loadDocument(final String prefix, final Module module) throws IOException, SAXException {
-        final Optional<Date> rev = module.getRevision();
-        final String fileName = !rev.isPresent() ? module.getName()
-                : module.getName() + '@' + SimpleDateFormatUtil.getRevisionFormat().format(rev.get());
+        final Optional<Revision> rev = module.getRevision();
+        final String fileName = !rev.isPresent() ? module.getName() : module.getName() + '@' + rev.get().toString();
         return loadDocument(prefix + '/' + fileName + YangConstants.RFC6020_YIN_FILE_EXTENSION);
     }
 
index 33cb1426da847f4deabe138ee79f9dcd0b23922d..70761e479697d611a0699885ecc55ebf4dac9c7f 100644 (file)
@@ -7,9 +7,9 @@
  */
 package org.opendaylight.yangtools.yang.model.immutable;
 
-import java.util.Date;
 import java.util.Optional;
 import org.immutables.value.Value;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
@@ -17,7 +17,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 abstract class AbstractSchemaContext extends CommonContainerSchemaNode implements SchemaContext {
 
     @Override
-    public Optional<Module> findModule(final String name, final Date revision) {
+    public Optional<Module> findModule(final String name, final Optional<Revision> revision) {
         throw new UnsupportedOperationException("Not implemented");
     }
 }
index eeb6faa0c92d642c13f6b98bb952483c9d9b29a7..7202af3b5229d35df5d51d1837bc6f4c2cf073ea 100644 (file)
@@ -13,23 +13,21 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
-import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
 import java.util.TreeSet;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -40,9 +38,8 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.UsesNode;
 
 public abstract class AbstractSchemaContext implements SchemaContext {
-    protected static final Comparator<Module> REVISION_COMPARATOR = (first, second) -> {
-        return ModuleIdentifier.compareRevisions(first.getRevision(), second.getRevision());
-    };
+    protected static final Comparator<Module> REVISION_COMPARATOR =
+        (first, second) -> Revision.compare(first.getRevision(), second.getRevision());
 
     protected static final TreeSet<Module> createModuleSet() {
         return new TreeSet<>(REVISION_COMPARATOR);
@@ -100,9 +97,9 @@ public abstract class AbstractSchemaContext implements SchemaContext {
 
 
     @Override
-    public Optional<Module> findModule(final String name, final Date revision) {
+    public Optional<Module> findModule(final String name, final Optional<Revision> revision) {
         for (final Module module : getNameToModules().get(name)) {
-            if (Objects.equals(revision, module.getRevision().orElse(null))) {
+            if (revision.equals(module.getRevision())) {
                 return Optional.of(module);
             }
         }
index feaa194c29409315dc57e9e25766db1f0a0239b1..f51462b354d8273af0c1fe4794daae6932fb81d4 100644 (file)
@@ -23,7 +23,6 @@ import com.google.common.collect.TreeMultimap;
 import java.net.URI;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -31,6 +30,7 @@ import java.util.Set;
 import java.util.TreeMap;
 import java.util.function.Function;
 import javax.annotation.concurrent.Immutable;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
@@ -126,7 +126,7 @@ public final class FilteringSchemaContextProxy extends AbstractSchemaContext {
 
         for (Module module : baseModules) {
             for (ModuleImport moduleImport : module.getImports()) {
-                Optional<Date> revisionDate = moduleImport.getRevision();
+                Optional<Revision> revisionDate = moduleImport.getRevision();
                 if (!revisionDate.isPresent()) {
                     revisionDate = nameToModulesAll.get(moduleImport.getModuleName()).last().getRevision();
                 }
@@ -206,9 +206,9 @@ public final class FilteringSchemaContextProxy extends AbstractSchemaContext {
 
     public static final class ModuleId {
         private final String name;
-        private final Date rev;
+        private final Revision rev;
 
-        public ModuleId(final String name, final Optional<Date> rev) {
+        public ModuleId(final String name, final Optional<Revision> rev) {
             Preconditions.checkArgument(!Strings.isNullOrEmpty(name),
                     "No module dependency name given. Nothing to do.");
             this.name = name;
@@ -220,7 +220,7 @@ public final class FilteringSchemaContextProxy extends AbstractSchemaContext {
             return name;
         }
 
-        public Optional<Date> getRev() {
+        public Optional<Revision> getRev() {
             return Optional.ofNullable(rev);
         }
 
index 40f8eddf3ef004358a1769a2ee3c7c4d400c6780..1306b59b9aad383025bafe9e5b8b9b098a43e7a3 100644 (file)
@@ -13,7 +13,6 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Table;
 import java.net.URI;
 import java.util.Collection;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -23,7 +22,7 @@ import java.util.Optional;
 import org.opendaylight.yangtools.util.TopologicalSort;
 import org.opendaylight.yangtools.util.TopologicalSort.Node;
 import org.opendaylight.yangtools.util.TopologicalSort.NodeImpl;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
@@ -75,12 +74,13 @@ public final class ModuleDependencySort {
     }
 
     private static List<Node> sortInternal(final Iterable<Module> modules) {
-        final Table<String, Optional<Date>, ModuleNodeImpl> moduleGraph = createModuleGraph(modules);
+        final Table<String, Optional<Revision>, ModuleNodeImpl> moduleGraph = createModuleGraph(modules);
         return TopologicalSort.sort(new HashSet<>(moduleGraph.values()));
     }
 
-    private static Table<String, Optional<Date>, ModuleNodeImpl> createModuleGraph(final Iterable<Module> builders) {
-        final Table<String, Optional<Date>, ModuleNodeImpl> moduleGraph = HashBasedTable.create();
+    private static Table<String, Optional<Revision>, ModuleNodeImpl> createModuleGraph(
+            final Iterable<Module> builders) {
+        final Table<String, Optional<Revision>, ModuleNodeImpl> moduleGraph = HashBasedTable.create();
 
         processModules(moduleGraph, builders);
         processDependencies(moduleGraph, builders);
@@ -91,16 +91,16 @@ public final class ModuleDependencySort {
     /**
      * Extract module:revision from modules.
      */
-    private static void processDependencies(final Table<String, Optional<Date>, ModuleNodeImpl> moduleGraph,
+    private static void processDependencies(final Table<String, Optional<Revision>, ModuleNodeImpl> moduleGraph,
             final Iterable<Module> mmbs) {
         final Map<URI, Module> allNS = new HashMap<>();
 
         // Create edges in graph
         for (final Module module : mmbs) {
-            final Map<String, Optional<Date>> imported = new HashMap<>();
+            final Map<String, Optional<Revision>> imported = new HashMap<>();
             final String fromName = module.getName();
             final URI ns = module.getNamespace();
-            final Optional<Date> fromRevision = module.getRevision();
+            final Optional<Revision> fromRevision = module.getRevision();
 
             // check for existence of module with same namespace
             final Module prev = allNS.putIfAbsent(ns, module);
@@ -115,7 +115,7 @@ public final class ModuleDependencySort {
             // no need to check if other Type of object, check is performed in process modules
             for (final ModuleImport imprt : module.getImports()) {
                 final String toName = imprt.getModuleName();
-                final Optional<Date> toRevision = imprt.getRevision();
+                final Optional<Revision> toRevision = imprt.getRevision();
 
                 final ModuleNodeImpl from = moduleGraph.get(fromName, fromRevision);
                 final ModuleNodeImpl to = getModuleByNameAndRevision(moduleGraph, fromName, fromRevision, toName,
@@ -126,7 +126,7 @@ public final class ModuleDependencySort {
                  * revisions then throw exception
                  */
                 if (module.getYangVersion() == YangVersion.VERSION_1) {
-                    final Optional<Date> impRevision = imported.get(toName);
+                    final Optional<Revision> impRevision = imported.get(toName);
                     if (impRevision != null && impRevision.isPresent() && !impRevision.equals(toRevision)
                             && toRevision.isPresent()) {
                         throw new IllegalArgumentException(String.format(
@@ -146,8 +146,8 @@ public final class ModuleDependencySort {
      * Get imported module by its name and revision from moduleGraph.
      */
     private static ModuleNodeImpl getModuleByNameAndRevision(
-            final Table<String, Optional<Date>, ModuleNodeImpl> moduleGraph, final String fromName,
-            final Optional<Date> fromRevision, final String toName, final Optional<Date> toRevision) {
+            final Table<String, Optional<Revision>, ModuleNodeImpl> moduleGraph, final String fromName,
+            final Optional<Revision> fromRevision, final String toName, final Optional<Revision> toRevision) {
 
         final ModuleNodeImpl exact = moduleGraph.get(toName, toRevision);
         if (exact != null) {
@@ -156,7 +156,7 @@ public final class ModuleDependencySort {
 
         // If revision is not specified in import, but module exists with different revisions, take first one
         if (toRevision == null) {
-            final Map<Optional<Date>, ModuleNodeImpl> modulerevs = moduleGraph.row(toName);
+            final Map<Optional<Revision>, ModuleNodeImpl> modulerevs = moduleGraph.row(toName);
 
             if (!modulerevs.isEmpty()) {
                 final ModuleNodeImpl first = modulerevs.values().iterator().next();
@@ -179,15 +179,15 @@ public final class ModuleDependencySort {
     /**
      * Extract dependencies from modules to fill dependency graph.
      */
-    private static void processModules(final Table<String, Optional<Date>, ModuleNodeImpl> moduleGraph,
+    private static void processModules(final Table<String, Optional<Revision>, ModuleNodeImpl> moduleGraph,
             final Iterable<Module> modules) {
 
         // Process nodes
         for (final Module momb : modules) {
 
             final String name = momb.getName();
-            final Optional<Date> rev = momb.getRevision();
-            final Map<Optional<Date>, ModuleNodeImpl> revs = moduleGraph.row(name);
+            final Optional<Revision> rev = momb.getRevision();
+            final Map<Optional<Revision>, ModuleNodeImpl> revs = moduleGraph.row(name);
             if (revs.containsKey(rev)) {
                 throw new IllegalArgumentException(String.format("Module:%s with revision:%s declared twice", name,
                     formatRevDate(rev)));
@@ -197,16 +197,16 @@ public final class ModuleDependencySort {
         }
     }
 
-    private static String formatRevDate(final Optional<Date> rev) {
-        return rev.map(revision -> SimpleDateFormatUtil.getRevisionFormat().format(revision)).orElse("default");
+    private static String formatRevDate(final Optional<Revision> rev) {
+        return rev.map(Revision::toString).orElse("default");
     }
 
     private static final class ModuleNodeImpl extends NodeImpl {
         private final String name;
-        private final Date revision;
+        private final Revision revision;
         private final Module originalObject;
 
-        ModuleNodeImpl(final String name, final Date revision, final Module module) {
+        ModuleNodeImpl(final String name, final Revision revision, final Module module) {
             this.name = name;
             this.revision = revision;
             this.originalObject = module;
@@ -216,7 +216,7 @@ public final class ModuleDependencySort {
             return name;
         }
 
-        Optional<Date> getRevision() {
+        Optional<Revision> getRevision() {
             return Optional.ofNullable(revision);
         }
 
index 7b951c81404ed86c614ec976d35b7cb374301974..1f8b375c7e75b12b87b18d36f45b4fe9cc43729c 100644 (file)
@@ -10,8 +10,8 @@ package org.opendaylight.yangtools.yang.model.util;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 import com.google.common.annotations.Beta;
-import java.util.Date;
 import java.util.Optional;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 
 /**
@@ -24,20 +24,20 @@ import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 @Deprecated
 @Beta
 public final class ModuleIdentifierImpl implements ModuleIdentifier {
-    private final Date revision;
+    private final Revision revision;
     private final String name;
 
-    private ModuleIdentifierImpl(final String name, final Optional<Date> revision) {
+    private ModuleIdentifierImpl(final String name, final Optional<Revision> revision) {
         this.name = checkNotNull(name);
         this.revision = revision.orElse(null);
     }
 
-    public static ModuleIdentifier create(final String name, final Optional<Date> revision) {
+    public static ModuleIdentifier create(final String name, final Optional<Revision> revision) {
         return new ModuleIdentifierImpl(name, revision);
     }
 
     @Override
-    public Optional<Date> getRevision() {
+    public Optional<Revision> getRevision() {
         return Optional.ofNullable(revision);
     }
 
index 143e8de408fa1ea232df9144449a1796e4d11544..497508074bd309c796ba24f3562a71636e1d2379 100644 (file)
@@ -17,7 +17,6 @@ import com.google.common.collect.ImmutableSet;
 import java.net.URI;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
@@ -26,6 +25,7 @@ import org.junit.Test;
 import org.opendaylight.yangtools.concepts.SemVer;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
@@ -42,8 +42,8 @@ import org.opendaylight.yangtools.yang.model.util.FilteringSchemaContextProxy.Mo
 public class SchemaContextProxyTest {
 
     private static final URI NAMESPACE = URI.create("urn:opendaylight:params:xml:ns:yang:controller:config");
-    private static final Date REVISION = QName.parseRevision("2015-01-01");
-    private static final Date REVISION2 = QName.parseRevision("2015-01-15");
+    private static final Revision REVISION = Revision.valueOf("2015-01-01");
+    private static final Revision REVISION2 = Revision.valueOf("2015-01-15");
 
     private static final String CONFIG_NAME = "config";
     private static final String ROOT_NAME = "root";
@@ -134,10 +134,10 @@ public class SchemaContextProxyTest {
      */
     @Test
     public void testBasicNullRevision() throws Exception {
-        final Module moduleConfig = mockModule(CONFIG_NAME, QName.parseRevision("2013-04-05"));
-        final Module module2 = mockModule(MODULE2_NAME, QName.parseRevision("2014-06-17"));
+        final Module moduleConfig = mockModule(CONFIG_NAME, Revision.valueOf("2013-04-05"));
+        final Module module2 = mockModule(MODULE2_NAME, Revision.valueOf("2014-06-17"));
         final Module module20 = mockModule(MODULE2_NAME, null);
-        final Module module3 = mockModule(MODULE3_NAME, QName.parseRevision("2014-06-12"));
+        final Module module3 = mockModule(MODULE3_NAME, Revision.valueOf("2014-06-12"));
         final Module module30 = mockModule(MODULE3_NAME, null);
 
         mockModuleImport(module20, moduleConfig);
@@ -283,7 +283,7 @@ public class SchemaContextProxyTest {
         Module moduleConfig = mockModule(CONFIG_NAME);
         Module module2 = mockModule(MODULE2_NAME);
         Module module3 = mockModule(MODULE3_NAME);
-        Module module4 = mockModule(MODULE3_NAME, QName.parseRevision("2015-10-10"));
+        Module module4 = mockModule(MODULE3_NAME, Revision.valueOf("2015-10-10"));
 
         mockModuleImport(module2, moduleConfig);
         mockModuleImport(module3, module2, moduleConfig);
@@ -593,7 +593,7 @@ public class SchemaContextProxyTest {
                 }
 
                 @Override
-                public Optional<Date> getRevision() {
+                public Optional<Revision> getRevision() {
                     return module.getRevision();
                 }
 
@@ -617,7 +617,7 @@ public class SchemaContextProxyTest {
     }
 
     //mock module with revision
-    private static Module mockModule(final String name, final Date rev) {
+    private static Module mockModule(final String name, final Revision rev) {
 
         final Module mod = mockModule(name);
 
index 0310c2bce6fde2fed6f58167ae1b2ec221d85685..ee31351087f44dcb29a9f010a9575fd7ce19188f 100644 (file)
@@ -13,9 +13,9 @@ import static org.junit.Assert.assertFalse;
 
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.Date;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.Status;
 
@@ -32,12 +32,12 @@ public class BitImplTest {
         final URI uriB1 = new URI("some:uriB1");
         final URI uriB2 = new URI("some:uriB2");
 
-        QName qnameA1 = QName.create(uriA1, new Date(6000000), "some nameA1");
-        QName qnameA2 = QName.create(uriA2, new Date(7000000), "some nameA2");
+        QName qnameA1 = QName.create(uriA1, Revision.valueOf("2000-01-01"), "some nameA1");
+        QName qnameA2 = QName.create(uriA2, Revision.valueOf("2002-01-01"), "some nameA2");
         SchemaPath schemaPathA = SchemaPath.create(true, qnameA1, qnameA2);
 
-        final QName qnameB1 = QName.create(uriB1, new Date(6000000), "some nameB1");
-        final QName qnameB2 = QName.create(uriB2, new Date(7000000), "some nameB2");
+        final QName qnameB1 = QName.create(uriB1, Revision.valueOf("2000-01-01"), "some nameB1");
+        final QName qnameB2 = QName.create(uriB2, Revision.valueOf("2002-01-01"), "some nameB2");
         final SchemaPath schemaPathB = SchemaPath.create(true, qnameB1, qnameB2);
 
         BitImpl biA = new BitImpl(schemaPathA, 55L, "description", "reference", Status.CURRENT, emptyList());
index 37c3e1f8032a160435ddc9fb63821a1f00bb1eef..6b1abbc91158fe1089f5681c6c2a00e166a4196d 100644 (file)
@@ -13,7 +13,6 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableSet;
 import java.io.IOException;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.Objects;
 import java.util.Optional;
@@ -23,6 +22,7 @@ import org.antlr.v4.runtime.ParserRuleContext;
 import org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser.StatementContext;
 import org.opendaylight.yangtools.concepts.SemVer;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
@@ -61,7 +61,7 @@ public abstract class YangModelDependencyInfo {
 
     private final String name;
     private final String formattedRevision;
-    private final Date revision;
+    private final Revision revision;
     private final Optional<SemVer> semVer;
     private final ImmutableSet<ModuleImport> submoduleIncludes;
     private final ImmutableSet<ModuleImport> moduleImports;
@@ -79,8 +79,7 @@ public abstract class YangModelDependencyInfo {
             final Optional<SemVer> semVer) {
         this.name = name;
         this.formattedRevision = formattedRevision;
-        this.revision = formattedRevision == null ? null : QName
-                .parseRevision(formattedRevision);
+        this.revision = formattedRevision == null ? null : Revision.valueOf(formattedRevision);
         this.moduleImports = imports;
         this.submoduleIncludes = includes;
         this.dependencies = ImmutableSet.<ModuleImport>builder()
@@ -121,7 +120,7 @@ public abstract class YangModelDependencyInfo {
      *
      * @return revision
      */
-    Date getRevision() {
+    Revision getRevision() {
         return revision;
     }
 
@@ -240,7 +239,7 @@ public abstract class YangModelDependencyInfo {
                 final String revisionDateStr = getRevisionDateString(subStatementContext, sourceName);
                 final String importedModuleName = Utils.stringFromStringContext(subStatementContext.argument(),
                         getReference(sourceName, subStatementContext));
-                final Date revisionDate = revisionDateStr == null ? null : QName.parseRevision(revisionDateStr);
+                final Revision revisionDate = revisionDateStr == null ? null : Revision.valueOf(revisionDateStr);
                 final SemVer importSemVer = findSemanticVersion(subStatementContext, sourceName);
                 result.add(new ModuleImportImpl(importedModuleName, revisionDate, importSemVer));
             }
@@ -269,7 +268,7 @@ public abstract class YangModelDependencyInfo {
                 final String revisionDateStr = getRevisionDateString(subStatementContext, sourceName);
                 final String IncludeModuleName = Utils.stringFromStringContext(subStatementContext.argument(),
                         getReference(sourceName, subStatementContext));
-                final Date revisionDate = revisionDateStr == null ? null : QName.parseRevision(revisionDateStr);
+                final Revision revisionDate = revisionDateStr == null ? null : Revision.valueOf(revisionDateStr);
                 result.add(new ModuleImportImpl(IncludeModuleName, revisionDate));
             }
         }
@@ -386,15 +385,15 @@ public abstract class YangModelDependencyInfo {
      */
     private static final class ModuleImportImpl implements ModuleImport {
 
-        private final Date revision;
+        private final Revision revision;
         private final SemVer semVer;
         private final String name;
 
-        ModuleImportImpl(final String moduleName, final Date revision) {
+        ModuleImportImpl(final String moduleName, final Revision revision) {
             this(moduleName, revision, null);
         }
 
-        ModuleImportImpl(final String moduleName, @Nullable final Date revision, @Nullable final SemVer semVer) {
+        ModuleImportImpl(final String moduleName, @Nullable final Revision revision, @Nullable final SemVer semVer) {
             this.name = requireNonNull(moduleName, "Module name must not be null.");
             this.revision = revision;
             this.semVer = semVer;
@@ -406,7 +405,7 @@ public abstract class YangModelDependencyInfo {
         }
 
         @Override
-        public Optional<Date> getRevision() {
+        public Optional<Revision> getRevision() {
             return Optional.ofNullable(revision);
         }
 
index f208bcdc9850431e91dc97491dbf7675328fe5f2..f1edb2d920cfa92cd2b753d5393f5efe56597422 100644 (file)
@@ -14,7 +14,6 @@ import com.google.common.collect.ImmutableMultimap;
 import com.google.common.collect.Multimap;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -22,6 +21,7 @@ import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.Set;
 import org.opendaylight.yangtools.concepts.SemVer;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.parser.impl.util.YangModelDependencyInfo;
@@ -162,7 +162,7 @@ abstract class DependencyResolver {
         }
 
         @Override
-        public Optional<Date> getRevision() {
+        public Optional<Revision> getRevision() {
             return Optional.empty();
         }
 
index 6fc3c3c034fcadb80a804aae00072b95e4692d23..ed7850df7aa34e3b08affe7a9453e97081134194 100644 (file)
@@ -17,7 +17,6 @@ import com.google.common.collect.Table;
 import com.google.common.collect.TreeBasedTable;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -32,6 +31,7 @@ import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.util.RecursiveObjectLeaker;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
@@ -421,8 +421,8 @@ class BuildGlobalContext extends NamespaceStorageSupport implements Registry {
         Preconditions.checkState(currentPhase == ModelProcessingPhase.SOURCE_PRE_LINKAGE,
                 "Required library sources can be collected only in ModelProcessingPhase.SOURCE_PRE_LINKAGE phase,"
                         + " but current phase was %s", currentPhase);
-        final TreeBasedTable<String, Optional<Date>, SourceSpecificContext> libSourcesTable = TreeBasedTable.create(
-            String::compareTo, ModuleIdentifier::compareRevisions);
+        final TreeBasedTable<String, Optional<Revision>, SourceSpecificContext> libSourcesTable = TreeBasedTable.create(
+            String::compareTo, Revision::compare);
         for (final SourceSpecificContext libSource : libSources) {
             final ModuleIdentifier libSourceIdentifier = Preconditions.checkNotNull(libSource.getRootIdentifier());
             libSourcesTable.put(libSourceIdentifier.getName(), libSourceIdentifier.getRevision(), libSource);
@@ -437,7 +437,7 @@ class BuildGlobalContext extends NamespaceStorageSupport implements Registry {
     }
 
     private void collectRequiredSourcesFromLib(
-            final TreeBasedTable<String, Optional<Date>, SourceSpecificContext> libSourcesTable,
+            final TreeBasedTable<String, Optional<Revision>, SourceSpecificContext> libSourcesTable,
             final Set<SourceSpecificContext> requiredLibs, final SourceSpecificContext source) {
         for (final SourceIdentifier requiredSource : source.getRequiredSources()) {
             final SourceSpecificContext libSource = getRequiredLibSource(requiredSource, libSourcesTable);
@@ -448,13 +448,13 @@ class BuildGlobalContext extends NamespaceStorageSupport implements Registry {
     }
 
     private static SourceSpecificContext getRequiredLibSource(final SourceIdentifier requiredSource,
-            final TreeBasedTable<String, Optional<Date>, SourceSpecificContext> libSourcesTable) {
+            final TreeBasedTable<String, Optional<Revision>, SourceSpecificContext> libSourcesTable) {
         return requiredSource.getRevision() == null ? getLatestRevision(libSourcesTable.row(requiredSource.getName()))
                 : libSourcesTable.get(requiredSource.getName(),
-                    Optional.of(QName.parseRevision(requiredSource.getRevision())));
+                    Optional.of(Revision.valueOf(requiredSource.getRevision())));
     }
 
-    private static SourceSpecificContext getLatestRevision(final SortedMap<Optional<Date>,
+    private static SourceSpecificContext getLatestRevision(final SortedMap<Optional<Revision>,
             SourceSpecificContext> sourceMap) {
         return sourceMap != null && !sourceMap.isEmpty() ? sourceMap.get(sourceMap.lastKey()) : null;
     }
index 6d248e212e1db8e9271a2266410aaad04f5cc0f5..537c9ec248e286eb847e7a106b7740ff6a5f4ad0 100644 (file)
@@ -17,10 +17,9 @@ import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Verify;
 import java.net.URI;
 import java.util.Collection;
-import java.util.Date;
 import java.util.Optional;
 import org.opendaylight.yangtools.concepts.SemVer;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -150,7 +149,7 @@ public class ImportStatementDefinition extends
             final ModelActionBuilder importAction = stmt.newInferenceAction(SOURCE_LINKAGE);
             final Prerequisite<StmtContext<?, ?, ?>> imported;
             final String moduleName = stmt.getStatementArgument();
-            final Date revision = firstAttributeOf(stmt.declaredSubstatements(), RevisionDateStatement.class);
+            final Revision revision = firstAttributeOf(stmt.declaredSubstatements(), RevisionDateStatement.class);
             if (revision == null) {
                 imported = importAction.requiresCtx(stmt, ModuleNamespace.class,
                     NamespaceKeyCriterion.latestRevisionModule(moduleName), SOURCE_LINKAGE);
@@ -187,7 +186,8 @@ public class ImportStatementDefinition extends
         }
 
         static SourceIdentifier getImportedSourceIdentifier(final StmtContext<String, ImportStatement, ?> stmt) {
-            final StmtContext<Date, ?, ?> revision = findFirstDeclaredSubstatement(stmt, RevisionDateStatement.class);
+            final StmtContext<Revision, ?, ?> revision = findFirstDeclaredSubstatement(stmt,
+                RevisionDateStatement.class);
             return revision == null ? RevisionSourceIdentifier.create(stmt.getStatementArgument())
                     : RevisionSourceIdentifier.create(stmt.getStatementArgument(), revision.rawStatementArgument());
         }
@@ -327,8 +327,7 @@ public class ImportStatementDefinition extends
 
         private static SemVerSourceIdentifier createSemVerModuleIdentifier(
                 final ModuleIdentifier importedModuleIdentifier, final SemVer semVer) {
-            final String formattedRevision = importedModuleIdentifier.getRevision().map(
-                date -> SimpleDateFormatUtil.getRevisionFormat().format(date))
+            final String formattedRevision = importedModuleIdentifier.getRevision().map(Revision::toString)
                     .orElse(null);
             return SemVerSourceIdentifier.create(importedModuleIdentifier.getName(), formattedRevision, semVer);
         }
index 9dd38ee88c6af851e2692bd4d3f75a5a9fb4fcc3..cc66a1f4c9799895a26b122b1e45f41bdd8e1e6d 100644 (file)
@@ -11,9 +11,9 @@ import static org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPha
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.findFirstDeclaredSubstatement;
 
 import java.util.Collection;
-import java.util.Date;
 import java.util.Optional;
 import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
@@ -72,7 +72,8 @@ public class IncludeStatementImpl extends AbstractDeclaredStatement<String> impl
         @Override
         public void onPreLinkageDeclared(
                 final Mutable<String, IncludeStatement, EffectiveStatement<String, IncludeStatement>> stmt) {
-            final StmtContext<Date, ?, ?> revision = findFirstDeclaredSubstatement(stmt, RevisionDateStatement.class);
+            final StmtContext<Revision, ?, ?> revision = findFirstDeclaredSubstatement(stmt,
+                RevisionDateStatement.class);
             stmt.addRequiredSource(revision == null ? RevisionSourceIdentifier.create(stmt.getStatementArgument())
                 : RevisionSourceIdentifier.create(stmt.getStatementArgument(), revision.rawStatementArgument()));
         }
@@ -81,7 +82,7 @@ public class IncludeStatementImpl extends AbstractDeclaredStatement<String> impl
         public void onLinkageDeclared(
                 final Mutable<String, IncludeStatement, EffectiveStatement<String, IncludeStatement>> stmt) {
             final String submoduleName = stmt.getStatementArgument();
-            final StmtContext<Date, ?, ?> revision = findFirstDeclaredSubstatement(stmt,
+            final StmtContext<Revision, ?, ?> revision = findFirstDeclaredSubstatement(stmt,
                 RevisionDateStatement.class);
 
             final ModelActionBuilder includeAction = stmt.newInferenceAction(SOURCE_LINKAGE);
index c19cfafdb1da18b5f659e1815346a8ff71dbd0ec..74e6b2d17e8460875e6b7a47d8150518ae5b3100 100644 (file)
@@ -10,10 +10,10 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf;
 
 import java.net.URI;
-import java.util.Date;
 import java.util.Optional;
 import org.opendaylight.yangtools.concepts.SemVer;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -114,8 +114,7 @@ public class ModuleStatementSupport extends
 
         stmt.addContext(PreLinkageModuleNamespace.class, moduleName, stmt);
 
-        final Optional<Date> revisionDate = Optional.ofNullable(StmtContextUtils.getLatestRevision(
-            stmt.declaredSubstatements()));
+        final Optional<Revision> revisionDate = StmtContextUtils.getLatestRevision(stmt.declaredSubstatements());
         final QNameModule qNameModule = QNameModule.create(moduleNs, revisionDate.orElse(null)).intern();
 
         stmt.addToNs(ModuleCtxToModuleQName.class, stmt, qNameModule);
@@ -131,8 +130,7 @@ public class ModuleStatementSupport extends
         SourceException.throwIf(!moduleNs.isPresent(), stmt.getStatementSourceReference(),
             "Namespace of the module [%s] is missing", stmt.getStatementArgument());
 
-        final Optional<Date> revisionDate = Optional.ofNullable(StmtContextUtils.getLatestRevision(
-            stmt.declaredSubstatements()));
+        final Optional<Revision> revisionDate = StmtContextUtils.getLatestRevision(stmt.declaredSubstatements());
         final QNameModule qNameModule = QNameModule.create(moduleNs.get(), revisionDate.orElse(null)).intern();
         final StmtContext<?, ModuleStatement, EffectiveStatement<String, ModuleStatement>> possibleDuplicateModule =
                 stmt.getFromNamespace(NamespaceToModule.class, qNameModule);
index 279e064359ca1d5272fe691d8adf50d3c3be423e..c47aa7e14571b70dd6f3b83b2658aa4334b49db2 100644 (file)
@@ -7,9 +7,7 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import java.text.ParseException;
-import java.util.Date;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement;
@@ -20,40 +18,39 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.RevisionDateEffectiveStatementImpl;
 
-public class RevisionDateStatementImpl extends AbstractDeclaredStatement<Date> implements RevisionDateStatement {
+public class RevisionDateStatementImpl extends AbstractDeclaredStatement<Revision> implements RevisionDateStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
             SubstatementValidator.builder(YangStmtMapping.REVISION_DATE).build();
 
-    protected RevisionDateStatementImpl(final StmtContext<Date, RevisionDateStatement, ?> context) {
+    protected RevisionDateStatementImpl(final StmtContext<Revision, RevisionDateStatement, ?> context) {
         super(context);
     }
 
-    public static class Definition
-            extends
-            AbstractStatementSupport<Date, RevisionDateStatement, EffectiveStatement<Date, RevisionDateStatement>> {
+    public static class Definition extends AbstractStatementSupport<Revision, RevisionDateStatement,
+            EffectiveStatement<Revision, RevisionDateStatement>> {
 
         public Definition() {
             super(YangStmtMapping.REVISION_DATE);
         }
 
         @Override
-        public Date parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
+        public Revision parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             try {
-                return SimpleDateFormatUtil.getRevisionFormat().parse(value);
-            } catch (ParseException e) {
+                return Revision.valueOf(value);
+            } catch (IllegalArgumentException e) {
                 throw new SourceException(ctx.getStatementSourceReference(), e,
                     "Revision value %s is not in required format yyyy-MM-dd", value);
             }
         }
 
         @Override
-        public RevisionDateStatement createDeclared(final StmtContext<Date, RevisionDateStatement, ?> ctx) {
+        public RevisionDateStatement createDeclared(final StmtContext<Revision, RevisionDateStatement, ?> ctx) {
             return new RevisionDateStatementImpl(ctx);
         }
 
         @Override
-        public EffectiveStatement<Date, RevisionDateStatement> createEffective(
-                final StmtContext<Date, RevisionDateStatement, EffectiveStatement<Date, RevisionDateStatement>> ctx) {
+        public EffectiveStatement<Revision, RevisionDateStatement> createEffective(final StmtContext<Revision,
+                RevisionDateStatement, EffectiveStatement<Revision, RevisionDateStatement>> ctx) {
             return new RevisionDateEffectiveStatementImpl(ctx);
         }
 
@@ -64,7 +61,7 @@ public class RevisionDateStatementImpl extends AbstractDeclaredStatement<Date> i
     }
 
     @Override
-    public Date getDate() {
+    public Revision getDate() {
         return argument();
     }
 }
index 87490f5affd5a4e84b595ee72a82af6ca2dc97eb..1c5c4ed5113d7c05ebf36e266c6f1ff8a8305533 100644 (file)
@@ -7,11 +7,9 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import java.text.ParseException;
-import java.util.Date;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
@@ -24,7 +22,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.RevisionEffectiveStatementImpl;
 
-public class RevisionStatementImpl extends AbstractDeclaredStatement<Date>
+public class RevisionStatementImpl extends AbstractDeclaredStatement<Revision>
         implements RevisionStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
         YangStmtMapping.REVISION)
@@ -32,36 +30,35 @@ public class RevisionStatementImpl extends AbstractDeclaredStatement<Date>
             .addOptional(YangStmtMapping.REFERENCE)
             .build();
 
-    protected RevisionStatementImpl(final StmtContext<Date, RevisionStatement, ?> context) {
+    protected RevisionStatementImpl(final StmtContext<Revision, RevisionStatement, ?> context) {
         super(context);
     }
 
-    public static class Definition
-            extends
-            AbstractStatementSupport<Date, RevisionStatement, EffectiveStatement<Date, RevisionStatement>> {
+    public static class Definition extends
+            AbstractStatementSupport<Revision, RevisionStatement, EffectiveStatement<Revision, RevisionStatement>> {
 
         public Definition() {
             super(YangStmtMapping.REVISION);
         }
 
         @Override
-        public Date parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
+        public Revision parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             try {
-                return SimpleDateFormatUtil.getRevisionFormat().parse(value);
-            } catch (ParseException e) {
+                return Revision.valueOf(value);
+            } catch (IllegalArgumentException e) {
                 throw new SourceException(ctx.getStatementSourceReference(), e,
                     "Revision value %s is not in required format yyyy-MM-dd", value);
             }
         }
 
         @Override
-        public RevisionStatement createDeclared(final StmtContext<Date, RevisionStatement, ?> ctx) {
+        public RevisionStatement createDeclared(final StmtContext<Revision, RevisionStatement, ?> ctx) {
             return new RevisionStatementImpl(ctx);
         }
 
         @Override
-        public EffectiveStatement<Date, RevisionStatement> createEffective(
-                final StmtContext<Date, RevisionStatement, EffectiveStatement<Date, RevisionStatement>> ctx) {
+        public EffectiveStatement<Revision, RevisionStatement> createEffective(
+                final StmtContext<Revision, RevisionStatement, EffectiveStatement<Revision, RevisionStatement>> ctx) {
             return new RevisionEffectiveStatementImpl(ctx);
         }
 
@@ -73,7 +70,7 @@ public class RevisionStatementImpl extends AbstractDeclaredStatement<Date>
 
     @Nonnull
     @Override
-    public Date getDate() {
+    public Revision getDate() {
         return argument();
     }
 
index 73ee7dcd338a11ac47957af2a68b061d63181329..53b71315658e845a2879c4235c10338fcd99c268 100644 (file)
@@ -10,9 +10,9 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.findFirstDeclaredSubstatement;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf;
 
-import java.util.Date;
 import java.util.Optional;
 import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -122,11 +122,8 @@ public class SubmoduleStatementImpl extends AbstractRootStatement<SubmoduleState
 
         private static ModuleIdentifier getSubmoduleIdentifier(
                 final Mutable<String, SubmoduleStatement, EffectiveStatement<String, SubmoduleStatement>> stmt) {
-            final Date maybeDate = StmtContextUtils.getLatestRevision(stmt.declaredSubstatements());
-
-            final ModuleIdentifier submoduleIdentifier = ModuleIdentifierImpl.create(stmt.getStatementArgument(),
-                    Optional.ofNullable(maybeDate));
-            return submoduleIdentifier;
+            final Optional<Revision> maybeDate = StmtContextUtils.getLatestRevision(stmt.declaredSubstatements());
+            return ModuleIdentifierImpl.create(stmt.getStatementArgument(), maybeDate);
         }
 
         @Override
index 11b454958c054419a636bd45dc02844f14fb4daa..cc9ccb653828b438acf759a52be66db88aa94823 100644 (file)
@@ -15,7 +15,6 @@ import com.google.common.collect.Iterables;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
@@ -27,6 +26,7 @@ import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.concepts.SemVer;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
@@ -283,7 +283,7 @@ abstract class AbstractEffectiveModule<D extends DeclaredStatement<String>> exte
     }
 
     @Override
-    public Optional<Date> getRevision() {
+    public Optional<Revision> getRevision() {
         return getQNameModule().getRevision();
     }
 
index 41443c4084b6333e9259d4507de4141e06e788f8..b0cd51db653ef9c946cefb691f9cbf97fa3b5b79 100644 (file)
@@ -10,13 +10,13 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import java.net.URI;
-import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.NamespaceRevisionAware;
@@ -35,7 +35,7 @@ public final class AugmentEffectiveStatementImpl
         implements AugmentationSchema, NamespaceRevisionAware {
     private final SchemaPath targetPath;
     private final URI namespace;
-    private final Date revision;
+    private final Revision revision;
     private final Set<ActionDefinition> actions;
     private final Set<NotificationDefinition> notifications;
     private final List<UnknownSchemaNode> unknownNodes;
@@ -113,8 +113,8 @@ public final class AugmentEffectiveStatementImpl
     }
 
     @Override
-    public Date getRevision() {
-        return revision;
+    public Optional<Revision> getRevision() {
+        return Optional.ofNullable(revision);
     }
 
     @Override
index 00d71e83f45270e0730e865d2a85fda1c87b18ed..4e95d34dafb950bb41356e030c63e6e312552436 100644 (file)
@@ -8,12 +8,11 @@
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
 
 import com.google.common.base.MoreObjects;
-import java.util.Date;
 import java.util.Objects;
 import java.util.Optional;
 import org.opendaylight.yangtools.concepts.SemVer;
-import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement;
 import org.opendaylight.yangtools.yang.model.repo.api.SemVerSourceIdentifier;
@@ -27,7 +26,7 @@ public class ImportEffectiveStatementImpl extends DeclaredEffectiveStatementBase
         implements ModuleImport {
 
     private final String moduleName;
-    private final Date revision;
+    private final Revision revision;
     private final SemVer semVer;
     private final String prefix;
     private final String description;
@@ -53,7 +52,7 @@ public class ImportEffectiveStatementImpl extends DeclaredEffectiveStatementBase
         } else {
             final SemVerSourceIdentifier importedModuleIdentifier = ctx.getFromNamespace(
                 ImportPrefixToSemVerSourceIdentifier.class, prefix);
-            revision = QName.parseRevision(importedModuleIdentifier.getRevision());
+            revision = Revision.valueOf(importedModuleIdentifier.getRevision());
             semVer = importedModuleIdentifier.getSemanticVersion().orElse(null);
         }
 
@@ -65,7 +64,7 @@ public class ImportEffectiveStatementImpl extends DeclaredEffectiveStatementBase
         this.reference = referenceStmt != null ? referenceStmt.argument() : null;
     }
 
-    private Date getImportedRevision(final StmtContext<String, ImportStatement, ?> ctx) {
+    private Revision getImportedRevision(final StmtContext<String, ImportStatement, ?> ctx) {
         /*
          * When 'revision-date' of an import is not specified in yang source, we
          * need to find revision of imported module.
@@ -82,7 +81,7 @@ public class ImportEffectiveStatementImpl extends DeclaredEffectiveStatementBase
     }
 
     @Override
-    public Optional<Date> getRevision() {
+    public Optional<Revision> getRevision() {
         return Optional.ofNullable(revision);
     }
 
index 622c27c849c2c266a8667cf74de286885974cf39..58faf8190d386083d18a9bee24510817d27db266 100644 (file)
@@ -7,13 +7,13 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
 
-import java.util.Date;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
 public final class RevisionDateEffectiveStatementImpl
-        extends DeclaredEffectiveStatementBase<Date, RevisionDateStatement> {
-    public RevisionDateEffectiveStatementImpl(final StmtContext<Date, RevisionDateStatement, ?> ctx) {
+        extends DeclaredEffectiveStatementBase<Revision, RevisionDateStatement> {
+    public RevisionDateEffectiveStatementImpl(final StmtContext<Revision, RevisionDateStatement, ?> ctx) {
         super(ctx);
     }
 }
index 47250b6c48b1e7e8ca20765a1cf7751ff5bef14b..e2dd62e67113f4bb8757c8865a909feff5c942d7 100644 (file)
@@ -7,18 +7,18 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
 
-import java.util.Date;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.DocumentedNode;
 import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
-public final class RevisionEffectiveStatementImpl extends DeclaredEffectiveStatementBase<Date, RevisionStatement>
+public final class RevisionEffectiveStatementImpl extends DeclaredEffectiveStatementBase<Revision, RevisionStatement>
         implements DocumentedNode {
 
     private final String reference;
     private final String description;
 
-    public RevisionEffectiveStatementImpl(final StmtContext<Date, RevisionStatement, ?> ctx) {
+    public RevisionEffectiveStatementImpl(final StmtContext<Revision, RevisionStatement, ?> ctx) {
         super(ctx);
 
         final DescriptionEffectiveStatementImpl descStmt = firstEffective(DescriptionEffectiveStatementImpl.class);
index 6b60dd7c5e5db51999772ec8b0257fc7950689b4..eec5b72ad0c10a73855edea28c141d49accdd367 100644 (file)
@@ -19,6 +19,7 @@ import java.net.URISyntaxException;
 import java.text.ParseException;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.data.util.ConstraintDefinitions;
 import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
@@ -44,7 +45,7 @@ public class ConstraintDefinitionsTest {
         final SchemaContext schemaContext = reactor.buildEffective();
         assertNotNull(schemaContext);
 
-        final Module testModule = schemaContext.findModule("foo", QName.parseRevision("2016-09-20")).get();
+        final Module testModule = schemaContext.findModule("foo", Revision.valueOf("2016-09-20")).get();
         final LeafSchemaNode mandatoryLeaf1 = (LeafSchemaNode) testModule.getDataChildByName(
                 QName.create(testModule.getQNameModule(), "mandatory-leaf-1"));
         assertNotNull(mandatoryLeaf1);
index eb1158f2814bc90dbd38e5b03c7b52e27549d070..467f7cc57345331aff599a9cf50b2c5d9dcfee2b 100644 (file)
@@ -15,7 +15,7 @@ import static org.junit.Assert.fail;
 
 import java.util.Set;
 import org.junit.Test;
-import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.MustDefinition;
@@ -32,7 +32,7 @@ public class Bug6871Test {
         final SchemaContext schemaContext = StmtTestUtils.parseYangSource("/rfc7950/bug6871/foo.yang");
         assertNotNull(schemaContext);
 
-        final Module foo = schemaContext.findModule("foo", QName.parseRevision("2016-12-14")).get();
+        final Module foo = schemaContext.findModule("foo", Revision.valueOf("2016-12-14")).get();
 
         final Set<NotificationDefinition> notifications = foo.getNotifications();
         assertEquals(1, notifications.size());
index e45b6ca2ce014305f25f15d7d38c738bb0a8bf27..d8a742ebcf7d86a4f267c431a9d2ab8b9d1158f8 100644 (file)
@@ -19,6 +19,7 @@ import java.util.List;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -42,7 +43,7 @@ public class Bug6887Test {
         final SchemaContext schemaContext = StmtTestUtils.parseYangSource("/rfc7950/bug6887/foo.yang");
         assertNotNull(schemaContext);
 
-        final Module foo = schemaContext.findModule("foo", QName.parseRevision("2017-01-26")).get();
+        final Module foo = schemaContext.findModule("foo", Revision.valueOf("2017-01-26")).get();
         final LeafSchemaNode myEnumerationLeaf = (LeafSchemaNode) foo.getDataChildByName(
                 QName.create(foo.getQNameModule(), "my-enumeration-leaf"));
         assertNotNull(myEnumerationLeaf);
@@ -168,7 +169,7 @@ public class Bug6887Test {
         final SchemaContext schemaContext = StmtTestUtils.parseYangSource("/rfc7950/bug6887/bar.yang");
         assertNotNull(schemaContext);
 
-        final Module bar = schemaContext.findModule("bar", QName.parseRevision("2017-02-02")).get();
+        final Module bar = schemaContext.findModule("bar", Revision.valueOf("2017-02-02")).get();
         final LeafSchemaNode myBitsLeaf = (LeafSchemaNode) bar.getDataChildByName(
                 QName.create(bar.getQNameModule(), "my-bits-leaf"));
         assertNotNull(myBitsLeaf);
index df2e0a80f4cea86bcdd8f83e36d14e12a0995c3e..618e0a98aa867533a837293965f38d73d61361f8 100644 (file)
@@ -13,6 +13,7 @@ import static org.junit.Assert.assertNotNull;
 
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -28,7 +29,7 @@ public class Bug9241Test {
         final SchemaContext schemaContext = StmtTestUtils.parseYangSource("/rfc7950/bug9241/foo.yang");
         assertNotNull(schemaContext);
 
-        final Module fooModule = schemaContext.findModule("foo", QName.parseRevision("2017-10-13")).get();
+        final Module fooModule = schemaContext.findModule("foo", Revision.valueOf("2017-10-13")).get();
 
         final ContainerSchemaNode actionCont = (ContainerSchemaNode) fooModule.getDataChildByName(QName.create(
                 fooModule.getQNameModule(), "action-cont"));
index bce4e8df1f8a9468315232c2fdcd4acd5fcb6fdb..b3792f4968de47417a554e266e03c10ae668ab54 100644 (file)
@@ -15,7 +15,7 @@ import static org.junit.Assert.fail;
 
 import java.util.Set;
 import org.junit.Test;
-import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -29,7 +29,7 @@ public class IdentityStatementTest {
         final SchemaContext schemaContext = StmtTestUtils.parseYangSource("/rfc7950/identity-stmt/foo.yang");
         assertNotNull(schemaContext);
 
-        final Module foo = schemaContext.findModule("foo", QName.parseRevision("2016-12-21")).get();
+        final Module foo = schemaContext.findModule("foo", Revision.valueOf("2016-12-21")).get();
         final Set<IdentitySchemaNode> identities = foo.getIdentities();
         for (final IdentitySchemaNode identity : identities) {
             if ("derived-id".equals(identity.getQName().getLocalName())) {
index 8715356092eaf088b1589fb151f1df8a3c5911b5..21aad444e05b7ce6432901485cad757a714db1fb 100644 (file)
@@ -16,6 +16,7 @@ import static org.junit.Assert.fail;
 import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -31,7 +32,7 @@ public class IdentityrefStatementTest {
         final SchemaContext schemaContext = StmtTestUtils.parseYangSource("/rfc7950/identityref-stmt/foo.yang");
         assertNotNull(schemaContext);
 
-        final Module foo = schemaContext.findModule("foo", QName.parseRevision("2017-01-11")).get();
+        final Module foo = schemaContext.findModule("foo", Revision.valueOf("2017-01-11")).get();
         final Set<IdentitySchemaNode> identities = foo.getIdentities();
         assertEquals(3, identities.size());
 
index 2fe30aa7a17e2b5e8a25a3ebd4304e1da3dec513..2a5af5a49b90c8da3305aa3702c9bf0167d92664 100644 (file)
@@ -16,6 +16,7 @@ import static org.junit.Assert.fail;
 import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -31,7 +32,7 @@ public class LeafrefStatementTest {
         final SchemaContext schemaContext = StmtTestUtils.parseYangSource("/rfc7950/leafref-stmt/foo.yang");
         assertNotNull(schemaContext);
 
-        final Module foo = schemaContext.findModule("foo", QName.parseRevision("2016-12-20")).get();
+        final Module foo = schemaContext.findModule("foo", Revision.valueOf("2016-12-20")).get();
         final Set<TypeDefinition<?>> typeDefinitions = foo.getTypeDefinitions();
         assertEquals(1, typeDefinitions.size());
 
index 48e23d0670edee5d272bf8ed3d4cd5424acfb6cb..ae2ec05778c2af5963fc5447b43612eb66a98d1d 100644 (file)
@@ -16,7 +16,6 @@ import static org.mockito.Mockito.doReturn;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.text.ParseException;
 import java.util.Collections;
 import java.util.Optional;
 import org.junit.Test;
@@ -25,6 +24,7 @@ import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
@@ -81,11 +81,11 @@ public class SchemaContextUtilTest {
 
     @Test
     public void findNodeInSchemaContextTest() throws URISyntaxException, IOException, YangSyntaxErrorException,
-            ParseException, ReactorException {
+            ReactorException {
 
         final SchemaContext context = TestUtils.parseYangSources("/schema-context-util-test");
 
-        final Module myModule = context.findModule(new URI("uri:my-module"), QName.parseRevision("2014-10-07")).get();
+        final Module myModule = context.findModule(new URI("uri:my-module"),Revision.valueOf("2014-10-07")).get();
 
         SchemaNode testNode = ((ContainerSchemaNode) myModule.getDataChildByName(QName.create(
                 myModule.getQNameModule(), "my-container"))).getDataChildByName(QName.create(myModule.getQNameModule(),
@@ -199,11 +199,11 @@ public class SchemaContextUtilTest {
 
     @Test
     public void findNodeInSchemaContextTest2() throws URISyntaxException, IOException, YangSyntaxErrorException,
-            ParseException, ReactorException {
+            ReactorException {
 
         final SchemaContext context = TestUtils.parseYangSources("/schema-context-util-test");
 
-        final Module myModule = context.findModule(new URI("uri:my-module"), QName.parseRevision("2014-10-07")).get();
+        final Module myModule = context.findModule(new URI("uri:my-module"), Revision.valueOf("2014-10-07")).get();
 
         SchemaNode testNode = ((ContainerSchemaNode) myModule.getDataChildByName(QName.create(
                 myModule.getQNameModule(), "my-container"))).getDataChildByName(QName.create(myModule.getQNameModule(),
@@ -297,11 +297,11 @@ public class SchemaContextUtilTest {
 
     @Test
     public void findNodeInSchemaContextTest3() throws URISyntaxException, IOException, YangSyntaxErrorException,
-            ParseException, ReactorException {
+            ReactorException {
 
         final SchemaContext context = TestUtils.parseYangSources("/schema-context-util-test");
 
-        final Module myModule = context.findModule(new URI("uri:my-module"), QName.parseRevision("2014-10-07")).get();
+        final Module myModule = context.findModule(new URI("uri:my-module"), Revision.valueOf("2014-10-07")).get();
 
         SchemaNode testNode = myModule.getDataChildByName(QName.create(myModule.getQNameModule(), "my-container"));
 
@@ -363,14 +363,14 @@ public class SchemaContextUtilTest {
 
     @Test
     public void findParentModuleTest() throws URISyntaxException, IOException, YangSyntaxErrorException,
-            ParseException, ReactorException {
+            ReactorException {
 
         final SchemaContext context = TestUtils.parseYangSources("/schema-context-util-test");
 
-        final Module myModule = context.findModule(new URI("uri:my-module"), QName.parseRevision("2014-10-07")).get();
+        final Module myModule = context.findModule(new URI("uri:my-module"), Revision.valueOf("2014-10-07")).get();
 
-        final DataSchemaNode node = myModule
-                .getDataChildByName(QName.create(myModule.getQNameModule(), "my-container"));
+        final DataSchemaNode node = myModule.getDataChildByName(QName.create(myModule.getQNameModule(),
+            "my-container"));
 
         final Module foundModule = SchemaContextUtil.findParentModule(context, node);
 
@@ -423,9 +423,9 @@ public class SchemaContextUtilTest {
     public void findDataSchemaNodeTest() throws URISyntaxException, IOException, YangSyntaxErrorException,
             ReactorException {
         final SchemaContext context = TestUtils.parseYangSources("/schema-context-util-test");
-        final Module module = context.findModule(new URI("uri:my-module"), QName.parseRevision("2014-10-07")).get();
+        final Module module = context.findModule(new URI("uri:my-module"), Revision.valueOf("2014-10-07")).get();
         final Module importedModule = context.findModule(new URI("uri:imported-module"),
-            QName.parseRevision("2014-10-07")).get();
+            Revision.valueOf("2014-10-07")).get();
 
         final SchemaNode testNode = ((ContainerSchemaNode) importedModule.getDataChildByName(QName.create(
                 importedModule.getQNameModule(), "my-imported-container"))).getDataChildByName(QName.create(
@@ -448,7 +448,7 @@ public class SchemaContextUtilTest {
         // final RevisionAwareXPath nonCondXPath) {
 
         final SchemaContext context = TestUtils.parseYangSources("/schema-context-util-test");
-        final Module module = context.findModule(new URI("uri:my-module"), QName.parseRevision("2014-10-07")).get();
+        final Module module = context.findModule(new URI("uri:my-module"), Revision.valueOf("2014-10-07")).get();
 
         final GroupingDefinition grouping = getGroupingByName(module, "my-grouping");
         final SchemaNode testNode = grouping.getDataChildByName(QName.create(module.getQNameModule(),
@@ -531,10 +531,10 @@ public class SchemaContextUtilTest {
 
     @Test
     public void findNodeInSchemaContextGroupingsTest() throws URISyntaxException, IOException,
-            YangSyntaxErrorException, ParseException, ReactorException {
+            YangSyntaxErrorException, ReactorException {
 
         final SchemaContext context = TestUtils.parseYangSources("/schema-context-util-test");
-        final Module myModule = context.findModule(new URI("uri:my-module"), QName.parseRevision("2014-10-07")).get();
+        final Module myModule = context.findModule(URI.create("uri:my-module"), Revision.valueOf("2014-10-07")).get();
 
         // find grouping in container
         DataNodeContainer dataContainer = (DataNodeContainer) myModule.getDataChildByName(QName.create(
@@ -730,11 +730,11 @@ public class SchemaContextUtilTest {
 
     @Test
     public void findNodeInSchemaContextGroupingsTest2() throws URISyntaxException, IOException,
-            YangSyntaxErrorException, ParseException, ReactorException {
+            YangSyntaxErrorException, ReactorException {
 
         final SchemaContext context = TestUtils.parseYangSources("/schema-context-util-test");
 
-        final Module myModule = context.findModule(new URI("uri:my-module"), QName.parseRevision("2014-10-07")).get();
+        final Module myModule = context.findModule(new URI("uri:my-module"), Revision.valueOf("2014-10-07")).get();
 
         // find grouping in container
         DataNodeContainer dataContainer = (DataNodeContainer) myModule.getDataChildByName(QName.create(
@@ -869,11 +869,11 @@ public class SchemaContextUtilTest {
 
     @Test
     public void findNodeInSchemaContextTheSameNameOfSiblingsTest() throws URISyntaxException, IOException,
-            YangSyntaxErrorException, ParseException, ReactorException {
+            YangSyntaxErrorException, ReactorException {
 
         final SchemaContext context = TestUtils.parseYangSources("/schema-context-util-test");
 
-        final Module myModule = context.findModule(new URI("uri:my-module"), QName.parseRevision("2014-10-07")).get();
+        final Module myModule = context.findModule(new URI("uri:my-module"), Revision.valueOf("2014-10-07")).get();
         final ChoiceSchemaNode choice = (ChoiceSchemaNode) getRpcByName(myModule, "my-name").getInput()
                 .getDataChildByName(QName.create(myModule.getQNameModule(), "my-choice"));
         final SchemaNode testNode = choice.getCaseNodeByName("case-two").getDataChildByName(
index f7793f25318a7b8ae68a3b5a5325a59102a40cbb..dde43433a66785e2247b1c51ee134f5141492239 100644 (file)
@@ -17,12 +17,12 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Date;
 import java.util.List;
 import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
@@ -40,11 +40,11 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.TypeUtils;
 
 public class AugmentTest {
     private static final QNameModule FOO = QNameModule.create(
-        URI.create("urn:opendaylight.foo"), QName.parseRevision("2013-10-13"));
+        URI.create("urn:opendaylight.foo"), Revision.valueOf("2013-10-13"));
     private static final QNameModule BAR = QNameModule.create(
-        URI.create("urn:opendaylight.bar"), QName.parseRevision("2013-10-14"));
+        URI.create("urn:opendaylight.bar"), Revision.valueOf("2013-10-14"));
     private static final QNameModule BAZ = QNameModule.create(
-        URI.create("urn:opendaylight.baz"), QName.parseRevision("2013-10-15"));
+        URI.create("urn:opendaylight.baz"), Revision.valueOf("2013-10-15"));
 
     private static final QName Q0 = QName.create(BAR, "interfaces");
     private static final QName Q1 = QName.create(BAR, "ifEntry");
@@ -346,8 +346,7 @@ public class AugmentTest {
         final SchemaContext context = TestUtils.loadModules(getClass().getResource("/augment-test/rpc").toURI());
         final URI NS_BAR = URI.create("urn:opendaylight:bar");
         final URI NS_FOO = URI.create("urn:opendaylight:foo");
-        final Date revision = QName.parseRevision("2013-10-11");
-
+        final Revision revision = Revision.valueOf("2013-10-11");
         final Module bar = TestUtils.findModule(context, "bar").get();
         final Set<RpcDefinition> rpcs = bar.getRpcs();
         assertEquals(2, rpcs.size());
index 9e5bcfffea47307a6bc433d3ae58fa46c3f9195c..c7b4bd69f7eaf85a449fb77a1662564426249c13 100644 (file)
@@ -11,11 +11,11 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 import java.net.URI;
-import java.util.Date;
 import java.util.List;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
@@ -38,8 +38,7 @@ public class Bug1412Test {
         assertEquals(1, unknownNodes.size());
         final UnknownSchemaNode action = unknownNodes.get(0);
 
-        final Date revision = QName.parseRevision("2014-07-25");
-        final QNameModule qm = QNameModule.create(URI.create("urn:test:bug1412"), revision);
+        final QNameModule qm = QNameModule.create(URI.create("urn:test:bug1412"), Revision.valueOf("2014-07-25"));
         QName expectedNodeType = QName.create("urn:test:bug1412:ext:definitions", "2014-07-25", "action");
         assertEquals(expectedNodeType, action.getNodeType());
         assertEquals("hello", action.getNodeParameter());
index 77ad66242e9c7352be0b7a1cbad0ef8640abba68..c67cbbe5fbcefdc05888acb2e6bb43743aba4756 100644 (file)
@@ -13,11 +13,11 @@ import static org.junit.Assert.assertTrue;
 
 import java.net.URI;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -31,8 +31,7 @@ public class Bug2872Test {
         final SchemaContext schema = StmtTestUtils.parseYangSources("/bugs/bug2872");
         assertNotNull(schema);
 
-        final Date revision = QName.parseRevision("2016-06-08");
-        final QNameModule bug2872module = QNameModule.create(new URI("bug2872"), revision);
+        final QNameModule bug2872module = QNameModule.create(URI.create("bug2872"), Revision.valueOf("2016-06-08"));
         final QName foo = QName.create(bug2872module, "bar");
 
         final DataSchemaNode dataSchemaNode = schema.getDataChildByName(foo);
index 0f1eccd1f8653b14553923e2b9e3d2f39406cb35..12cff818221a62fcd93dab3e592d81c13ca72de7 100644 (file)
@@ -13,6 +13,7 @@ import java.net.URI;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
@@ -26,7 +27,7 @@ public class Bug4231Test {
 
         assertNotNull(context);
 
-        QNameModule foo = QNameModule.create(new URI("foo"), QName.parseRevision("2015-09-02"));
+        QNameModule foo = QNameModule.create(new URI("foo"), Revision.valueOf("2015-09-02"));
 
         SchemaPath targetPath = SchemaPath
                 .create(true, QName.create(foo, "augment-target"))
index b5f5a7e9a6ca4033db887d77675d78654fab1c74..60f48855cb8a84f4a0d8f9078b66aa4ae1e400d4 100644 (file)
@@ -11,10 +11,10 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import java.net.URI;
-import java.util.Date;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
@@ -28,9 +28,9 @@ public class Bug4610Test {
     public void test() throws Exception {
         SchemaContext context = StmtTestUtils.parseYangSources("/bugs/bug4610");
 
-        Date revision = QName.parseRevision("2015-12-12");
-        QNameModule foo = QNameModule.create(new URI("foo"), revision);
-        QNameModule bar = QNameModule.create(new URI("bar"), revision);
+        Revision revision = Revision.valueOf("2015-12-12");
+        QNameModule foo = QNameModule.create(URI.create("foo"), revision);
+        QNameModule bar = QNameModule.create(URI.create("bar"), revision);
 
         QName g1 = QName.create(bar, "g1");
         QName g2 = QName.create(bar, "g2");
index 7e352554eb269eeac61e7dd392b1533185311c1d..2b72f6318eae410537b92137f62fb64e272d5dc9 100644 (file)
@@ -14,6 +14,7 @@ import java.util.Iterator;
 import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
@@ -34,7 +35,7 @@ public class Bug5884Test {
         final QName root = QName.create(NS, REV, "main-container");
         final QName choice = QName.create(NS, REV, "test-choice");
         final QName testContainerQname = QName.create(NS, REV, "test");
-        final Module foo = context.findModule("foo", QName.parseRevision("2016-01-01")).get();
+        final Module foo = context.findModule("foo", Revision.valueOf("2016-01-01")).get();
         final ContainerSchemaNode rootContainer = (ContainerSchemaNode) context.getDataChildByName(root);
         final ContainerSchemaNode testContainer = (ContainerSchemaNode) rootContainer.getDataChildByName(
             testContainerQname);
index 4413b8e32785b3c83db6c416f33d8ffca943c1fa..2d656eb826778abfcac202e7c861a79120a4a910 100644 (file)
@@ -9,24 +9,23 @@ package org.opendaylight.yangtools.yang.stmt;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil.getRevisionFormat;
 
 import java.text.ParseException;
-import java.util.Date;
 import java.util.Optional;
 import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
 public class Bug6491Test {
-    private Date date;
+    private Revision date;
 
     @Before
     public void setup() throws ParseException {
-        date = getRevisionFormat().parse("2016-01-01");
+        date = Revision.valueOf("2016-01-01");
     }
 
     @Test
@@ -37,8 +36,8 @@ public class Bug6491Test {
         testRevision("moduleRevisionOnly", date, Optional.empty());
     }
 
-    private static void testRevision(final String path, final Date moduleRevision,
-            final Optional<Date> importedRevision) throws Exception {
+    private static void testRevision(final String path, final Revision moduleRevision,
+            final Optional<Revision> importedRevision) throws Exception {
         final SchemaContext context = StmtTestUtils.parseYangSources("/bugs/bug6491/".concat(path));
         assertNotNull(context);
         final Module module = context.findModule("bar", moduleRevision).get();
index 8f4970baef139ceaf85c216fcb45b30ed7ff8c6d..7781ec248dafaf413774a92cca9266b1f205daf0 100644 (file)
@@ -12,11 +12,10 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import com.google.common.collect.ImmutableSet;
-import java.util.Date;
 import java.util.Optional;
 import java.util.Set;
 import org.junit.Test;
-import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.util.ModuleIdentifierImpl;
@@ -27,13 +26,13 @@ public class Bug6961Test {
 
     @Test
     public void testBug6961SchemaContext() throws Exception {
-        final Optional<Date> date = Optional.of(QName.parseRevision("2016-01-01"));
-        final ModuleIdentifier foo = ModuleIdentifierImpl.create("foo", date);
-        final ModuleIdentifier sub1Foo = ModuleIdentifierImpl.create("sub1-foo", date);
-        final ModuleIdentifier sub2Foo = ModuleIdentifierImpl.create("sub2-foo", date);
-        final ModuleIdentifier bar = ModuleIdentifierImpl.create("bar", date);
-        final ModuleIdentifier sub1Bar = ModuleIdentifierImpl.create("sub1-bar", date);
-        final ModuleIdentifier baz = ModuleIdentifierImpl.create("baz", date);
+        final Optional<Revision> revision = Optional.of(Revision.valueOf("2016-01-01"));
+        final ModuleIdentifier foo = ModuleIdentifierImpl.create("foo", revision);
+        final ModuleIdentifier sub1Foo = ModuleIdentifierImpl.create("sub1-foo", revision);
+        final ModuleIdentifier sub2Foo = ModuleIdentifierImpl.create("sub2-foo", revision);
+        final ModuleIdentifier bar = ModuleIdentifierImpl.create("bar", revision);
+        final ModuleIdentifier sub1Bar = ModuleIdentifierImpl.create("sub1-bar", revision);
+        final ModuleIdentifier baz = ModuleIdentifierImpl.create("baz", revision);
         final Set<ModuleIdentifier> testSet = ImmutableSet.of(foo, sub1Foo, sub2Foo, bar, sub1Bar, baz);
         final SchemaContext context = StmtTestUtils.parseYangSources("/bugs/bug6961/");
         assertNotNull(context);
index 76858e399a907494893944350575aab74a039b19..bdc41e9e64e3d49ca2b36aadd728157e9930537b 100644 (file)
@@ -12,10 +12,10 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import java.util.Date;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -33,7 +33,7 @@ public class Bug6972Test {
         assertNotNull(schemaContext);
         assertEquals(3, schemaContext.getModules().size());
 
-        final Date revision = QName.parseRevision("2016-10-20");
+        final Revision revision = Revision.valueOf("2016-10-20");
         final Module foo = schemaContext.findModule("foo", revision).get();
         final Module bar = schemaContext.findModule("bar", revision).get();
         final Module baz = schemaContext.findModule("baz", revision).get();
index 70fc2d67e9a1d7650219892584c78a1301943b83..ed747bf66b36125b0091f7a65de26764e60765fd 100644 (file)
@@ -11,11 +11,11 @@ package org.opendaylight.yangtools.yang.stmt;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-import java.util.Date;
 import java.util.List;
 import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.DeviateDefinition;
 import org.opendaylight.yangtools.yang.model.api.Deviation;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -30,7 +30,7 @@ public class Bug7440Test {
         final SchemaContext schemaContext = StmtTestUtils.parseYangSources("/bugs/bug7440");
         assertNotNull(schemaContext);
 
-        final Date revision = QName.parseRevision("2016-12-23");
+        final Revision revision = Revision.valueOf("2016-12-23");
         final Module foo = schemaContext.findModule("foo", revision).get();
         final Module bar = schemaContext.findModule("bar", revision).get();
 
index c79a918a67e30e4bdfb85a73dd19ef3638f7a05a..f3ab8e3c5a4a77e67726e81682bab35dbce47d3c 100644 (file)
@@ -15,7 +15,7 @@ import static org.junit.Assert.fail;
 import java.net.URI;
 import java.util.Set;
 import org.junit.Test;
-import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException;
@@ -31,18 +31,18 @@ public class Bug7480Test {
         final Set<Module> modules = context.getModules();
         assertEquals(8, modules.size());
 
-        assertNotNull(context.findModule(new URI("foo-imp"), QName.parseRevision("2017-01-23")));
+        assertNotNull(context.findModule(new URI("foo-imp"), Revision.valueOf("2017-01-23")));
         assertEquals(1, context.findModules(new URI("foo-imp-2")).size());
         assertEquals(1, context.findModules(new URI("foo-imp-imp")).size());
         assertEquals(1, context.findModules(new URI("bar")).size());
         assertEquals(1, context.findModules(new URI("baz")).size());
-        assertTrue(context.findModule(new URI("baz-imp"), QName.parseRevision("2002-01-01")).isPresent());
+        assertTrue(context.findModule(new URI("baz-imp"), Revision.valueOf("2002-01-01")).isPresent());
         final Set<Module> foo = context.findModules(new URI("foo"));
         assertEquals(1, foo.size());
         final Set<Module> subFoos = foo.iterator().next().getSubmodules();
         assertEquals(1, subFoos.size());
 
-        final Module parentMod = context.findModule(new URI("parent-mod-ns"), QName.parseRevision("2017-09-07")).get();
+        final Module parentMod = context.findModule(new URI("parent-mod-ns"), Revision.valueOf("2017-09-07")).get();
         assertEquals(1, parentMod.getSubmodules().size());
     }
 
index 471495fc1411d2d8ba9f2ae55b05a8f918240d72..b971f02262f6e1400c22a0d9f1093af4ce2b5463 100644 (file)
@@ -17,15 +17,13 @@ import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResour
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import java.net.URI;
-import java.text.ParseException;
-import java.util.Date;
 import java.util.Map;
 import java.util.Set;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
@@ -49,7 +47,7 @@ public class Bug8307Test {
     private static final URI BAR_NS = URI.create("bar-ns");
     private static final URI BAZ_NS = URI.create("baz-ns");
 
-    private static Date revision;
+    private static Revision revision;
     private static QNameModule foo;
     private static QName myFooContA;
     private static QName myFooContB;
@@ -61,8 +59,8 @@ public class Bug8307Test {
     private static QName myBazCont;
 
     @BeforeClass
-    public static void setup() throws ParseException {
-        revision = SimpleDateFormatUtil.getRevisionFormat().parse("2017-05-16");
+    public static void setup() {
+        revision = Revision.valueOf("2017-05-16");
         foo = QNameModule.create(FOO_NS, revision);
         myFooContA = QName.create(foo, "my-foo-cont-a");
         myFooContB = QName.create(foo, "my-foo-cont-b");
index 168b87742719d73a50df6585370d3ceb999408a1..f4a7f6d60e1f27cc0c8f75bfecce78f65a1fd82a 100644 (file)
@@ -14,7 +14,7 @@ import static org.junit.Assert.fail;
 import java.util.Optional;
 import java.util.Set;
 import org.junit.Test;
-import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -31,12 +31,12 @@ public class Bug8597Test {
         for (final ModuleImport moduleImport : imports) {
             switch (moduleImport.getModuleName()) {
                 case "bar":
-                    assertEquals(Optional.of(QName.parseRevision("1970-01-01")), moduleImport.getRevision());
+                    assertEquals(Optional.of(Revision.valueOf("1970-01-01")), moduleImport.getRevision());
                     assertEquals("bar-ref", moduleImport.getReference());
                     assertEquals("bar-desc", moduleImport.getDescription());
                     break;
                 case "baz":
-                    assertEquals(Optional.of(QName.parseRevision("2010-10-10")), moduleImport.getRevision());
+                    assertEquals(Optional.of(Revision.valueOf("2010-10-10")), moduleImport.getRevision());
                     assertEquals("baz-ref", moduleImport.getReference());
                     assertEquals("baz-desc", moduleImport.getDescription());
                     break;
index 64cb356ae34a3e38a50229e8fb41391064c6abb2..eeb1635159a3179adaefccba55807ecb8a67bbdd 100644 (file)
@@ -13,7 +13,7 @@ import static org.junit.Assert.assertNotNull;
 import java.util.Optional;
 import java.util.Set;
 import org.junit.Test;
-import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -24,14 +24,14 @@ public class Bug9005Test {
         final SchemaContext context = StmtTestUtils.parseYangSources("/bugs/bug9005");
         assertNotNull(context);
 
-        final Module foo = context.findModule("foo", QName.parseRevision("2017-07-07")).get();
+        final Module foo = context.findModule("foo", Revision.valueOf("2017-07-07")).get();
 
         final Set<ModuleImport> imports = foo.getImports();
         assertEquals(1, imports.size());
         final ModuleImport imp1 = imports.iterator().next();
         assertEquals("bar-2", imp1.getModuleName());
         assertEquals("bar", imp1.getPrefix());
-        assertEquals(Optional.of(QName.parseRevision("2000-01-02")), imp1.getRevision());
+        assertEquals(Optional.of(Revision.valueOf("2000-01-02")), imp1.getRevision());
 
         final Set<Module> submodules = foo.getSubmodules();
         assertEquals(1, submodules.size());
@@ -42,6 +42,6 @@ public class Bug9005Test {
         final ModuleImport subImp1 = subImports.iterator().next();
         assertEquals("bar-1", subImp1.getModuleName());
         assertEquals("bar", subImp1.getPrefix());
-        assertEquals(Optional.of(QName.parseRevision("2000-01-01")), subImp1.getRevision());
+        assertEquals(Optional.of(Revision.valueOf("2000-01-01")), subImp1.getRevision());
     }
 }
index ec7158245a1acb6b8142e9ec2653d98183acf2d4..4d43ae0b9baec69e7468e624e6affab1b4c47201 100644 (file)
@@ -11,9 +11,9 @@ package org.opendaylight.yangtools.yang.stmt;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertSame;
 
-import java.util.Date;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.Deviation;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -27,8 +27,7 @@ public class Bug9242Test {
         final SchemaContext schemaContext = StmtTestUtils.parseYangSources("/bugs/bug9242/");
         assertNotNull(schemaContext);
 
-        final Date revision = QName.parseRevision("2017-10-13");
-
+        final Revision revision = Revision.valueOf("2017-10-13");
         final Module rootModule = schemaContext.findModule("root-module", revision).get();
         final Module impModule = schemaContext.findModule("imp-module", revision).get();
 
index 5dedf724d61368122aadd5263e6d6165b7bff18d..a26e407bbaea6aebcbc080f21d4c85b508b4deea 100644 (file)
@@ -15,6 +15,7 @@ import static org.junit.Assert.assertTrue;
 
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
@@ -28,7 +29,7 @@ public class Bug9244Test {
         final SchemaContext schemaContext = StmtTestUtils.parseYangSources("/bugs/bug9244/");
         assertNotNull(schemaContext);
 
-        final Module barModule = schemaContext.findModule("bar", QName.parseRevision("2017-10-13")).get();
+        final Module barModule = schemaContext.findModule("bar", Revision.valueOf("2017-10-13")).get();
         final ContainerSchemaNode barCont = (ContainerSchemaNode) barModule.getDataChildByName(
                 QName.create(barModule.getQNameModule(), "bar-cont"));
         assertNotNull(barCont);
index cd47bf687f929c26f08f74d5165cada4a4653bfa..f54bf7b6e9154b2ee2941e113c841f203763893e 100644 (file)
@@ -13,15 +13,13 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.net.URI;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -43,15 +41,13 @@ public class CaseStmtTest {
     @Before
     public void setup() throws Exception {
         schema = StmtTestUtils.parseYangSources("/case-test");
-        String date_s = "2015-09-09 00:00:00.0";
-        SimpleDateFormat dt = SimpleDateFormatUtil.getRevisionFormat();
-        Date date = dt.parse(date_s);
-        rootFoo = schema.findModule("foo", date).get();
-        rootBar = schema.findModule("bar", date).get();
+        Revision rev = Revision.valueOf("2015-09-09");
+        rootFoo = schema.findModule("foo", rev).get();
+        rootBar = schema.findModule("bar", rev).get();
         assertNotNull(rootFoo);
         assertNotNull(rootBar);
-        qnameFoo = QNameModule.create(URI.create("foo"), date);
-        qnameBar = QNameModule.create(URI.create("bar"), date);
+        qnameFoo = QNameModule.create(URI.create("foo"), rev);
+        qnameBar = QNameModule.create(URI.create("bar"), rev);
         assertNotNull(qnameFoo);
         assertNotNull(qnameBar);
     }
index 6119f70e594e2d0e4f80c1718a85f611e82be28f..8f71d192677958198d600d2e14de7257ee867de6 100644 (file)
@@ -12,13 +12,12 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.net.URI;
-import java.net.URISyntaxException;
-import java.text.ParseException;
 import java.util.List;
 import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
@@ -42,10 +41,9 @@ public class ControllerStmtParserTest {
         configModuleTest(context);
     }
 
-    private static void salDomBrokerImplModuleTest(final SchemaContext context)
-            throws ParseException {
+    private static void salDomBrokerImplModuleTest(final SchemaContext context) {
         final Module module = context.findModule("opendaylight-sal-dom-broker-impl",
-            QName.parseRevision("2013-10-28")).get();
+            Revision.valueOf("2013-10-28")).get();
 
         final Set<AugmentationSchema> augmentations = module.getAugmentations();
         boolean checked = false;
@@ -74,11 +72,10 @@ public class ControllerStmtParserTest {
         assertTrue(checked);
     }
 
-    private static void configModuleTest(final SchemaContext context) throws ParseException,
-            URISyntaxException {
-        final Module configModule = context.findModule("config", QName.parseRevision("2013-04-05")).get();
+    private static void configModuleTest(final SchemaContext context) {
+        final Module configModule = context.findModule("config", Revision.valueOf("2013-04-05")).get();
         final Module module = context.findModule("opendaylight-sal-dom-broker-impl",
-            QName.parseRevision("2013-10-28")).get();
+            Revision.valueOf("2013-10-28")).get();
 
         final DataSchemaNode dataNode = configModule.getDataChildByName(QName.create(configModule.getQNameModule(),
             "modules"));
@@ -138,9 +135,8 @@ public class ControllerStmtParserTest {
         assertEquals(1, typeUnknownSchemaNodes.size());
 
         final UnknownSchemaNode typeUnknownSchemaNode = typeUnknownSchemaNodes.get(0);
-        final QNameModule qNameModule = QNameModule
-                .create(new URI("urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom"),
-                    QName.parseRevision("2013-10-28"));
+        final QNameModule qNameModule = QNameModule.create(
+            URI.create("urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom"), Revision.valueOf("2013-10-28"));
         final QName qName = QName.create(qNameModule, "schema-service");
 
         assertEquals(qName, typeUnknownSchemaNode.getQName());
index c6b22da80057a37341cbcb8e27b5e2a5d2badedd..fbcc004257fac071eda5f1f024382325e950af22 100644 (file)
@@ -16,11 +16,11 @@ import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResour
 
 import java.text.ParseException;
 import java.util.Collection;
-import java.util.Date;
 import java.util.Set;
 import java.util.function.Predicate;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
@@ -303,8 +303,7 @@ public class DeclaredStatementsTest {
         final SchemaContext schemaContext = StmtTestUtils.parseYangSources(rootModule, importedModule);
         assertNotNull(schemaContext);
 
-        final Date revision = QName.parseRevision("2016-09-28");
-
+        final Revision revision = Revision.valueOf("2016-09-28");
         final Module testModule = schemaContext.findModule("root-module-declared-test", revision).get();
         assertNotNull(testModule);
 
index 5121250fefd7ba84ad14e0a3f346babc576ef20d..783d6fc62818e9edbd9c816bea6fac2ec14be5e4 100644 (file)
@@ -20,6 +20,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
@@ -43,7 +44,7 @@ public class DeviationResolutionTest {
                 "/deviation-resolution-test/deviation-not-supported");
         assertNotNull(schemaContext);
 
-        final Module importedModule = schemaContext.findModule("imported", QName.parseRevision("2017-01-20")).get();
+        final Module importedModule = schemaContext.findModule("imported", Revision.valueOf("2017-01-20")).get();
         final ContainerSchemaNode myContA = (ContainerSchemaNode) importedModule.getDataChildByName(
                 QName.create(importedModule.getQNameModule(), "my-cont-a"));
         assertNotNull(myContA);
@@ -71,7 +72,7 @@ public class DeviationResolutionTest {
                 sourceForResource("/deviation-resolution-test/deviation-add/bar.yang"));
         assertNotNull(schemaContext);
 
-        final Module barModule = schemaContext.findModule("bar", QName.parseRevision("2017-01-20")).get();
+        final Module barModule = schemaContext.findModule("bar", Revision.valueOf("2017-01-20")).get();
         final LeafListSchemaNode myLeafList = (LeafListSchemaNode) barModule.getDataChildByName(
                 QName.create(barModule.getQNameModule(), "my-leaf-list"));
         assertNotNull(myLeafList);
@@ -115,7 +116,7 @@ public class DeviationResolutionTest {
                 sourceForResource("/deviation-resolution-test/deviation-replace/bar.yang"));
         assertNotNull(schemaContext);
 
-        final Module barModule = schemaContext.findModule("bar", QName.parseRevision("2017-01-20")).get();
+        final Module barModule = schemaContext.findModule("bar", Revision.valueOf("2017-01-20")).get();
         assertNotNull(barModule);
 
         final LeafSchemaNode myLeaf = (LeafSchemaNode) barModule.getDataChildByName(
@@ -178,7 +179,7 @@ public class DeviationResolutionTest {
                 sourceForResource("/deviation-resolution-test/deviation-delete/bar.yang"));
         assertNotNull(schemaContext);
 
-        final Module barModule = schemaContext.findModule("bar", QName.parseRevision("2017-01-20")).get();
+        final Module barModule = schemaContext.findModule("bar", Revision.valueOf("2017-01-20")).get();
         final LeafSchemaNode myLeaf = (LeafSchemaNode) barModule.getDataChildByName(
                 QName.create(barModule.getQNameModule(), "my-leaf"));
         assertNotNull(myLeaf);
index 8fd0d4c75bb45fd4deecc144531031361c59fffe..3c779aba48e14917b35793aabd51a696662750e3 100644 (file)
@@ -18,7 +18,7 @@ import java.text.ParseException;
 import java.util.List;
 import java.util.Set;
 import org.junit.Test;
-import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.DeviateDefinition;
 import org.opendaylight.yangtools.yang.model.api.DeviateKind;
 import org.opendaylight.yangtools.yang.model.api.Deviation;
@@ -45,7 +45,7 @@ public class DeviationStmtTest {
         final SchemaContext schemaContext = reactor.buildEffective();
         assertNotNull(schemaContext);
 
-        Module testModule = schemaContext.findModule("foo", QName.parseRevision("2016-06-23")).get();
+        Module testModule = schemaContext.findModule("foo", Revision.valueOf("2016-06-23")).get();
         Set<Deviation> deviations = testModule.getDeviations();
         assertEquals(4, deviations.size());
 
@@ -82,7 +82,7 @@ public class DeviationStmtTest {
             }
         }
 
-        testModule = schemaContext.findModule("bar", QName.parseRevision("2016-09-22")).get();
+        testModule = schemaContext.findModule("bar", Revision.valueOf("2016-09-22")).get();
         assertNotNull(testModule);
 
         deviations = testModule.getDeviations();
index e3c4c1de23ebf4f227749630f0323aeaddc6516e..39a884dde2797f6aca7e73edda5a7c6cf41a7682 100644 (file)
@@ -13,13 +13,13 @@ import static org.junit.Assert.assertNotNull;
 import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResource;
 
 import java.net.URI;
-import java.util.Date;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
@@ -58,7 +58,7 @@ public class EffectiveModuleTest {
     private static final SchemaPath contSchemaPath = SchemaPath.create(true, cont);
     private static final SchemaPath feature1SchemaPath = SchemaPath.create(true, feature1);
 
-    private static final Date REVISION = QName.parseRevision("2000-01-01");
+    private static final Revision REVISION = Revision.valueOf("2000-01-01");
 
     @Test
     public void effectiveBuildTest() throws SourceException, ReactorException {
index 715a1500ae7dd6cb865637dfe7432f4bc719f560..10f09dbd84109ec1a5ba5eba46124a7bf615034e 100644 (file)
@@ -169,7 +169,7 @@ public class EffectiveModulesAndSubmodulesTest {
     private static void findModulesSubTest(final SchemaContext result, final Module root, final Module imported) {
         final Module foundRoot = result.findModule("root-module").get();
         final Set<Module> foundRoots = result.findModules(URI.create("root-module"));
-        final Module foundRoot3 = result.findModule(URI.create("root-module"), null).get();
+        final Module foundRoot3 = result.findModule(URI.create("root-module")).get();
 
         assertNotNull(foundRoot);
         assertNotNull(foundRoots);
@@ -185,7 +185,7 @@ public class EffectiveModulesAndSubmodulesTest {
 
         final Module foundImported = result.findModule("imported-module").get();
         final Set<Module> foundImporteds = result.findModules(URI.create("imported-module"));
-        final Module foundImported3 = result.findModule(URI.create("imported-module"), null).get();
+        final Module foundImported3 = result.findModule(URI.create("imported-module")).get();
 
         assertNotNull(foundImported);
         assertNotNull(foundImporteds);
index b677e71812a468db12ddff0096d03876b930a49c..c5dd31b6f9b5d27ab19d537bf99696c09a7af4ef 100644 (file)
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -78,8 +79,8 @@ public class EffectiveSchemaContextTest {
 
         assertNull(schemaContext.getDataChildByName(QName.create("foo-namespace", "2016-09-21", "foo-cont")));
 
-        assertFalse(schemaContext.findModule("foo", QName.parseRevision("2016-08-21")).isPresent());
-        assertFalse(schemaContext.findModule(URI.create("foo-namespace"), QName.parseRevision("2016-08-21"))
+        assertFalse(schemaContext.findModule("foo", Revision.valueOf("2016-08-21")).isPresent());
+        assertFalse(schemaContext.findModule(URI.create("foo-namespace"), Revision.valueOf("2016-08-21"))
             .isPresent());
 
         assertFalse(schemaContext.isAugmenting());
@@ -97,7 +98,7 @@ public class EffectiveSchemaContextTest {
         assertNotNull(schemaContext.getAvailableAugmentations());
         assertTrue(schemaContext.getAvailableAugmentations().isEmpty());
 
-        Module fooModule = schemaContext.findModule("foo", QName.parseRevision("2016-09-21")).get();
+        Module fooModule = schemaContext.findModule("foo", Revision.valueOf("2016-09-21")).get();
         assertEquals(3, schemaContext.getModules().size());
         assertEquals(3, ((EffectiveSchemaContext) schemaContext).getRootDeclaredStatements().size());
         assertEquals(3,((EffectiveSchemaContext) schemaContext).getRootEffectiveStatements().size());
index 2e7ca27eb13c2c72f56ae76232e25d0870892052..f92bc99d6c28389c1cdae1d299dcab14b33b9b9a 100644 (file)
@@ -24,6 +24,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
@@ -431,8 +432,8 @@ public class GroupingTest {
         assertNotNull(gz);
         assertNotNull(gzz);
 
-        final QNameModule expectedModule = QNameModule.create(
-            URI.create("urn:grouping:cascade-uses"), QName.parseRevision("2013-07-18"));
+        final QNameModule expectedModule = QNameModule.create(URI.create("urn:grouping:cascade-uses"),
+            Revision.valueOf("2013-07-18"));
         SchemaPath expectedPath;
 
         // grouping-U
index bda947e7a09fb742bb406eb17473699971dd2aee..67d03e70a0701cf40362db7dc445f5d0220679e4 100644 (file)
@@ -15,12 +15,12 @@ import static org.junit.Assert.assertTrue;
 import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResource;
 
 import java.net.URI;
-import java.util.Date;
 import java.util.Optional;
 import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
@@ -140,9 +140,9 @@ public class MoreRevisionsTest {
     private static void checkContentFullTest(final SchemaContext context) {
         URI yangTypesNS = URI.create("urn:ietf:params:xml:ns:yang:ietf-yang-types");
 
-        final Date rev20100924 = QName.parseRevision("2010-09-24");
-        final Date rev20130516 = QName.parseRevision("2013-05-16");
-        final Date rev20130715 = QName.parseRevision("2013-07-15");
+        final Revision rev20100924 = Revision.valueOf("2010-09-24");
+        final Revision rev20130516 = Revision.valueOf("2013-05-16");
+        final Revision rev20130715 = Revision.valueOf("2013-07-15");
 
         final QNameModule yangTypes_20100924 = QNameModule.create(yangTypesNS, rev20100924);
         final QNameModule yangTypes_20130516 = QNameModule.create(yangTypesNS, rev20130516);
@@ -163,9 +163,9 @@ public class MoreRevisionsTest {
         checkInterfacesModuleFullTest(context, rev20100924, dateTimeTypeDef_20100924);
     }
 
-    private static void checkInterfacesModuleFullTest(final SchemaContext context, final Date rev20100924,
+    private static void checkInterfacesModuleFullTest(final SchemaContext context, final Revision rev20100924,
             final QName dateTimeTypeDef_20100924) {
-        Date rev20121115 = QName.parseRevision("2012-11-15");
+        Revision rev20121115 = Revision.valueOf("2012-11-15");
 
         Module interfacesModule_20121115 = context.findModule("ietf-interfaces", rev20121115).get();
         Set<ModuleImport> imports = interfacesModule_20121115.getImports();
@@ -176,8 +176,8 @@ public class MoreRevisionsTest {
     }
 
     private static void checkNetconfMonitoringModuleFullTest(final SchemaContext context,
-            final Date rev20130715, final QName dateTimeTypeDef_20130715) {
-        Date rev20101004 = QName.parseRevision("2010-10-04");
+            final Revision rev20130715, final QName dateTimeTypeDef_20130715) {
+        Revision rev20101004 = Revision.valueOf("2010-10-04");
 
         Module monitoringModule_20101004 = context.findModule("ietf-netconf-monitoring", rev20101004).get();
         Set<ModuleImport> imports = monitoringModule_20101004.getImports();
@@ -203,9 +203,9 @@ public class MoreRevisionsTest {
     private static void checkContentSimpleTest(final SchemaContext context) {
         URI yangTypesNS = URI.create("urn:ietf:params:xml:ns:yang:ietf-yang-types");
 
-        final Date rev20100924 = QName.parseRevision("2010-09-24");
-        final Date rev20130516 = QName.parseRevision("2013-05-16");
-        final Date rev20130715 = QName.parseRevision("2013-07-15");
+        final Revision rev20100924 = Revision.valueOf("2010-09-24");
+        final Revision rev20130516 = Revision.valueOf("2013-05-16");
+        final Revision rev20130715 = Revision.valueOf("2013-07-15");
 
         final QNameModule yangTypes_20100924 = QNameModule.create(yangTypesNS, rev20100924);
         final QNameModule yangTypes_20130516 = QNameModule.create(yangTypesNS, rev20130516);
@@ -227,9 +227,9 @@ public class MoreRevisionsTest {
     }
 
     private static void checkInterfacesModuleSimpleTest(final SchemaContext context,
-            final Date rev20100924, final QName dateTimeTypeDef_20100924) {
+            final Revision rev20100924, final QName dateTimeTypeDef_20100924) {
         URI interfacesNS = URI.create("urn:ietf:params:xml:ns:yang:ietf-interfaces");
-        Date rev20121115 = QName.parseRevision("2012-11-15");
+        Revision rev20121115 = Revision.valueOf("2012-11-15");
         final QNameModule interfacesNS_20121115 = QNameModule.create(interfacesNS, rev20121115);
         QName lastChange = QName.create(interfacesNS_20121115, "last-change");
 
@@ -249,7 +249,7 @@ public class MoreRevisionsTest {
     }
 
     private static void checkNetconfMonitoringModuleSimpleTest(final SchemaContext context,
-            final Date rev20130715, final QName dateTimeTypeDef_20130715) {
+            final Revision rev20130715, final QName dateTimeTypeDef_20130715) {
         URI monitoringNS = URI.create("urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring");
         final QNameModule monitoring_19700101 = QNameModule.create(monitoringNS);
         QName lockedTime = QName.create(monitoring_19700101, "locked-time");
index 2e2709ab2cfeca73e9d3574ef1c0041a95049003..ed90b260589f3667570a3b4aa5b554d25ae95981 100644 (file)
@@ -18,6 +18,7 @@ import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResour
 import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -68,7 +69,7 @@ public class RpcStmtTest {
         anyXml = (AnyXmlSchemaNode) output.getDataChildByName(QName.create(testModule.getQNameModule(), "data"));
         assertNotNull(anyXml);
 
-        final Module fooModule = result.findModule("foo", QName.parseRevision("2016-09-23")).get();
+        final Module fooModule = result.findModule("foo", Revision.valueOf("2016-09-23")).get();
         final Set<RpcDefinition> rpcs = fooModule.getRpcs();
         assertEquals(2, rpcs.size());
 
@@ -106,7 +107,7 @@ public class RpcStmtTest {
         final SchemaContext schemaContext = StmtTestUtils.parseYangSource("/rpc-stmt-test/bar.yang");
         assertNotNull(schemaContext);
 
-        final Module barModule = schemaContext.findModule("bar", QName.parseRevision("2016-11-25")).get();
+        final Module barModule = schemaContext.findModule("bar", Revision.valueOf("2016-11-25")).get();
         final Set<RpcDefinition> rpcs = barModule.getRpcs();
         assertEquals(1, rpcs.size());
 
index 423a01f22534b9cfde7e6b27ab4e16b870d16b07..4ff689adbc1a371186de5c925f608204871e74a6 100644 (file)
@@ -24,6 +24,7 @@ import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -283,7 +284,7 @@ public class TypesResolutionTest {
 
         QName testedTypeQName = testedType.getQName();
         assertEquals(URI.create("urn:ietf:params:xml:ns:yang:iana-timezones"), testedTypeQName.getNamespace());
-        assertEquals(Optional.of(QName.parseRevision("2012-07-09")), testedTypeQName.getRevision());
+        assertEquals(Optional.of(Revision.valueOf("2012-07-09")), testedTypeQName.getRevision());
         assertEquals("iana-timezone", testedTypeQName.getLocalName());
 
         EnumTypeDefinition enumType = (EnumTypeDefinition) testedType.getBaseType();
@@ -315,7 +316,7 @@ public class TypesResolutionTest {
 
         QName testedTypeQName = testedType.getQName();
         assertEquals(URI.create("urn:ietf:params:xml:ns:yang:ietf-yang-types"), testedTypeQName.getNamespace());
-        assertEquals(Optional.of(QName.parseRevision("2010-09-24")), testedTypeQName.getRevision());
+        assertEquals(Optional.of(Revision.valueOf("2010-09-24")), testedTypeQName.getRevision());
         assertEquals("object-identifier-128", testedTypeQName.getLocalName());
 
         StringTypeDefinition testedTypeBase = testedType.getBaseType();
@@ -328,7 +329,7 @@ public class TypesResolutionTest {
 
         QName testedTypeBaseQName = testedTypeBase.getQName();
         assertEquals(URI.create("urn:ietf:params:xml:ns:yang:ietf-yang-types"), testedTypeBaseQName.getNamespace());
-        assertEquals(Optional.of(QName.parseRevision("2010-09-24")), testedTypeBaseQName.getRevision());
+        assertEquals(Optional.of(Revision.valueOf("2010-09-24")), testedTypeBaseQName.getRevision());
         assertEquals("object-identifier", testedTypeBaseQName.getLocalName());
     }
 
@@ -340,7 +341,7 @@ public class TypesResolutionTest {
         IdentityrefTypeDefinition baseType = (IdentityrefTypeDefinition) testedType.getBaseType();
         QName identity = baseType.getIdentity().getQName();
         assertEquals(URI.create("urn:custom.types.demo"), identity.getNamespace());
-        assertEquals(Optional.of(QName.parseRevision("2012-04-16")), identity.getRevision());
+        assertEquals(Optional.of(Revision.valueOf("2012-04-16")), identity.getRevision());
         assertEquals("service-type", identity.getLocalName());
 
         LeafSchemaNode type = (LeafSchemaNode) tested.getDataChildByName(QName.create(tested.getQNameModule(), "type"));
index 69da4c5cf44d57079904f45574fa0ef8a174faf5..7b5ea96f4059cffc6faea9cf465689bfeb5b1f8c 100644 (file)
@@ -23,6 +23,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -42,9 +43,9 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
 public class UsesAugmentTest {
 
     private static final QNameModule UG = QNameModule.create(
-        URI.create("urn:opendaylight:params:xml:ns:yang:uses-grouping"), QName.parseRevision("2013-07-30"));
+        URI.create("urn:opendaylight:params:xml:ns:yang:uses-grouping"), Revision.valueOf("2013-07-30"));
     private static final QNameModule GD = QNameModule.create(
-        URI.create("urn:opendaylight:params:xml:ns:yang:grouping-definitions"), QName.parseRevision("2013-09-04"));
+        URI.create("urn:opendaylight:params:xml:ns:yang:grouping-definitions"), Revision.valueOf("2013-09-04"));
 
     private SchemaContext context;
 
index 49b48f06a97fa032422cac4958584a8bfa3ea3fb..8ad658fdfd83ca5062b9e86056f32e529e7b5ef0 100644 (file)
@@ -16,12 +16,12 @@ import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResour
 
 import com.google.common.collect.ImmutableSet;
 import java.net.URI;
-import java.util.Date;
 import java.util.List;
 import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -54,7 +54,7 @@ public class YangDataExtensionTest {
     private static final StatementStreamSource IETF_RESTCONF_MODULE = sourceForResource(
             "/yang-data-extension-test/ietf-restconf.yang");
 
-    private static final Date REVISION = QName.parseRevision("2017-06-01");
+    private static final Revision REVISION = Revision.valueOf("2017-06-01");
     private static final QNameModule FOO_QNAMEMODULE = QNameModule.create(URI.create("foo"), REVISION);
     private static final QName MY_YANG_DATA_A = QName.create(FOO_QNAMEMODULE, "my-yang-data-a");
     private static final QName MY_YANG_DATA_B = QName.create(FOO_QNAMEMODULE, "my-yang-data-b");
index 5b70aa8f7ea8ce1e9f04790728b7eb7108ba8fd1..3041c8df0e85a285930809234adc16b7bbc4d332 100644 (file)
@@ -15,13 +15,13 @@ import static org.junit.Assert.assertTrue;
 
 import java.net.URI;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
@@ -37,8 +37,8 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.UsesNode;
 
 public class YangParserSimpleTest {
-    private static final QNameModule SN =
-            QNameModule.create(URI.create("urn:opendaylight:simple-nodes"), QName.parseRevision("2013-07-30"));
+    private static final QNameModule SN = QNameModule.create(URI.create("urn:opendaylight:simple-nodes"),
+        Revision.valueOf("2013-07-30"));
     private static final QName SN_NODES = QName.create(SN, "nodes");
     private static final SchemaPath SN_NODES_PATH = SchemaPath.create(true, SN_NODES);
 
@@ -189,7 +189,7 @@ public class YangParserSimpleTest {
     private static final URI NS = URI.create("urn:opendaylight:simple-nodes");
 
     private static SchemaPath createPath(final String... names) {
-        final Date rev = QName.parseRevision("2013-07-30");
+        final Revision rev = Revision.valueOf("2013-07-30");
         final List<QName> path = new ArrayList<>();
         for (final String name : names) {
             path.add(QName.create(NS, rev, name));
index 37cc03a72b7ba3b3764b461267e8da7e3d6f2df9..43e57f26a166d48d41d1b827f36064ad0fc18665 100644 (file)
@@ -30,6 +30,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
@@ -70,11 +71,11 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline
 
 public class YangParserTest {
     private static final QNameModule FOO = QNameModule.create(
-        URI.create("urn:opendaylight.foo"), QName.parseRevision("2013-02-27"));
+        URI.create("urn:opendaylight.foo"), Revision.valueOf("2013-02-27"));
     private static final QNameModule BAR = QNameModule.create(
-        URI.create("urn:opendaylight.bar"), QName.parseRevision("2013-07-03"));
+        URI.create("urn:opendaylight.bar"), Revision.valueOf("2013-07-03"));
     private static final QNameModule BAZ = QNameModule.create(
-        URI.create("urn:opendaylight.baz"), QName.parseRevision("2013-02-27"));
+        URI.create("urn:opendaylight.baz"), Revision.valueOf("2013-02-27"));
 
     private SchemaContext context;
     private Module foo;
@@ -109,7 +110,7 @@ public class YangParserTest {
 
         assertEquals("opendaylight", foo.getOrganization());
         assertEquals("http://www.opendaylight.org/", foo.getContact());
-        assertEquals(Optional.of(QName.parseRevision("2013-02-27")), foo.getRevision());
+        assertEquals(Optional.of(Revision.valueOf("2013-02-27")), foo.getRevision());
         assertNull(foo.getReference());
     }
 
index 3b3fe690fc07c7ec91bff2ad5d2fcc52167ccce1..a0f6d3e14c04a25a0b83fc23d8de1cf66b516ca3 100644 (file)
@@ -16,13 +16,13 @@ import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResour
 import com.google.common.collect.Iterables;
 import java.net.URI;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
@@ -50,7 +50,7 @@ public class YangParserWithContextTest {
     private static final URI T1_NS = URI.create("urn:simple.demo.test1");
     private static final URI T2_NS = URI.create("urn:simple.demo.test2");
     private static final URI T3_NS = URI.create("urn:simple.demo.test3");
-    private static final Date REV = QName.parseRevision("2013-06-18");
+    private static final Revision REV = Revision.valueOf("2013-06-18");
 
     private static final StatementStreamSource BAR = sourceForResource("/model/bar.yang");
     private static final StatementStreamSource BAZ = sourceForResource("/model/baz.yang");
@@ -79,7 +79,7 @@ public class YangParserWithContextTest {
 
         final SchemaContext context = reactor.buildEffective();
 
-        final Module module = context.findModule("test1", QName.parseRevision("2013-06-18")).get();
+        final Module module = context.findModule("test1", Revision.valueOf("2013-06-18")).get();
         final LeafSchemaNode leaf = (LeafSchemaNode) module.getDataChildByName(QName.create(module.getQNameModule(),
                 "id"));
 
@@ -87,13 +87,13 @@ public class YangParserWithContextTest {
         final UnsignedIntegerTypeDefinition leafType = (UnsignedIntegerTypeDefinition) leaf.getType();
         QName qname = leafType.getQName();
         assertEquals(URI.create("urn:simple.demo.test1"), qname.getNamespace());
-        assertEquals(Optional.of(QName.parseRevision("2013-06-18")), qname.getRevision());
+        assertEquals(Optional.of(Revision.valueOf("2013-06-18")), qname.getRevision());
         assertEquals("port-number", qname.getLocalName());
 
         final UnsignedIntegerTypeDefinition leafBaseType = leafType.getBaseType();
         qname = leafBaseType.getQName();
         assertEquals(URI.create("urn:ietf:params:xml:ns:yang:ietf-inet-types"), qname.getNamespace());
-        assertEquals(Optional.of(QName.parseRevision("2010-09-24")), qname.getRevision());
+        assertEquals(Optional.of(Revision.valueOf("2010-09-24")), qname.getRevision());
         assertEquals("port-number", qname.getLocalName());
 
         final UnsignedIntegerTypeDefinition dscpExt = (UnsignedIntegerTypeDefinition) TestUtils.findTypedef(
@@ -113,7 +113,7 @@ public class YangParserWithContextTest {
         reactor.addSources(BAZ, FOO, BAR, SUBFOO, test2);
         final SchemaContext context = reactor.buildEffective();
 
-        final Module testModule = context.findModule("test2", QName.parseRevision("2013-06-18")).get();
+        final Module testModule = context.findModule("test2", Revision.valueOf("2013-06-18")).get();
         final Module contextModule = context.findModules(URI.create("urn:opendaylight.baz")).iterator().next();
         assertNotNull(contextModule);
         final Set<GroupingDefinition> groupings = contextModule.getGroupings();
@@ -220,7 +220,7 @@ public class YangParserWithContextTest {
         reactor.addSources(BAZ, FOO, BAR, SUBFOO, test2);
         final SchemaContext context = reactor.buildEffective();
 
-        final Module module = context.findModule("test2", QName.parseRevision("2013-06-18")).get();
+        final Module module = context.findModule("test2", Revision.valueOf("2013-06-18")).get();
         final ContainerSchemaNode peer = (ContainerSchemaNode) module.getDataChildByName(QName.create(
                 module.getQNameModule(), "peer"));
         final ContainerSchemaNode destination = (ContainerSchemaNode) peer.getDataChildByName(QName.create(
@@ -231,8 +231,7 @@ public class YangParserWithContextTest {
 
         // test grouping path
         final List<QName> path = new ArrayList<>();
-        final QName qname = QName.create(URI.create("urn:opendaylight.baz"), QName.parseRevision("2013-02-27"),
-            "target");
+        final QName qname = QName.create(URI.create("urn:opendaylight.baz"), Revision.valueOf("2013-02-27"), "target");
         path.add(qname);
         final SchemaPath expectedPath = SchemaPath.create(path, true);
         assertEquals(expectedPath, usesNode.getGroupingPath());
@@ -297,20 +296,20 @@ public class YangParserWithContextTest {
         reactor.addSources(types, test3);
         final SchemaContext context = reactor.buildEffective();
 
-        final Module module = context.findModule("test3", QName.parseRevision("2013-06-18")).get();
+        final Module module = context.findModule("test3", Revision.valueOf("2013-06-18")).get();
         final Set<IdentitySchemaNode> identities = module.getIdentities();
         assertEquals(1, identities.size());
 
         final IdentitySchemaNode identity = identities.iterator().next();
         final QName idQName = identity.getQName();
         assertEquals(URI.create("urn:simple.demo.test3"), idQName.getNamespace());
-        assertEquals(Optional.of(QName.parseRevision("2013-06-18")), idQName.getRevision());
+        assertEquals(Optional.of(Revision.valueOf("2013-06-18")), idQName.getRevision());
         assertEquals("pt", idQName.getLocalName());
 
         final IdentitySchemaNode baseIdentity = Iterables.getOnlyElement(identity.getBaseIdentities());
         final QName idBaseQName = baseIdentity.getQName();
         assertEquals(URI.create("urn:custom.types.demo"), idBaseQName.getNamespace());
-        assertEquals(Optional.of(QName.parseRevision("2012-04-16")), idBaseQName.getRevision());
+        assertEquals(Optional.of(Revision.valueOf("2012-04-16")), idBaseQName.getRevision());
         assertEquals("service-type", idBaseQName.getLocalName());
     }
 
@@ -327,7 +326,7 @@ public class YangParserWithContextTest {
 
         final SchemaContext context = reactor.buildEffective();
 
-        final Module module = context.findModule("test3", QName.parseRevision("2013-06-18")).get();
+        final Module module = context.findModule("test3", Revision.valueOf("2013-06-18")).get();
         final ContainerSchemaNode network = (ContainerSchemaNode) module.getDataChildByName(QName.create(
                 module.getQNameModule(), "network"));
         final List<UnknownSchemaNode> unknownNodes = network.getUnknownSchemaNodes();
@@ -336,7 +335,7 @@ public class YangParserWithContextTest {
         final UnknownSchemaNode un = unknownNodes.get(0);
         final QName unType = un.getNodeType();
         assertEquals(URI.create("urn:custom.types.demo"), unType.getNamespace());
-        assertEquals(Optional.of(QName.parseRevision("2012-04-16")), unType.getRevision());
+        assertEquals(Optional.of(Revision.valueOf("2012-04-16")), unType.getRevision());
         assertEquals("mountpoint", unType.getLocalName());
         assertEquals("point", un.getNodeParameter());
         assertNotNull(un.getExtensionDefinition());
@@ -389,7 +388,7 @@ public class YangParserWithContextTest {
         reactor.addSources(bar, deviationTest);
         final SchemaContext context = reactor.buildEffective();
 
-        final Module testModule = context.findModule("deviation-test", QName.parseRevision("2013-02-27")).get();
+        final Module testModule = context.findModule("deviation-test", Revision.valueOf("2013-02-27")).get();
         final Set<Deviation> deviations = testModule.getDeviations();
         assertEquals(1, deviations.size());
         final Deviation dev = deviations.iterator().next();
@@ -397,7 +396,7 @@ public class YangParserWithContextTest {
         assertEquals("system/user ref", dev.getReference());
 
         final URI expectedNS = URI.create("urn:opendaylight.bar");
-        final Date expectedRev = QName.parseRevision("2013-07-03");
+        final Revision expectedRev = Revision.valueOf("2013-07-03");
         final List<QName> path = new ArrayList<>();
         path.add(QName.create(expectedNS, expectedRev, "interfaces"));
         path.add(QName.create(expectedNS, expectedRev, "ifEntry"));
index 3c8ff18beedc4a398bf28b7eb7ae536915054aa1..c285614482cd1ba806547cccc8e14a01fefee1d6 100644 (file)
@@ -13,6 +13,7 @@ import com.google.common.annotations.Beta;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
 import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 
 /**
@@ -38,7 +39,7 @@ public abstract class NamespaceKeyCriterion<K> {
 
         @Override
         public ModuleIdentifier select(final ModuleIdentifier first, final ModuleIdentifier second) {
-            return ModuleIdentifier.compareRevisions(first.getRevision(), second.getRevision()) >= 0 ? first : second;
+            return Revision.compare(first.getRevision(), second.getRevision()) >= 0 ? first : second;
         }
 
         @Override
index 1cdbff5883ccb96da7c82bffdf08d4775b91eeee..cd91b51cc29bff6cd87f44b3df9f78b2b4bdbcaa 100644 (file)
@@ -14,12 +14,12 @@ import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
-import java.util.Date;
+import java.util.Optional;
 import java.util.Set;
 import java.util.function.Predicate;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
@@ -553,25 +553,25 @@ public final class StmtContextUtils {
         }
 
         // creates SourceIdentifier for a submodule
-        final Date revision = getLatestRevision(root.declaredSubstatements());
-        return revision == null ? RevisionSourceIdentifier.create((String) root.getStatementArgument())
-                : RevisionSourceIdentifier.create((String) root.getStatementArgument(),
-                    SimpleDateFormatUtil.getRevisionFormat().format(revision));
+        final Optional<Revision> revision = getLatestRevision(root.declaredSubstatements());
+        return revision.isPresent()
+                ? RevisionSourceIdentifier.create((String) root.getStatementArgument(), revision.get().toString())
+                        : RevisionSourceIdentifier.create((String) root.getStatementArgument());
     }
 
-    public static Date getLatestRevision(final Iterable<? extends StmtContext<?, ?, ?>> subStmts) {
-        Date revision = null;
+    public static Optional<Revision> getLatestRevision(final Iterable<? extends StmtContext<?, ?, ?>> subStmts) {
+        Revision revision = null;
         for (final StmtContext<?, ?, ?> subStmt : subStmts) {
             if (subStmt.getPublicDefinition().getDeclaredRepresentationClass().isAssignableFrom(
                     RevisionStatement.class)) {
                 if (revision == null && subStmt.getStatementArgument() != null) {
-                    revision = (Date) subStmt.getStatementArgument();
+                    revision = (Revision) subStmt.getStatementArgument();
                 } else if (subStmt.getStatementArgument() != null
-                        && ((Date) subStmt.getStatementArgument()).compareTo(revision) > 0) {
-                    revision = (Date) subStmt.getStatementArgument();
+                        && ((Revision) subStmt.getStatementArgument()).compareTo(revision) > 0) {
+                    revision = (Revision) subStmt.getStatementArgument();
                 }
             }
         }
-        return revision;
+        return Optional.ofNullable(revision);
     }
 }