BUG-3263: Split out YangInstanceIdentifierBuilder 83/20683/2
authorRobert Varga <rovarga@cisco.com>
Mon, 18 May 2015 18:29:20 +0000 (20:29 +0200)
committerRobert Varga <rovarga@cisco.com>
Mon, 18 May 2015 23:47:20 +0000 (01:47 +0200)
The builder is not visible, so increase clarity by splitting it out into
its own file. This reduces clutter in YangInstanceIdentifier.

Change-Id: I9c3bcd141e54129777f0c8dd8efd7ce02ae5e8cc
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifierBuilder.java [new file with mode: 0644]

index 7a7ce6c28ae91e09ec43c4e34ba2fb10a4407fcb..9ead21a3884b036185e3a6c5f380aa5d0110d2a6 100644 (file)
@@ -12,7 +12,6 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -20,7 +19,6 @@ import java.io.ObjectStreamException;
 import java.io.Serializable;
 import java.lang.reflect.Array;
 import java.lang.reflect.Field;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -156,7 +154,7 @@ public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier
         return Iterables.getFirst(getReversePathArguments(), null);
     }
 
-    private YangInstanceIdentifier(final Iterable<PathArgument> path, final int hash) {
+    YangInstanceIdentifier(final Iterable<PathArgument> path, final int hash) {
         this.pathArguments = Preconditions.checkNotNull(path, "path must not be null.");
         this.hash = hash;
     }
@@ -308,7 +306,7 @@ public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier
      * @return new builder for InstanceIdentifier with empty path arguments.
      */
     public static InstanceIdentifierBuilder builder() {
-        return new BuilderImpl();
+        return new YangInstanceIdentifierBuilder();
     }
 
     /**
@@ -319,7 +317,7 @@ public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier
      * @return new builder for InstanceIdentifier with path arguments copied from original instance identifier.
      */
     public static InstanceIdentifierBuilder builder(final YangInstanceIdentifier origin) {
-        return new BuilderImpl(origin.getPathArguments(), origin.hashCode());
+        return new YangInstanceIdentifierBuilder(origin.getPathArguments(), origin.hashCode());
     }
 
     /**
@@ -703,56 +701,6 @@ public final class YangInstanceIdentifier implements Path<YangInstanceIdentifier
         }
     }
 
-    private static class BuilderImpl implements InstanceIdentifierBuilder {
-        private final HashCodeBuilder<PathArgument> hash;
-        private final List<PathArgument> path;
-
-        public BuilderImpl() {
-            this.hash = new HashCodeBuilder<>();
-            this.path = new ArrayList<>();
-        }
-
-        public BuilderImpl(final Iterable<PathArgument> prefix, final int hash) {
-            this.path = Lists.newArrayList(prefix);
-            this.hash = new HashCodeBuilder<>(hash);
-        }
-
-        @Override
-        public InstanceIdentifierBuilder node(final QName nodeType) {
-            final PathArgument arg = new NodeIdentifier(nodeType);
-            path.add(arg);
-            hash.addArgument(arg);
-            return this;
-        }
-
-        @Override
-        public InstanceIdentifierBuilder nodeWithKey(final QName nodeType, final QName key, final Object value) {
-            final PathArgument arg = new NodeIdentifierWithPredicates(nodeType, key, value);
-            path.add(arg);
-            hash.addArgument(arg);
-            return this;
-        }
-
-        @Override
-        public InstanceIdentifierBuilder nodeWithKey(final QName nodeType, final Map<QName, Object> keyValues) {
-            final PathArgument arg = new NodeIdentifierWithPredicates(nodeType, keyValues);
-            path.add(arg);
-            hash.addArgument(arg);
-            return this;
-        }
-
-        @Override
-        @Deprecated
-        public YangInstanceIdentifier toInstance() {
-            return build();
-        }
-
-        @Override
-        public YangInstanceIdentifier build() {
-            return new YangInstanceIdentifier(ImmutableList.copyOf(path), hash.build());
-        }
-    }
-
     @Override
     public boolean contains(final YangInstanceIdentifier other) {
         Preconditions.checkArgument(other != null, "other should not be null");
diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifierBuilder.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifierBuilder.java
new file mode 100644 (file)
index 0000000..d0ea997
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.data.api;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import org.opendaylight.yangtools.util.HashCodeBuilder;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.InstanceIdentifierBuilder;
+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.PathArgument;
+
+final class YangInstanceIdentifierBuilder implements InstanceIdentifierBuilder {
+    private final HashCodeBuilder<PathArgument> hash;
+    private final List<PathArgument> path;
+
+    public YangInstanceIdentifierBuilder() {
+        this.hash = new HashCodeBuilder<>();
+        this.path = new ArrayList<>();
+    }
+
+    public YangInstanceIdentifierBuilder(final Iterable<PathArgument> prefix, final int hash) {
+        this.path = Lists.newArrayList(prefix);
+        this.hash = new HashCodeBuilder<>(hash);
+    }
+
+    @Override
+    public InstanceIdentifierBuilder node(final QName nodeType) {
+        final PathArgument arg = new NodeIdentifier(nodeType);
+        path.add(arg);
+        hash.addArgument(arg);
+        return this;
+    }
+
+    @Override
+    public InstanceIdentifierBuilder nodeWithKey(final QName nodeType, final QName key, final Object value) {
+        final PathArgument arg = new NodeIdentifierWithPredicates(nodeType, key, value);
+        path.add(arg);
+        hash.addArgument(arg);
+        return this;
+    }
+
+    @Override
+    public InstanceIdentifierBuilder nodeWithKey(final QName nodeType, final Map<QName, Object> keyValues) {
+        final PathArgument arg = new NodeIdentifierWithPredicates(nodeType, keyValues);
+        path.add(arg);
+        hash.addArgument(arg);
+        return this;
+    }
+
+    @Override
+    @Deprecated
+    public YangInstanceIdentifier toInstance() {
+        return build();
+    }
+
+    @Override
+    public YangInstanceIdentifier build() {
+        return new YangInstanceIdentifier(ImmutableList.copyOf(path), hash.build());
+    }
+}
\ No newline at end of file