From: Robert Varga Date: Mon, 18 May 2015 18:29:20 +0000 (+0200) Subject: BUG-3263: Split out YangInstanceIdentifierBuilder X-Git-Tag: release/lithium~84 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=afbeab40f406b932a44451d9a7fb8482dbb6d09d;p=yangtools.git BUG-3263: Split out YangInstanceIdentifierBuilder 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 --- diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java index 7a7ce6c28a..9ead21a388 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java @@ -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 path, final int hash) { + YangInstanceIdentifier(final Iterable 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 hash; - private final List path; - - public BuilderImpl() { - this.hash = new HashCodeBuilder<>(); - this.path = new ArrayList<>(); - } - - public BuilderImpl(final Iterable 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 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 index 0000000000..d0ea997f23 --- /dev/null +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifierBuilder.java @@ -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 hash; + private final List path; + + public YangInstanceIdentifierBuilder() { + this.hash = new HashCodeBuilder<>(); + this.path = new ArrayList<>(); + } + + public YangInstanceIdentifierBuilder(final Iterable 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 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