*/
public static <T extends ChildOf<? extends DataRoot>> @NonNull InstanceIdentifierBuilder<T> builder(
final Class<T> container) {
- return new InstanceIdentifierBuilderImpl<T>().addWildNode(Item.of(container));
+ return new InstanceIdentifierBuilderImpl<>(Item.of(container));
}
/**
*/
public static <C extends ChoiceIn<? extends DataRoot> & DataObject, T extends ChildOf<? super C>>
@NonNull InstanceIdentifierBuilder<T> builder(final Class<C> caze, final Class<T> container) {
- return new InstanceIdentifierBuilderImpl<T>().addWildNode(Item.of(caze, container));
+ return new InstanceIdentifierBuilderImpl<>(Item.of(caze, container));
}
/**
public static <N extends Identifiable<K> & ChildOf<? extends DataRoot>,
K extends Identifier<N>> @NonNull InstanceIdentifierBuilder<N> builder(final Class<N> listItem,
final K listKey) {
- return new InstanceIdentifierBuilderImpl<N>().addNode(IdentifiableItem.of(listItem, listKey));
+ return new InstanceIdentifierBuilderImpl<>(IdentifiableItem.of(listItem, listKey));
}
/**
N extends Identifiable<K> & ChildOf<? super C>, K extends Identifier<N>>
@NonNull InstanceIdentifierBuilder<N> builder(final Class<C> caze, final Class<N> listItem,
final K listKey) {
- return new InstanceIdentifierBuilderImpl<N>().addNode(IdentifiableItem.of(caze, listItem, listKey));
+ return new InstanceIdentifierBuilderImpl<>(IdentifiableItem.of(caze, listItem, listKey));
}
public static <R extends DataRoot & DataObject, T extends ChildOf<? super R>>
@NonNull InstanceIdentifierBuilder<T> builderOfInherited(final Class<R> root, final Class<T> container) {
// FIXME: we are losing root identity, hence namespaces may not work correctly
- return new InstanceIdentifierBuilderImpl<T>().addWildNode(Item.of(container));
+ return new InstanceIdentifierBuilderImpl<>(Item.of(container));
}
public static <R extends DataRoot & DataObject, C extends ChoiceIn<? super R> & DataObject,
@NonNull InstanceIdentifierBuilder<T> builderOfInherited(final Class<R> root,
final Class<C> caze, final Class<T> container) {
// FIXME: we are losing root identity, hence namespaces may not work correctly
- return new InstanceIdentifierBuilderImpl<T>().addWildNode(Item.of(caze, container));
+ return new InstanceIdentifierBuilderImpl<>(Item.of(caze, container));
}
public static <R extends DataRoot & DataObject, N extends Identifiable<K> & ChildOf<? super R>,
@NonNull InstanceIdentifierBuilder<N> builderOfInherited(final Class<R> root,
final Class<N> listItem, final K listKey) {
// FIXME: we are losing root identity, hence namespaces may not work correctly
- return new InstanceIdentifierBuilderImpl<N>().addNode(IdentifiableItem.of(listItem, listKey));
+ return new InstanceIdentifierBuilderImpl<>(IdentifiableItem.of(listItem, listKey));
}
public static <R extends DataRoot & DataObject, C extends ChoiceIn<? super R> & DataObject,
@NonNull InstanceIdentifierBuilder<N> builderOfInherited(final Class<R> root,
final Class<C> caze, final Class<N> listItem, final K listKey) {
// FIXME: we are losing root identity, hence namespaces may not work correctly
- return new InstanceIdentifierBuilderImpl<N>().addNode(IdentifiableItem.of(caze, listItem, listKey));
+ return new InstanceIdentifierBuilderImpl<>(IdentifiableItem.of(caze, listItem, listKey));
}
/**
*/
package org.opendaylight.yangtools.yang.binding;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
private final ImmutableList.Builder<PathArgument> pathBuilder = ImmutableList.builder();
private final HashCodeBuilder<PathArgument> hashBuilder;
private final Iterable<? extends PathArgument> basePath;
- private boolean wildcard = false;
- private PathArgument arg = null;
+ private boolean wildcard;
+ private PathArgument arg;
+
+ private InstanceIdentifierBuilderImpl(final PathArgument item) {
+ hashBuilder = new HashCodeBuilder<>();
+ basePath = null;
+ arg = requireNonNull(item);
+ hashBuilder.addArgument(item);
+ pathBuilder.add(item);
+ wildcard = false;
+ }
+
+ InstanceIdentifierBuilderImpl(final IdentifiableItem<? super T, ?> item) {
+ this((PathArgument) item);
+ }
- InstanceIdentifierBuilderImpl() {
- this.hashBuilder = new HashCodeBuilder<>();
- this.basePath = null;
+ InstanceIdentifierBuilderImpl(final Item<T> item) {
+ this((PathArgument) item);
+ if (Identifiable.class.isAssignableFrom(item.getType())) {
+ wildcard = true;
+ }
}
InstanceIdentifierBuilderImpl(final PathArgument item, final Iterable<? extends PathArgument> pathArguments,
final int hash, final boolean wildcard) {
- this.hashBuilder = new HashCodeBuilder<>(hash);
- this.basePath = pathArguments;
+ hashBuilder = new HashCodeBuilder<>(hash);
+ basePath = pathArguments;
this.wildcard = wildcard;
- this.arg = item;
+ arg = item;
}
@Override
return InstanceIdentifier.trustedCreate(arg, pathArguments, hashBuilder.build(), wildcard);
}
- <N extends DataObject> @NonNull InstanceIdentifierBuilderImpl<N> addWildNode(final PathArgument newArg) {
+ private <N extends DataObject> @NonNull InstanceIdentifierBuilderImpl<N> addWildNode(final PathArgument newArg) {
if (Identifiable.class.isAssignableFrom(newArg.getType())) {
wildcard = true;
}
}
@SuppressWarnings("unchecked")
- <N extends DataObject> @NonNull InstanceIdentifierBuilderImpl<N> addNode(final PathArgument newArg) {
+ private <N extends DataObject> @NonNull InstanceIdentifierBuilderImpl<N> addNode(final PathArgument newArg) {
arg = newArg;
hashBuilder.addArgument(newArg);
pathBuilder.add(newArg);