atomic-storage: remove type dependency at segment level I/O
[controller.git] / opendaylight / md-sal / sal-clustering-commons / src / main / java / org / opendaylight / controller / cluster / datastore / util / AbstractDataTreeModificationCursor.java
index f83f6afe8e524099bd1d1ea74365691f9eaa37cd..3e299e3d9b625825b02ba8fc09106384b2f17ad0 100644 (file)
@@ -7,46 +7,45 @@
  */
 package org.opendaylight.controller.cluster.datastore.util;
 
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkState;
+import static com.google.common.base.Verify.verifyNotNull;
+
 import com.google.common.annotations.Beta;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Verify;
-import javax.annotation.Nonnull;
-import javax.annotation.concurrent.NotThreadSafe;
+import java.util.Optional;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModificationCursor;
+import org.opendaylight.yangtools.yang.data.tree.api.DataTreeModificationCursor;
 
 /**
  * Abstract {@link DataTreeModificationCursor} which tracks the current path. Subclasses can get the current path
- * via {@link #current()}.
+ * via {@link #current()}. This class is NOT thread-safe.
  *
  * @author Thomas Pantelis
  */
 @Beta
-@NotThreadSafe
 public abstract class AbstractDataTreeModificationCursor implements DataTreeModificationCursor {
-    private YangInstanceIdentifier current = YangInstanceIdentifier.EMPTY;
+    private YangInstanceIdentifier current = YangInstanceIdentifier.of();
 
     protected final YangInstanceIdentifier current() {
         return current;
     }
 
     @Override
-    public final void enter(@Nonnull final PathArgument child) {
+    public final void enter(final PathArgument child) {
         current = current.node(child);
     }
 
     @Override
-    public final void enter(@Nonnull final PathArgument... path) {
+    public final void enter(final PathArgument... path) {
         for (PathArgument arg : path) {
             enter(arg);
         }
     }
 
     @Override
-    public final void enter(@Nonnull final Iterable<PathArgument> path) {
+    public final void enter(final Iterable<PathArgument> path) {
         for (PathArgument arg : path) {
             enter(arg);
         }
@@ -54,25 +53,25 @@ public abstract class AbstractDataTreeModificationCursor implements DataTreeModi
 
     @Override
     public final void exit() {
-        Preconditions.checkState(!current.isEmpty());
-        current = Verify.verifyNotNull(current.getParent());
+        checkState(!current.isEmpty());
+        current = verifyNotNull(current.getParent());
     }
 
     @Override
     public final void exit(final int depth) {
-        Preconditions.checkArgument(depth >= 0);
+        checkArgument(depth >= 0);
 
         YangInstanceIdentifier next = current;
         for (int i = 0; i < depth; ++i) {
             next = next.getParent();
-            Preconditions.checkState(next != null);
+            checkState(next != null);
         }
 
         current = next;
     }
 
     @Override
-    public final Optional<NormalizedNode<?, ?>> readNode(@Nonnull final PathArgument child) {
+    public final Optional<NormalizedNode> readNode(final PathArgument child) {
         throw new UnsupportedOperationException("Not implemented");
     }