This method always returns @NonNull, document that. Also improve the IAE
thrown on mismatched input and eliminate
SchemaRootCodecContext.create().
Change-Id: Icbd36df64fb5027698a80bd0ba0984b9f55777d4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
private final @NonNull InstanceIdentifierCodec instanceIdentifierCodec;
private final @NonNull IdentityCodec identityCodec;
private final @NonNull BindingRuntimeContext context;
private final @NonNull InstanceIdentifierCodec instanceIdentifierCodec;
private final @NonNull IdentityCodec identityCodec;
private final @NonNull BindingRuntimeContext context;
- private final SchemaRootCodecContext<?> root;
+ private final @NonNull SchemaRootCodecContext<?> root;
public BindingCodecContext() {
this(ServiceLoader.load(BindingRuntimeContext.class).findFirst()
public BindingCodecContext() {
this(ServiceLoader.load(BindingRuntimeContext.class).findFirst()
public BindingCodecContext(final BindingRuntimeContext context) {
this.context = requireNonNull(context, "Binding Runtime Context is required.");
public BindingCodecContext(final BindingRuntimeContext context) {
this.context = requireNonNull(context, "Binding Runtime Context is required.");
- root = SchemaRootCodecContext.create(this);
+ root = new SchemaRootCodecContext<>(this);
identityCodec = new IdentityCodec(context);
instanceIdentifierCodec = new InstanceIdentifierCodec(this);
}
identityCodec = new IdentityCodec(context);
instanceIdentifierCodec = new InstanceIdentifierCodec(this);
}
return new BindingToNormalizedStreamWriter(getActionCodec(action).output(), domWriter);
}
return new BindingToNormalizedStreamWriter(getActionCodec(action).output(), domWriter);
}
- DataContainerCodecContext<?,?> getCodecContextNode(final InstanceIdentifier<?> binding,
+ @NonNull DataContainerCodecContext<?,?> getCodecContextNode(final InstanceIdentifier<?> binding,
final List<YangInstanceIdentifier.PathArgument> builder) {
final List<YangInstanceIdentifier.PathArgument> builder) {
- DataContainerCodecContext<?,?> currentNode = root;
- for (final InstanceIdentifier.PathArgument bindingArg : binding.getPathArguments()) {
- currentNode = currentNode.bindingPathArgumentChild(bindingArg, builder);
- checkArgument(currentNode != null, "Supplied Instance Identifier %s is not valid.", binding);
+ DataContainerCodecContext<?, ?> current = root;
+ for (var bindingArg : binding.getPathArguments()) {
+ final var next = current.bindingPathArgumentChild(bindingArg, builder);
+ if (next == null) {
+ throw new IllegalArgumentException("%s is not valid: parent %s does not have a child %s".formatted(
+ binding, current.bindingArg(), bindingArg));
+ }
+ current = next;
- private SchemaRootCodecContext(final DataContainerCodecPrototype<BindingRuntimeTypes> dataPrototype) {
- super(dataPrototype);
- }
-
- /**
- * Creates RootNode from supplied CodecContextFactory.
- *
- * @param factory
- * CodecContextFactory
- * @return A new root node
- */
- static SchemaRootCodecContext<?> create(final CodecContextFactory factory) {
- return new SchemaRootCodecContext<>(DataContainerCodecPrototype.rootPrototype(factory));
+ SchemaRootCodecContext(final CodecContextFactory factory) {
+ super(DataContainerCodecPrototype.rootPrototype(factory));