Merge "Bug 2366: Introducing support for statement ANTLR4 parser as defined in RFC602...
[yangtools.git] / yang / yang-data-api / src / main / java / org / opendaylight / yangtools / yang / data / api / YangInstanceIdentifier.java
index dfd623fa84021d0452266c6941034eeabe629b70..62c876b530495e8cdf151e4585f45a7216a4a577 100644 (file)
@@ -16,6 +16,7 @@ import com.google.common.collect.Lists;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.io.ObjectStreamException;
 import java.io.Serializable;
 import java.lang.reflect.Array;
 import java.lang.reflect.Field;
@@ -67,7 +68,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
  * </ul>
  *
  *
- * @see http://tools.ietf.org/html/rfc6020#section-9.13
+ * @see <a href="http://tools.ietf.org/html/rfc6020#section-9.13">RFC6020</a>
  */
 public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier>, Immutable, Serializable {
     @SuppressWarnings("rawtypes")
@@ -161,7 +162,7 @@ public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier
             hash.addArgument(a);
         }
 
-        return new YangInstanceIdentifier(path, hash.toInstance());
+        return new YangInstanceIdentifier(path, hash.build());
     }
 
     public static final YangInstanceIdentifier create(final Iterable<? extends PathArgument> path) {
@@ -316,19 +317,6 @@ public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier
         return new BuilderImpl(origin.getPathArguments(), origin.hashCode());
     }
 
-    /**
-     * Returns new builder for InstanceIdentifier with first path argument set to {@link NodeIdentifier}.
-     *
-     * @param node QName of first {@link NodeIdentifier} path argument.
-     * @return  new builder for InstanceIdentifier with first path argument set to {@link NodeIdentifier}.
-     *
-     * @deprecated Either use {@link #node(QName)} or instantiate an intermediate builder.
-     */
-    @Deprecated
-    public static InstanceIdentifierBuilder builder(final QName node) {
-        return builder().node(node);
-    }
-
     /**
      * Path argument / component of InstanceIdentifier
      *
@@ -440,11 +428,7 @@ public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier
     }
 
     /**
-     *
      * Fluent Builder of Instance Identifier instances
-     *
-     * @
-     *
      */
     public interface InstanceIdentifierBuilder extends Builder<YangInstanceIdentifier> {
         /**
@@ -480,7 +464,14 @@ public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier
          *
          * @return {@link YangInstanceIdentifier}
          */
+        @Override
         YangInstanceIdentifier build();
+
+        /*
+         * @deprecated use #build()
+         */
+        @Deprecated
+        YangInstanceIdentifier toInstance();
     }
 
     /**
@@ -620,7 +611,7 @@ public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier
      * / module to the target node.
      *
      *
-     * @see http://tools.ietf.org/html/rfc6020#section-7.15
+     * @see <a href="http://tools.ietf.org/html/rfc6020#section-7.15">RFC6020</a>
      */
     public static final class AugmentationIdentifier implements PathArgument {
         private static final long serialVersionUID = -8122335594681936939L;
@@ -644,18 +635,6 @@ public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier
             this.childNames = ImmutableSet.copyOf(childNames);
         }
 
-        /**
-         * Augmentation node has no QName
-         *
-         * @deprecated Use
-         *             {@link AugmentationIdentifier#AugmentationIdentifier(Set)}
-         *             instead.
-         */
-        @Deprecated
-        public AugmentationIdentifier(final QName nodeType, final Set<QName> childNames) {
-            this(childNames);
-        }
-
         /**
          * Returns set of all possible child nodes
          *
@@ -767,7 +746,7 @@ public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier
 
         @Override
         public YangInstanceIdentifier build() {
-            return new YangInstanceIdentifier(ImmutableList.copyOf(path), hash.toInstance());
+            return new YangInstanceIdentifier(ImmutableList.copyOf(path), hash.build());
         }
     }
 
@@ -830,6 +809,10 @@ public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier
         }
     }
 
+    private Object readResolve() throws ObjectStreamException {
+        return legacyPath.isEmpty() ? EMPTY : this;
+    }
+
     private void writeObject(final ObjectOutputStream outputStream) throws IOException {
         /*
          * This may look strange, but what we are doing here is side-stepping the fact