/**
* A combination of an {@link Action} class and its corresponding instantiation wildcard, expressed as
- * an {@link InstanceIdentifier}. This glue is required because action interfaces are generated at the place of their
+ * an {@link InstanceIdentifier}. This means that {@code list}s are treated exactly as @{code container}s are, e.g.
+ * without a key value specification.
+ *
+ * <p>
+ * This glue is required because action interfaces are generated at the place of their
* definition, most importantly in {@code grouping} and we actually need to bind to a particular instantiation (e.g. a
* place where {@code uses} references that grouping).
*
* @param <P> Action parent type
*/
@Beta
-public final class ActionSpec<A extends Action<InstanceIdentifier<P>, ?, ?>, P extends DataObject>
+public final class ActionSpec<A extends Action<? extends InstanceIdentifier<P>, ?, ?>, P extends DataObject>
implements Immutable {
private final @NonNull InstanceIdentifier<P> path;
private final @NonNull Class<A> type;
return castThis();
}
- public <A extends Action<InstanceIdentifier<P>, ?, ?>> @NonNull ActionSpec<A, P> build(final Class<A> type) {
+ public <A extends Action<? extends InstanceIdentifier<P>, ?, ?>> @NonNull ActionSpec<A, P> build(
+ final Class<A> type) {
return new ActionSpec<>(type, pathBuilder.build());
}