import com.google.common.annotations.Beta;
import com.google.common.collect.ImmutableSet;
-import java.io.IOException;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.yang.binding.Augmentable;
import org.opendaylight.yangtools.yang.binding.Augmentation;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
@Beta
public interface BindingAugmentationCodecTreeNode<T extends Augmentation<?>>
throw new IllegalArgumentException("Unsupported parent " + parentData.contract());
}
- /**
- * Write the contents of an {@link Augmentation} into a writer. The writer must beinitialized at the
- * augmentations's {@link Augmentable} parent's equivalent {@link DataContainerNode}.
- *
- * @param writer Writer to stream to
- * @param data Data to stream
- * @throws NullPointerException if any argument is {@code null}
- * @throws IOException if a streaming error occurs
- */
- void streamTo(@NonNull NormalizedNodeStreamWriter writer, @NonNull T data) throws IOException;
-
/**
* Returns the {@link PathArgument}s of items contained in this {@link Augmentation}.
*
* @return A non-empty set of path arguments
*/
@NonNull ImmutableSet<PathArgument> childPathArguments();
-
- /**
- * Returns the {@link Class}es of items contain in this {@link Augmentation}.
- *
- * @return A non-empty set of classes
- */
- @NonNull ImmutableSet<Class<?>> childBindingClasses();
}
*/
package org.opendaylight.mdsal.binding.dom.codec.impl;
-import static java.util.Objects.requireNonNull;
-
import com.google.common.collect.ImmutableSet;
-import java.io.IOException;
import java.util.Map;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingAugmentationCodecTreeNode;
import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.DistinctNodeContainer;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
final class AugmentationNodeContext<D extends DataObject & Augmentation<?>>
extends AbstractDataObjectCodecContext<D, AugmentRuntimeType> implements BindingAugmentationCodecTreeNode<D> {
return createBindingProxy(parentData);
}
- @Override
- public void streamTo(final NormalizedNodeStreamWriter writer, final D data) throws IOException {
- eventStreamSerializer().serialize(requireNonNull(data), new BindingToNormalizedStreamWriter(this, writer));
- }
-
@Override
public ImmutableSet<PathArgument> childPathArguments() {
return byYangKeySet();
}
- @Override
- public ImmutableSet<Class<?>> childBindingClasses() {
- return byBindingArgClassKeySet();
- }
-
@Override
protected Object deserializeObject(final NormalizedNode normalizedNode) {
return filterFrom(checkDataArgument(DataContainerNode.class, normalizedNode));