1 package org.opendaylight.yangtools.yang.data.impl.schema.tree;
3 import static com.google.common.base.Preconditions.checkArgument;
5 import com.google.common.base.Optional;
6 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
7 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
8 import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode;
9 import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
10 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeContainerBuilder;
11 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableOrderedMapNodeBuilder;
12 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
14 final class OrderedMapModificationStrategy extends AbstractNodeContainerModificationStrategy {
15 private final Optional<ModificationApplyOperation> entryStrategy;
17 OrderedMapModificationStrategy(final ListSchemaNode schema, final TreeType treeType) {
18 super(OrderedMapNode.class, treeType);
19 entryStrategy = Optional.<ModificationApplyOperation> of(new ListEntryModificationStrategy(schema, treeType));
23 protected ChildTrackingPolicy getChildPolicy() {
24 return ChildTrackingPolicy.ORDERED;
27 @SuppressWarnings("rawtypes")
29 protected NormalizedNodeContainerBuilder createBuilder(final NormalizedNode<?, ?> original) {
30 checkArgument(original instanceof OrderedMapNode);
31 return ImmutableOrderedMapNodeBuilder.create((OrderedMapNode) original);
35 public Optional<ModificationApplyOperation> getChild(final YangInstanceIdentifier.PathArgument identifier) {
36 if (identifier instanceof YangInstanceIdentifier.NodeIdentifierWithPredicates) {
39 return Optional.absent();
43 public String toString() {
44 return "OrderedMapModificationStrategy [entry=" + entryStrategy + "]";