BUG-1014: Moved recursive verify of written data to ready()
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / tree / OrderedMapModificationStrategy.java
1 package org.opendaylight.yangtools.yang.data.impl.schema.tree;
2
3 import static com.google.common.base.Preconditions.checkArgument;
4
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;
13
14 final class OrderedMapModificationStrategy extends AbstractNodeContainerModificationStrategy {
15     private final Optional<ModificationApplyOperation> entryStrategy;
16
17     OrderedMapModificationStrategy(final ListSchemaNode schema, final TreeType treeType) {
18         super(OrderedMapNode.class, treeType);
19         entryStrategy = Optional.<ModificationApplyOperation> of(new ListEntryModificationStrategy(schema, treeType));
20     }
21
22     @Override
23     protected ChildTrackingPolicy getChildPolicy() {
24         return ChildTrackingPolicy.ORDERED;
25     }
26
27     @SuppressWarnings("rawtypes")
28     @Override
29     protected NormalizedNodeContainerBuilder createBuilder(final NormalizedNode<?, ?> original) {
30         checkArgument(original instanceof OrderedMapNode);
31         return ImmutableOrderedMapNodeBuilder.create((OrderedMapNode) original);
32     }
33
34     @Override
35     public Optional<ModificationApplyOperation> getChild(final YangInstanceIdentifier.PathArgument identifier) {
36         if (identifier instanceof YangInstanceIdentifier.NodeIdentifierWithPredicates) {
37             return entryStrategy;
38         }
39         return Optional.absent();
40     }
41
42     @Override
43     public String toString() {
44         return "OrderedMapModificationStrategy [entry=" + entryStrategy + "]";
45     }
46 }