1 package org.opendaylight.yangtools.yang.data.impl.schema.tree;
3 import com.google.common.base.Optional;
4 import com.google.common.base.Preconditions;
5 import java.util.Collection;
6 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
7 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
8 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer;
9 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
10 import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
12 final class RecursiveReplaceCandidateNode extends AbstractDataTreeCandidateNode {
13 private final NormalizedNodeContainer<?, PathArgument, NormalizedNode<?, ?>> oldData;
15 public RecursiveReplaceCandidateNode(final NormalizedNodeContainer<?, PathArgument, NormalizedNode<?, ?>> oldData,
16 final NormalizedNodeContainer<?, PathArgument, NormalizedNode<?, ?>> newData) {
18 this.oldData = Preconditions.checkNotNull(oldData);
22 public ModificationType getModificationType() {
23 return ModificationType.WRITE;
27 public Optional<NormalizedNode<?, ?>> getDataAfter() {
28 return super.dataOptional();
32 public Optional<NormalizedNode<?, ?>> getDataBefore() {
33 return Optional.<NormalizedNode<?, ?>>of(oldData);
37 public DataTreeCandidateNode getModifiedChild(final PathArgument identifier) {
38 // FIXME: this is a linear walk. We need a Map of these in order to
39 // do something like getChildMap().get(identifier);
40 for (DataTreeCandidateNode c : getChildNodes()) {
41 if (identifier.equals(c.getIdentifier())) {
49 public Collection<DataTreeCandidateNode> getChildNodes() {
50 return deltaChildren(oldData, getData());