import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import java.util.Objects;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.util.HashCodeBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
return true;
}
if (obj instanceof InstanceIdentifierBuilderImpl) {
- InstanceIdentifierBuilderImpl<T> otherBuilder = (InstanceIdentifierBuilderImpl<T>) obj;
+ @SuppressWarnings("unchecked")
+ final InstanceIdentifierBuilderImpl<T> otherBuilder = (InstanceIdentifierBuilderImpl<T>) obj;
return wildcard == otherBuilder.wildcard && Objects.equals(basePath, otherBuilder.basePath)
&& Objects.equals(arg, otherBuilder.arg)
&& Objects.equals(hashBuilder.build(), otherBuilder.hashBuilder.build());
return false;
}
- @SuppressWarnings("unchecked")
- <N extends DataObject> InstanceIdentifierBuilderImpl<N> addNode(final Class<N> container) {
- arg = new Item<>(container);
- hashBuilder.addArgument(arg);
- pathBuilder.add(arg);
-
- if (Identifiable.class.isAssignableFrom(container)) {
- wildcard = true;
- }
-
- return (InstanceIdentifierBuilderImpl<N>) this;
+ @Override
+ public <N extends ChildOf<? super T>> InstanceIdentifierBuilderImpl<N> child(final Class<N> container) {
+ return addNode(container);
}
- @SuppressWarnings("unchecked")
- <N extends DataObject & Identifiable<K>, K extends Identifier<N>> InstanceIdentifierBuilderImpl<N> addNode(
- final Class<N> listItem, final K listKey) {
- arg = new IdentifiableItem<>(listItem, listKey);
- hashBuilder.addArgument(arg);
- pathBuilder.add(arg);
- return (InstanceIdentifierBuilderImpl<N>) this;
+ @Override
+ public <C extends ChoiceIn<? super T> & DataObject, N extends ChildOf<? super C>> InstanceIdentifierBuilder<N>
+ child(final Class<C> caze, final Class<N> container) {
+ return addWildNode(Item.of(caze, container));
}
@Override
- public <N extends ChildOf<? super T>> InstanceIdentifierBuilderImpl<N> child(final Class<N> container) {
- return addNode(container);
+ public <N extends Identifiable<K> & ChildOf<? super T>, K extends Identifier<N>> InstanceIdentifierBuilderImpl<N>
+ child(final Class<@NonNull N> listItem, final K listKey) {
+ return addNode(IdentifiableItem.of(listItem, listKey));
}
@Override
- public <N extends Identifiable<K> & ChildOf<? super T>, K extends Identifier<N>> InstanceIdentifierBuilderImpl<N>
- child(final Class<N> listItem, final K listKey) {
- return addNode(listItem, listKey);
+ public <C extends ChoiceIn<? super T> & DataObject, K extends Identifier<N>,
+ N extends Identifiable<K> & ChildOf<? super C>> InstanceIdentifierBuilder<N> child(final Class<C> caze,
+ final Class<N> listItem, final K listKey) {
+ return addNode(IdentifiableItem.of(caze, listItem, listKey));
}
/**
pathArguments = Iterables.concat(basePath, pathBuilder.build());
}
- @SuppressWarnings("unchecked")
- final InstanceIdentifier<T> ret = (InstanceIdentifier<T>) InstanceIdentifier.trustedCreate(arg, pathArguments,
- hashBuilder.build(), wildcard);
- return ret;
+ return InstanceIdentifier.trustedCreate(arg, pathArguments, hashBuilder.build(), wildcard);
}
- /**
- * Build the resulting InstanceIdentifier.
- *
- * @deprecated Use #build() instead.
- */
- @Override
- @Deprecated
- public InstanceIdentifier<T> toInstance() {
- return build();
+ <N extends DataObject> @NonNull InstanceIdentifierBuilderImpl<N> addWildNode(final PathArgument newArg) {
+ if (Identifiable.class.isAssignableFrom(newArg.getType())) {
+ wildcard = true;
+ }
+ return addNode(newArg);
+ }
+
+ @SuppressWarnings("unchecked")
+ <N extends DataObject> @NonNull InstanceIdentifierBuilderImpl<N> addNode(final PathArgument newArg) {
+ arg = newArg;
+ hashBuilder.addArgument(newArg);
+ pathBuilder.add(newArg);
+ return (InstanceIdentifierBuilderImpl<N>) this;
+ }
+
+ private <N extends DataObject> @NonNull InstanceIdentifierBuilderImpl<N> addNode(final Class<N> container) {
+ return addWildNode(Item.of(container));
}
}