You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by mb...@apache.org on 2017/05/26 18:31:22 UTC

svn commit: r1796321 - /bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/PathImpl.java

Author: mbenson
Date: Fri May 26 18:31:22 2017
New Revision: 1796321

URL: http://svn.apache.org/viewvc?rev=1796321&view=rev
Log:
clean up PathImpl

Modified:
    bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/PathImpl.java

Modified: bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/PathImpl.java
URL: http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/PathImpl.java?rev=1796321&r1=1796320&r2=1796321&view=diff
==============================================================================
--- bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/PathImpl.java (original)
+++ bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/PathImpl.java Fri May 26 18:31:22 2017
@@ -88,7 +88,7 @@ public class PathImpl implements Path, S
 
     }
 
-    private final List<Node> nodeList;
+    private final List<NodeImpl> nodeList;
 
     /**
      * Returns a {@code Path} instance representing the path described by the given string. To create a root node the
@@ -99,7 +99,7 @@ public class PathImpl implements Path, S
      * @return a {@code Path} instance representing the path described by the given string.
      */
     public static PathImpl createPathFromString(String propertyPath) {
-        if (propertyPath == null || propertyPath.length() == 0) {
+        if (propertyPath == null || propertyPath.isEmpty()) {
             return create();
         }
         return PathNavigation.navigateAndReturn(propertyPath, new PathImplBuilder());
@@ -127,14 +127,7 @@ public class PathImpl implements Path, S
         return path == null ? null : new PathImpl(path);
     }
 
-    private PathImpl(Path path) {
-        this.nodeList = new ArrayList<Node>();
-        for (final Object aPath : path) {
-            nodeList.add(newNode(Node.class.cast(aPath)));
-        }
-    }
-
-    private static Node newNode(final Node cast) {
+    private static NodeImpl newNode(final Node cast) {
         if (PropertyNode.class.isInstance(cast)) {
             return new NodeImpl.PropertyNodeImpl(cast);
         }
@@ -163,13 +156,13 @@ public class PathImpl implements Path, S
     }
 
     private PathImpl() {
-        nodeList = new ArrayList<Node>();
+        nodeList = new ArrayList<NodeImpl>();
     }
 
-    private PathImpl(List<Node> nodeList) {
-        this.nodeList = new ArrayList<Node>();
-        for (Node node : nodeList) {
-            this.nodeList.add(new NodeImpl(node));
+    private PathImpl(Iterable<Node> path) {
+        this();
+        for (final Node node : path) {
+            nodeList.add(newNode(node));
         }
     }
 
@@ -209,10 +202,11 @@ public class PathImpl implements Path, S
      *            to add
      */
     public void addNode(Node node) {
+        NodeImpl impl = node instanceof NodeImpl ? (NodeImpl) node : newNode(node);
         if (isRootPath()) {
-            nodeList.set(0, node);
+            nodeList.set(0, impl);
         } else {
-            nodeList.add(node);
+            nodeList.add(impl);
         }
     }
 
@@ -253,8 +247,8 @@ public class PathImpl implements Path, S
      * @throws IllegalStateException
      *             if no nodes are found
      */
-    public Node removeLeafNode() {
-        if (isRootPath() || nodeList.size() == 0) {
+    public NodeImpl removeLeafNode() {
+        if (isRootPath() || nodeList.isEmpty()) {
             throw new IllegalStateException("No nodes in path!");
         }
         try {
@@ -272,7 +266,7 @@ public class PathImpl implements Path, S
      * @return {@link NodeImpl}
      */
     public NodeImpl getLeafNode() {
-        if (nodeList.size() == 0) {
+        if (nodeList.isEmpty()) {
             return null;
         }
         return (NodeImpl) nodeList.get(nodeList.size() - 1);
@@ -283,7 +277,9 @@ public class PathImpl implements Path, S
      */
     @Override
     public Iterator<Path.Node> iterator() {
-        return nodeList.iterator();
+        @SuppressWarnings({ "unchecked", "rawtypes" })
+        final Iterator<Path.Node> result = ((List) nodeList).iterator();
+        return result;
     }
 
     /**
@@ -347,13 +343,12 @@ public class PathImpl implements Path, S
         if (this == o) {
             return true;
         }
-        if (o == null || getClass() != o.getClass()) {
+        if (o == null || !getClass().equals(o.getClass())) {
             return false;
         }
 
         PathImpl path = (PathImpl) o;
-        return !(nodeList != null && !nodeList.equals(path.nodeList)) && !(nodeList == null && path.nodeList != null);
-
+        return nodeList == path.nodeList || nodeList != null && nodeList.equals(path.nodeList);
     }
 
     /**
@@ -361,7 +356,7 @@ public class PathImpl implements Path, S
      */
     @Override
     public int hashCode() {
-        return nodeList != null ? nodeList.hashCode() : 0;
+        return nodeList == null ? 0 : nodeList.hashCode();
     }
 
 }