import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException;
-import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerAttrNode;
+import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerNode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class ImmutableMapEntryNodeBuilder extends AbstractImmutableDataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> {
+public class ImmutableMapEntryNodeBuilder
+ extends AbstractImmutableDataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> {
private static final Logger LOG = LoggerFactory.getLogger(ImmutableMapEntryNodeBuilder.class);
protected final Map<QName, PathArgument> childrenQNamesToPaths;
protected ImmutableMapEntryNodeBuilder() {
- super();
this.childrenQNamesToPaths = new LinkedHashMap<>();
}
fillQnames(node.getValue(), childrenQNamesToPaths);
}
- public static DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> create() {
+ public static @NonNull DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> create() {
return new ImmutableMapEntryNodeBuilder();
}
- public static DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> create(final int sizeHint) {
+ public static @NonNull DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> create(
+ final int sizeHint) {
return new ImmutableMapEntryNodeBuilder(sizeHint);
}
- public static DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> create(final MapEntryNode node) {
+ public static @NonNull DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> create(
+ final MapEntryNode node) {
if (!(node instanceof ImmutableMapEntryNode)) {
throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass()));
}
return new ImmutableMapEntryNodeBuilder((ImmutableMapEntryNode)node);
}
- private static void fillQnames(final Iterable<DataContainerChild<? extends PathArgument, ?>> iterable, final Map<QName, PathArgument> out) {
+ private static void fillQnames(final Iterable<DataContainerChild<? extends PathArgument, ?>> iterable,
+ final Map<QName, PathArgument> out) {
for (final DataContainerChild<? extends PathArgument, ?> childId : iterable) {
final PathArgument identifier = childId.getIdentifier();
// Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map
- if(isAugment(identifier)) {
+ if (isAugment(identifier)) {
continue;
}
}
}
-
@Override
- public DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> withValue(final Collection<DataContainerChild<? extends PathArgument, ?>> value) {
- fillQnames(value, childrenQNamesToPaths);
- return super.withValue(value);
+ public DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> withValue(
+ final Collection<DataContainerChild<? extends PathArgument, ?>> withValue) {
+ fillQnames(withValue, childrenQNamesToPaths);
+ return super.withValue(withValue);
}
private static boolean isAugment(final PathArgument identifier) {
}
@Override
- public DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> withChild(final DataContainerChild<?, ?> child) {
+ public DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> withChild(
+ final DataContainerChild<?, ?> child) {
// Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map
- if(!isAugment(child.getIdentifier())) {
+ if (!isAugment(child.getIdentifier())) {
childrenQNamesToPaths.put(child.getNodeType(), child.getIdentifier());
}
@Override
public MapEntryNode build() {
- for (final Entry<QName, Object> key : getNodeIdentifier().getKeyValues().entrySet()) {
+ for (final Entry<QName, Object> key : getNodeIdentifier().entrySet()) {
final DataContainerChild<?, ?> childNode = getChild(childrenQNamesToPaths.get(key.getKey()));
// We have enough information to fill-in missing leaf nodes, so let's do that
LOG.debug("Adding leaf {} implied by key {}", leaf, key);
withChild(leaf);
} else {
- DataValidationException.checkListKey(getNodeIdentifier(), key.getKey(), key.getValue(), childNode.getValue());
+ DataValidationException.checkListKey(getNodeIdentifier(), key.getKey(), key.getValue(),
+ childNode.getValue());
}
}
- return new ImmutableMapEntryNode(getNodeIdentifier(), buildValue(), getAttributes());
+ return new ImmutableMapEntryNode(getNodeIdentifier(), buildValue());
}
- private static final class ImmutableMapEntryNode extends AbstractImmutableDataContainerAttrNode<NodeIdentifierWithPredicates> implements MapEntryNode {
+ private static final class ImmutableMapEntryNode
+ extends AbstractImmutableDataContainerNode<NodeIdentifierWithPredicates> implements MapEntryNode {
ImmutableMapEntryNode(final NodeIdentifierWithPredicates nodeIdentifier,
- final Map<PathArgument, DataContainerChild<? extends PathArgument, ?>> children, final Map<QName, String> attributes) {
- super(children, nodeIdentifier, attributes);
+ final Map<PathArgument, Object> children) {
+ super(children, nodeIdentifier);
}
}
}