/** * Create IdentifiableItem from target type of provided ID with provided key. */ @Nonnull public static <D extends DataObject & Identifiable<K>, K extends Identifier<D>> InstanceIdentifier.IdentifiableItem<D, K> getCurrentIdItem( @Nonnull final InstanceIdentifier<D> id, final K key) { return new InstanceIdentifier.IdentifiableItem<>(id.getTargetType(), key); }
@SuppressWarnings("unchecked") <N extends DataObject & Identifiable<K>, K extends Identifier<N>> InstanceIdentifierBuilderImpl<N> addNode(final Class<N> listItem, final K listKey) { arg = new IdentifiableItem<N, K>(listItem, listKey); hashBuilder.addArgument(arg); pathBuilder.add(arg); return (InstanceIdentifierBuilderImpl<N>) this; }
@Override @SuppressWarnings("unchecked") protected InstanceIdentifier<D> getSpecificId(@Nonnull final InstanceIdentifier<? extends DataObject> currentId, @Nonnull final D current) { final InstanceIdentifier<D> id = (InstanceIdentifier<D>) currentId; // Make sure the key is present if (isWildcarded(id)) { return RWUtils.replaceLastInId(id, new InstanceIdentifier.IdentifiableItem<>(id.getTargetType(), current.key())); } else { return id; } }
@Override public final InstanceIdentifierBuilder<T> builder() { return new InstanceIdentifierBuilderImpl<T>(new InstanceIdentifier.IdentifiableItem<T, K>(getTargetType(), key), pathArguments, hashCode(), isWildcarded()); }
/** * Return an IdentifiableItem instance backed by the specified class with specified key. * * @param type Backing class * @param key Key * @param <T> List type * @param <I> Key type * @return An IdentifiableItem * @throws NullPointerException if any argument is null. */ public static <T extends Identifiable<I> & DataObject, I extends Identifier<T>> IdentifiableItem<T, I> of( final Class<T> type, final I key) { return new IdentifiableItem<>(type, key); }
@Override @SuppressWarnings("unchecked") public <C extends Identifiable<K> & ChildOf<? super T>, K extends Identifier<C>> DataObjectModification<C> getModifiedChildListItem( final Class<C> listItem, final K listKey) { return (DataObjectModification<C>) getModifiedChild(new InstanceIdentifier.IdentifiableItem<>(listItem, listKey)); }
@SuppressWarnings({"unchecked","rawtypes"}) public static IdentifiableItem<?, ?> newIdentifiableItem(Class<?> type, Object key) { Class<? extends Identifiable<?>> identifiableType = (Class<? extends Identifiable<?>>) type; Identifier<? extends Identifiable<?>> identifier = (Identifier<? extends Identifiable<?>>) key; return new IdentifiableItem(identifiableType,identifier); } }
@SuppressWarnings("unchecked") public final <N extends Identifiable<K> & ChildOf<? super T>, K extends Identifier<N>> KeyedInstanceIdentifier<N, K> child( final Class<N> listItem, final K listKey) { final PathArgument arg = new IdentifiableItem<>(listItem, listKey); return (KeyedInstanceIdentifier<N, K>) childIdentifier(arg); }