<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-model-api</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-binding-spec-util</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-binding-runtime-api</artifactId>
requires transitive org.opendaylight.yangtools.yang.model.api;
requires transitive org.opendaylight.yangtools.yang.binding;
requires transitive org.opendaylight.mdsal.binding.runtime.api;
- requires org.opendaylight.mdsal.binding.spec.util;
// Annotations
requires static transitive org.eclipse.jdt.annotation;
import java.util.Map.Entry;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
import org.opendaylight.yangtools.yang.binding.Action;
import org.opendaylight.yangtools.yang.binding.Augmentation;
import org.opendaylight.yangtools.yang.binding.BaseNotification;
import org.opendaylight.yangtools.yang.binding.Notification;
import org.opendaylight.yangtools.yang.binding.RpcInput;
import org.opendaylight.yangtools.yang.binding.RpcOutput;
-import org.opendaylight.yangtools.yang.common.YangConstants;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
* @throws NullPointerException if any of the arguments is null
*/
@Beta
- default @NonNull BindingLazyContainerNode<RpcInput> toLazyNormalizedNodeActionInput(
- @NonNull final Class<? extends Action<?, ?, ?>> action, @NonNull final RpcInput input) {
- return toLazyNormalizedNodeActionInput(action,
- new NodeIdentifier(YangConstants.operationInputQName(BindingReflections.getQNameModule(action))), input);
- }
+ @NonNull BindingLazyContainerNode<RpcInput> toLazyNormalizedNodeActionInput(
+ @NonNull Class<? extends Action<?, ?, ?>> action, @NonNull RpcInput input);
/**
* Translates supplied Binding action input into NormalizedNode data.
* @param output Binding action output
* @return NormalizedNode representation of action output
*/
- @Beta default @NonNull BindingLazyContainerNode<RpcOutput> toLazyNormalizedNodeActionOutput(
- @NonNull final Class<? extends Action<?, ?, ?>> action, @NonNull final RpcOutput output) {
- return toLazyNormalizedNodeActionOutput(action,
- new NodeIdentifier(YangConstants.operationOutputQName(BindingReflections.getQNameModule(action))), output);
- }
+ @Beta
+ @NonNull BindingLazyContainerNode<RpcOutput> toLazyNormalizedNodeActionOutput(
+ @NonNull Class<? extends Action<?, ?, ?>> action, @NonNull RpcOutput output);
/**
* Translates supplied Binding action output into NormalizedNode data.
exports org.opendaylight.mdsal.binding.dom.codec.spi;
requires transitive org.opendaylight.mdsal.binding.dom.codec.api;
- requires org.opendaylight.mdsal.binding.spec.util;
// Annotations
requires static transitive org.eclipse.jdt.annotation;
package org.opendaylight.mdsal.binding.dom.codec.spi;
import com.google.common.annotations.Beta;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingLazyContainerNode;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
import org.opendaylight.yangtools.yang.binding.Action;
return new LazyActionInputContainerNode(identifier, input, this, action);
}
+ @Override
+ public final BindingLazyContainerNode<RpcInput> toLazyNormalizedNodeActionInput(
+ final Class<? extends Action<?, ?, ?>> action, final RpcInput input) {
+ return toLazyNormalizedNodeActionInput(action, actionInputName(action), input);
+ }
+
+ protected abstract @NonNull NodeIdentifier actionInputName(@NonNull Class<? extends Action<?, ?, ?>> action);
+
@Override
public final BindingLazyContainerNode<RpcOutput> toLazyNormalizedNodeActionOutput(
final Class<? extends Action<?, ?, ?>> action, final NodeIdentifier identifier, final RpcOutput output) {
return new LazyActionOutputContainerNode(identifier, output, this, action);
}
+
+ @Override
+ public final BindingLazyContainerNode<RpcOutput> toLazyNormalizedNodeActionOutput(
+ final Class<? extends Action<?, ?, ?>> action, final RpcOutput output) {
+ return toLazyNormalizedNodeActionOutput(action, actionOutputName(action), output);
+ }
+
+ protected abstract @NonNull NodeIdentifier actionOutputName(@NonNull Class<? extends Action<?, ?, ?>> action);
}
return delegate().toLazyNormalizedNodeActionInput(action, identifier, input);
}
+ @Override
+ public BindingLazyContainerNode<RpcInput> toLazyNormalizedNodeActionInput(
+ final Class<? extends Action<?, ?, ?>> action, final RpcInput input) {
+ return delegate().toLazyNormalizedNodeActionInput(action, input);
+ }
+
@Override
public BindingLazyContainerNode<RpcOutput> toLazyNormalizedNodeActionOutput(
final Class<? extends Action<?, ?, ?>> action, final NodeIdentifier identifier, final RpcOutput output) {
return delegate().toLazyNormalizedNodeActionOutput(action, identifier, output);
}
+ @Override
+ public BindingLazyContainerNode<RpcOutput> toLazyNormalizedNodeActionOutput(
+ final Class<? extends Action<?, ?, ?>> action, final RpcOutput output) {
+ return delegate().toLazyNormalizedNodeActionOutput(action, output);
+ }
+
@Override
public YangInstanceIdentifier toYangInstanceIdentifier(final InstanceIdentifier<?> binding) {
return delegate().toYangInstanceIdentifier(binding);
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.base.Verify.verify;
+import static com.google.common.base.Verify.verifyNotNull;
import static java.util.Objects.requireNonNull;
import com.google.common.base.Strings;
return serializeDataObject(output, (ctx, iface, domWriter) -> ctx.newActionOutputWriter(action, domWriter));
}
+ @Override
+ protected NodeIdentifier actionInputName(final Class<? extends Action<?, ?, ?>> action) {
+ return verifyNotNull(getActionCodec(action).input().getDomPathArgument());
+ }
+
+ @Override
+ protected NodeIdentifier actionOutputName(final Class<? extends Action<?, ?, ?>> action) {
+ return verifyNotNull(getActionCodec(action).output().getDomPathArgument());
+ }
+
private <T extends DataContainer> @NonNull ContainerNode serializeDataObject(final DataObject data,
final WriterFactoryMethod<T> newWriter) {
final var result = new NormalizationResultHolder();
return (ContainerNode) result.getResult().data();
}
-
private static boolean notBindingRepresentable(final NormalizedNode data) {
// ValueNode covers LeafNode and LeafSetEntryNode
return data instanceof ValueNode
return CLASS_TO_QNAME.getUnchecked(dataType).orElse(null);
}
- public static QNameModule getQNameModule(final Class<?> clz) {
+ public static @NonNull QNameModule getQNameModule(final Class<?> clz) {
if (DataContainer.class.isAssignableFrom(clz) || BaseIdentity.class.isAssignableFrom(clz)
|| Action.class.isAssignableFrom(clz)) {
return findQName(clz).getModule();