Drop unneeded generic type specifiers
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / tree / ModifiedNode.java
index 299a52b5770f23439e71c6f6252f7119c7edef28..7360e988d23c08003e6ec71817dda1eea4bfadaf 100644 (file)
@@ -13,6 +13,7 @@ import com.google.common.base.Predicate;
 import java.util.Collection;
 import java.util.Map;
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import javax.annotation.concurrent.NotThreadSafe;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -27,8 +28,8 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version;
  * Node Modification Node and Tree
  *
  * Tree which structurally resembles data tree and captures client modifications to the data store tree. This tree is
- * lazily created and populated via {@link #modifyChild(PathArgument)} and {@link TreeNode} which represents original
- * state as tracked by {@link #getOriginal()}.
+ * lazily created and populated via {@link #modifyChild(PathArgument, ModificationApplyOperation, Version)} and
+ * {@link TreeNode} which represents original state as tracked by {@link #getOriginal()}.
  *
  * The contract is that the state information exposed here preserves the temporal ordering of whatever modifications
  * were executed. A child's effects pertain to data node as modified by its ancestors. This means that in order to
@@ -39,7 +40,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version;
 final class ModifiedNode extends NodeModification implements StoreTreeNode<ModifiedNode> {
     static final Predicate<ModifiedNode> IS_TERMINAL_PREDICATE = new Predicate<ModifiedNode>() {
         @Override
-        public boolean apply(@Nonnull final ModifiedNode input) {
+        public boolean apply(@Nullable final ModifiedNode input) {
             Preconditions.checkNotNull(input);
             switch (input.getOperation()) {
             case DELETE:
@@ -114,11 +115,11 @@ final class ModifiedNode extends NodeModification implements StoreTreeNode<Modif
      */
     @Override
     public Optional<ModifiedNode> getChild(final PathArgument child) {
-        return Optional.<ModifiedNode> fromNullable(children.get(child));
+        return Optional.fromNullable(children.get(child));
     }
 
     private Optional<TreeNode> metadataFromSnapshot(@Nonnull final PathArgument child) {
-        return original.isPresent() ? original.get().getChild(child) : Optional.<TreeNode>absent();
+        return original.isPresent() ? original.get().getChild(child) : Optional.absent();
     }
 
     private Optional<TreeNode> metadataFromData(@Nonnull final PathArgument child, final Version modVersion) {
@@ -167,12 +168,12 @@ final class ModifiedNode extends NodeModification implements StoreTreeNode<Modif
      * changes modification type to {@link ModificationType#SUBTREE_MODIFIED}
      *
      * @param child child identifier, may not be null
-     * @param childPolicy child tracking policy for the node we are looking for
+     * @param childOper Child operation
      * @param modVersion Version allocated by the calling {@link InMemoryDataTreeModification}
      * @return {@link ModifiedNode} for specified child, with {@link #getOriginal()}
      *         containing child metadata if child was present in original data.
      */
-    ModifiedNode modifyChild(@Nonnull final PathArgument child, @Nonnull final ChildTrackingPolicy childPolicy,
+    ModifiedNode modifyChild(@Nonnull final PathArgument child, @Nonnull final ModificationApplyOperation childOper,
             @Nonnull final Version modVersion) {
         clearSnapshot();
         if (operation == LogicalOperation.NONE) {
@@ -186,7 +187,7 @@ final class ModifiedNode extends NodeModification implements StoreTreeNode<Modif
         final Optional<TreeNode> currentMetadata = findOriginalMetadata(child, modVersion);
 
 
-        final ModifiedNode newlyCreated = new ModifiedNode(child, currentMetadata, childPolicy);
+        final ModifiedNode newlyCreated = new ModifiedNode(child, currentMetadata, childOper.getChildPolicy());
         if (operation == LogicalOperation.MERGE && value != null) {
             /*
              * We are attempting to modify a previously-unmodified part of a MERGE node. If the
@@ -195,7 +196,7 @@ final class ModifiedNode extends NodeModification implements StoreTreeNode<Modif
             @SuppressWarnings({ "rawtypes", "unchecked" })
             final Optional<NormalizedNode<?, ?>> childData = ((NormalizedNodeContainer)value).getChild(child);
             if (childData.isPresent()) {
-                newlyCreated.updateValue(LogicalOperation.MERGE, childData.get());
+                childOper.mergeIntoModifiedNode(newlyCreated, childData.get(), modVersion);
             }
         }