Add a revisionless QName constructor 90/18590/5
authorRobert Varga <rovarga@cisco.com>
Sat, 18 Apr 2015 21:31:38 +0000 (23:31 +0200)
committerRobert Varga <rovarga@cisco.com>
Mon, 20 Apr 2015 16:41:09 +0000 (18:41 +0200)
We already provide a string-based constructor, but that requires a valid
revision date. A QNameModule does not require a revision, which is
reflected by other factory methods. Add a two-string factory method,
which does not take a revision argument.

Change-Id: I7c9bd36fc972a843b6b45ef972400a8f77f9c9b0
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/QName.java

index dea39fdb4743e76cede31bbc856959ce723a9abd..bfdfdadc80d8721372e829c7b226eb58627e5cf1 100644 (file)
@@ -267,7 +267,7 @@ public final class QName implements Immutable, Serializable, Comparable<QName> {
      *            Local name part of QName. MUST NOT BE null.
      * @return
      * @throws NullPointerException
-     *             If any of paramaters is null.
+     *             If any of parameters is null.
      * @throws IllegalArgumentException
      *             If <code>namespace</code> is not valid URI or
      *             <code>revision</code> is not according to format
@@ -275,15 +275,34 @@ public final class QName implements Immutable, Serializable, Comparable<QName> {
      */
     public static QName create(final String namespace, final String revision, final String localName)
             throws IllegalArgumentException {
-        final URI namespaceUri;
+        final URI namespaceUri = parseNamespace(namespace);
+        final Date revisionDate = parseRevision(revision);
+        return create(namespaceUri, revisionDate, localName);
+    }
+
+    private static URI parseNamespace(final String namespace) {
         try {
-            namespaceUri = new URI(namespace);
+            return new URI(namespace);
         } catch (URISyntaxException ue) {
             throw new IllegalArgumentException(String.format("Namespace '%s' is not a valid URI", namespace), ue);
         }
+    }
 
-        Date revisionDate = parseRevision(revision);
-        return create(namespaceUri, revisionDate, localName);
+    /**
+     * Creates new QName.
+     *
+     * @param namespace
+     *            Namespace of QName, MUST NOT BE Null.
+     * @param localName
+     *            Local name part of QName. MUST NOT BE null.
+     * @return
+     * @throws NullPointerException
+     *             If any of parameters is null.
+     * @throws IllegalArgumentException
+     *             If <code>namespace</code> is not valid URI.
+     */
+    public static QName create(final String namespace, final String localName) throws IllegalArgumentException {
+        return create(parseNamespace(namespace), null, localName);
     }
 
     @Override