final InstanceIdentifier<?> path, final NormalizedNodeStreamWriter domWriter) {
final List<YangInstanceIdentifier.PathArgument> yangArgs = new LinkedList<>();
final DataContainerCodecContext<?,?> codecContext = getCodecContextNode(path, yangArgs);
- return Map.entry(YangInstanceIdentifier.create(yangArgs), codecContext.createWriter(domWriter));
+ return Map.entry(YangInstanceIdentifier.create(yangArgs),
+ new BindingToNormalizedStreamWriter(codecContext, domWriter));
}
@Override
public BindingStreamEventWriter newWriter(final InstanceIdentifier<?> path,
final NormalizedNodeStreamWriter domWriter) {
- return getCodecContextNode(path, null).createWriter(domWriter);
+ return new BindingToNormalizedStreamWriter(getCodecContextNode(path, null), domWriter);
}
@Override
public BindingStreamEventWriter newRpcWriter(final Class<? extends DataContainer> rpcInputOrOutput,
final NormalizedNodeStreamWriter domWriter) {
- return root.getRpc(rpcInputOrOutput).createWriter(domWriter);
+ return new BindingToNormalizedStreamWriter(root.getRpc(rpcInputOrOutput), domWriter);
}
@Override
public BindingStreamEventWriter newNotificationWriter(final Class<? extends Notification<?>> notification,
final NormalizedNodeStreamWriter domWriter) {
- return root.getNotification(notification).createWriter(domWriter);
+ return new BindingToNormalizedStreamWriter(root.getNotification(notification), domWriter);
}
@Override
public BindingStreamEventWriter newActionInputWriter(final Class<? extends Action<?, ?, ?>> action,
final NormalizedNodeStreamWriter domWriter) {
- return getActionCodec(action).input().createWriter(domWriter);
+ return new BindingToNormalizedStreamWriter(getActionCodec(action).input(), domWriter);
}
@Override
public BindingStreamEventWriter newActionOutputWriter(final Class<? extends Action<?, ?, ?>> action,
final NormalizedNodeStreamWriter domWriter) {
- return getActionCodec(action).output().createWriter(domWriter);
+ return new BindingToNormalizedStreamWriter(getActionCodec(action).output(), domWriter);
}
DataContainerCodecContext<?,?> getCodecContextNode(final InstanceIdentifier<?> binding,
final class BindingToNormalizedStreamWriter implements AnydataBindingStreamWriter,
Delegator<NormalizedNodeStreamWriter> {
private final Deque<NodeCodecContext> schema = new ArrayDeque<>();
- private final NormalizedNodeStreamWriter delegate;
+ private final @NonNull NormalizedNodeStreamWriter delegate;
private final NodeCodecContext rootNodeSchema;
BindingToNormalizedStreamWriter(final NodeCodecContext rootNodeSchema, final NormalizedNodeStreamWriter delegate) {
this.delegate = requireNonNull(delegate);
}
- static @NonNull BindingToNormalizedStreamWriter create(final NodeCodecContext schema,
- final NormalizedNodeStreamWriter delegate) {
- return new BindingToNormalizedStreamWriter(schema, delegate);
- }
-
private void emitSchema(final Object schemaNode) {
delegate.nextDataSchemaNode((DataSchemaNode) schemaNode);
}
} else {
next = current();
}
- this.schema.push(next);
+ schema.push(next);
return (NodeIdentifier) current().getDomPathArgument();
}
checkArgument(current() instanceof DataContainerCodecContext, "Could not start node %s", name);
next = ((DataContainerCodecContext<?,?>) current()).streamChild((Class) name);
}
- this.schema.push(next);
+ schema.push(next);
T arg = (T) next.getDomPathArgument();
return arg;
}
private <T extends YangInstanceIdentifier.PathArgument> T enter(final String localName, final Class<T> identifier) {
NodeCodecContext current = current();
NodeCodecContext next = ((DataObjectCodecContext<?, ?>) current).getLeafChild(localName);
- this.schema.push(next);
+ schema.push(next);
@SuppressWarnings("unchecked")
T arg = (T) next.getDomPathArgument();
return arg;
return new CachingNormalizedNodeCodec<>(this, ImmutableSet.copyOf(cacheSpecifier));
}
- @NonNull BindingStreamEventWriter createWriter(final NormalizedNodeStreamWriter domWriter) {
- return BindingToNormalizedStreamWriter.create(this, domWriter);
- }
-
protected final <V> @NonNull V childNonNull(final @Nullable V nullable,
final YangInstanceIdentifier.PathArgument child, final String message, final Object... args) {
if (nullable == null) {
@Override
public void writeAsNormalizedNode(final D data, final NormalizedNodeStreamWriter writer) {
try {
- eventStreamSerializer().serialize(data, createWriter(writer));
+ eventStreamSerializer().serialize(data, new BindingToNormalizedStreamWriter(this, writer));
} catch (final IOException e) {
throw new IllegalStateException("Failed to serialize Binding DTO",e);
}