/** * Returns child list item modification if {@code child} was modified by this modification. * * @param caseType Case type class * @param listItem Type of list item - must be list item with key * @param listKey List item key * @return Modification of {@code child} if {@code child} was modified, null otherwise. * @throws IllegalArgumentException If supplied {@code listItem} class is not valid child according * to generated model. */ default <H extends ChoiceIn<? super T> & DataObject, C extends Identifiable<K> & ChildOf<? super H>, K extends Identifier<C>> DataObjectModification<C> getModifiedChildListItem( @Nonnull final Class<H> caseType, @Nonnull final Class<C> listItem, @Nonnull final K listKey) { return (DataObjectModification<C>) getModifiedChild(IdentifiableItem.of(caseType, listItem, listKey)); }
@Override @SuppressWarnings({ "rawtypes", "unchecked", "checkstyle:illegalCatch" }) public final IdentifiableItem<?, ?> deserialize(final NodeIdentifierWithPredicates input) { final Identifier<?> identifier; try { identifier = deserializeIdentifier(input.getKeyValues()); } catch (Throwable e) { Throwables.throwIfUnchecked(e); throw new RuntimeException(e); } return IdentifiableItem.of((Class) identifiable, (Identifier) identifier); }
/** * Create an InstanceIdentifierBuilder for a specific type of InstanceIdentifier which represents an * {@link IdentifiableItem} in a {@code grouping} used in the {@code case} statement. * * @param caze Choice case class * @param listItem list item class * @param listKey key value * @param <C> Case type * @param <N> List type * @param <K> List key * @return A new {@link InstanceIdentifierBuilder} * @throws NullPointerException if any argument is null */ public static <C extends ChoiceIn<? extends DataRoot> & DataObject, N extends Identifiable<K> & ChildOf<? super C>, K extends Identifier<N>> InstanceIdentifierBuilder<N> builder(final Class<C> caze, final Class<N> listItem, final K listKey) { return new InstanceIdentifierBuilderImpl<N>().addNode(IdentifiableItem.of(caze, listItem, listKey)); }
/** * Create an InstanceIdentifier for a child list item. This method is a more efficient equivalent to * {@code builder().child(caze, listItem, listKey).build()}. * * @param caze Choice case class * @param listItem List to append * @param listKey List key * @param <C> Case type * @param <N> List type * @param <K> Key type * @return An InstanceIdentifier. * @throws NullPointerException if any argument is null */ @SuppressWarnings("unchecked") public final <C extends ChoiceIn<? super T> & DataObject, K extends Identifier<N>, N extends Identifiable<K> & ChildOf<? super C>> KeyedInstanceIdentifier<N, K> child(final Class<C> caze, final Class<N> listItem, final K listKey) { return (KeyedInstanceIdentifier<N, K>) childIdentifier(IdentifiableItem.of(caze, listItem, listKey)); }
/** * Create an InstanceIdentifier for a child list item. This method is a more efficient equivalent to * {@code builder().child(listItem, listKey).build()}. * * @param listItem List to append * @param listKey List key * @param <N> List type * @param <K> Key type * @return An InstanceIdentifier. * @throws NullPointerException if any argument is null */ @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) { return (KeyedInstanceIdentifier<N, K>) childIdentifier(IdentifiableItem.of(listItem, listKey)); }
/** * Create an InstanceIdentifierBuilder for a specific type of InstanceIdentifier which represents an * {@link IdentifiableItem}. * * @param listItem list item class * @param listKey key value * @param <N> List type * @param <K> List key * @return A new {@link InstanceIdentifierBuilder} * @throws NullPointerException if any argument is null */ public static <N extends Identifiable<K> & ChildOf<? extends DataRoot>, K extends Identifier<N>> InstanceIdentifierBuilder<N> builder(final Class<N> listItem, final K listKey) { return new InstanceIdentifierBuilderImpl<N>().addNode(IdentifiableItem.of(listItem, listKey)); }
@SuppressWarnings({ "rawtypes", "unchecked" }) NodeIdentifierWithPredicates serialize(final Identifier<?> key) { return codec.serialize(IdentifiableItem.of((Class)getBindingClass(), (Identifier)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(IdentifiableItem.of(listItem, listKey)); }
@Override @SuppressWarnings("unchecked") public <H extends ChoiceIn<? super T> & DataObject, C extends Identifiable<K> & ChildOf<? super H>, K extends Identifier<C>> DataObjectModification<C> getModifiedChildListItem(final Class<H> caseType, final Class<C> listItem, final K listKey) { return (DataObjectModification<C>) getModifiedChild(IdentifiableItem.of(caseType, 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(IdentifiableItem.of(listItem, listKey)); }
@Override public final InstanceIdentifierBuilder<T> builder() { return new InstanceIdentifierBuilderImpl<>(IdentifiableItem.of(getTargetType(), key), pathArguments, hashCode(), isWildcarded()); }
@SuppressWarnings({"unchecked","rawtypes"}) public static IdentifiableItem<?, ?> newIdentifiableItem(final Class<?> type, final Object key) { return IdentifiableItem.of((Class)type, (Identifier)key); } }
@Override 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)); }