private final MethodHandle ctorInvoker;
private final MethodHandle ctor;
- public IdentifiableItemCodec(final ListSchemaNode schema, final Class<? extends Identifier<?>> keyClass,
+ IdentifiableItemCodec(final ListSchemaNode schema, final Class<? extends Identifier<?>> keyClass,
final Class<?> identifiable, final Map<QName, ValueContext> keyValueContexts) {
this.schema = schema;
this.identifiable = identifiable;
try {
ctor = MethodHandles.publicLookup().unreflectConstructor(getConstructor(keyClass));
} catch (IllegalAccessException e) {
- throw new IllegalArgumentException("Missing construct in class " + keyClass);
+ throw new IllegalArgumentException("Missing constructor in class " + keyClass, e);
}
final MethodHandle inv = MethodHandles.spreadInvoker(ctor.type(), 0);
this.ctorInvoker = inv.asType(inv.type().changeReturnType(Identifier.class));
}
@Override
+ @SuppressWarnings("checkstyle:illegalCatch")
public IdentifiableItem<?, ?> deserialize(final NodeIdentifierWithPredicates input) {
final Object[] bindingValues = new Object[keysInBindingOrder.size()];
int offset = 0;