Author: mbenson
Date: Fri May 26 18:33:14 2017
New Revision: 1796322

URL: http://svn.apache.org/viewvc?rev=1796322&view=rev
Log:
consolidate ConstraintViolationBuilder implementation

Removed:
    
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/NodeBuilderCustomizableContextImpl.java
    
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/NodeContextBuilderImpl.java
    
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/LeafNodeBuilderDefinedContextImpl.java
Modified:
    
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidatorContextImpl.java
    
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/LeafNodeBuilderCustomizableContextImpl.java
    
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderCustomizableContextImpl.java
    
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderDefinedContextImpl.java
    
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeContextBuilderImpl.java

Modified: 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidatorContextImpl.java
URL: 
http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidatorContextImpl.java?rev=1796322&r1=1796321&r2=1796322&view=diff
==============================================================================
--- 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidatorContextImpl.java
 (original)
+++ 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidatorContextImpl.java
 Fri May 26 18:33:14 2017
@@ -19,6 +19,7 @@
 package org.apache.bval.jsr;
 
 import org.apache.bval.jsr.util.LeafNodeBuilderCustomizableContextImpl;
+import org.apache.bval.jsr.util.NodeBuilderCustomizableContextImpl;
 import org.apache.bval.jsr.util.NodeBuilderDefinedContextImpl;
 import org.apache.bval.jsr.util.NodeImpl;
 import org.apache.bval.jsr.util.PathImpl;
@@ -26,7 +27,6 @@ import org.apache.bval.model.ValidationL
 
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
-import javax.validation.ElementKind;
 import javax.validation.Path;
 import javax.validation.ValidationException;
 import java.lang.reflect.Method;
@@ -125,28 +125,11 @@ public class ConstraintValidatorContextI
 
         @Override
         public NodeBuilderCustomizableContext addPropertyNode(String name) {
-            final NodeImpl node;
-            if (!propertyPath.isRootPath()) {
-                if (propertyPath.getLeafNode().getKind() != null) {
-                    node = new NodeImpl.PropertyNodeImpl(name);
-                    propertyPath.addNode(node);
-                } else {
-                    node = propertyPath.getLeafNode();
-                }
-            } else {
-                node = new NodeImpl.PropertyNodeImpl(name);
-                propertyPath.addNode(node);
-            }
-            node.setName(name);
-            node.setKind(ElementKind.PROPERTY); // enforce it
-            return new NodeBuilderCustomizableContextImpl(parent, 
messageTemplate, propertyPath);
+            return new NodeBuilderCustomizableContextImpl(parent, 
messageTemplate, propertyPath, name);
         }
 
         @Override
         public LeafNodeBuilderCustomizableContext addBeanNode() {
-            final NodeImpl node = new NodeImpl.BeanNodeImpl();
-            node.setKind(ElementKind.BEAN);
-            propertyPath.addNode(node);
             return new LeafNodeBuilderCustomizableContextImpl(parent, 
messageTemplate, propertyPath);
         }
 
@@ -156,8 +139,6 @@ public class ConstraintValidatorContextI
             final List<String> parameters =
                 
parent.validationContext.getParameterNameProvider().getParameterNames(method);
             final NodeImpl node = new 
NodeImpl.ParameterNodeImpl(parameters.get(index), index);
-            node.setParameterIndex(index);
-            node.setKind(ElementKind.PARAMETER);
             if (!propertyPath.isRootPath()) {
                 propertyPath.removeLeafNode();
             }

Modified: 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/LeafNodeBuilderCustomizableContextImpl.java
URL: 
http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/LeafNodeBuilderCustomizableContextImpl.java?rev=1796322&r1=1796321&r2=1796322&view=diff
==============================================================================
--- 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/LeafNodeBuilderCustomizableContextImpl.java
 (original)
+++ 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/LeafNodeBuilderCustomizableContextImpl.java
 Fri May 26 18:33:14 2017
@@ -21,10 +21,40 @@ package org.apache.bval.jsr.util;
 import org.apache.bval.jsr.ConstraintValidatorContextImpl;
 
 import javax.validation.ConstraintValidatorContext;
-import javax.validation.ElementKind;
+import 
javax.validation.ConstraintValidatorContext.ConstraintViolationBuilder.LeafNodeBuilderDefinedContext;
+import 
javax.validation.ConstraintValidatorContext.ConstraintViolationBuilder.LeafNodeContextBuilder;
 
 public class LeafNodeBuilderCustomizableContextImpl
     implements 
ConstraintValidatorContext.ConstraintViolationBuilder.LeafNodeBuilderCustomizableContext
 {
+
+    private final class LeafNodeContextBuilderImpl implements 
LeafNodeContextBuilder {
+        private final LeafNodeBuilderDefinedContext definedContext = new 
LeafNodeBuilderDefinedContext() {
+
+            @Override
+            public ConstraintValidatorContext addConstraintViolation() {
+                return 
LeafNodeBuilderCustomizableContextImpl.this.addConstraintViolation();
+            }
+        };
+
+        @Override
+        public LeafNodeBuilderDefinedContext atKey(Object key) {
+            node.setKey(key);
+            return definedContext;
+        }
+
+        @Override
+        public LeafNodeBuilderDefinedContext atIndex(
+            Integer index) {
+            node.setIndex(index);
+            return definedContext;
+        }
+
+        @Override
+        public ConstraintValidatorContext addConstraintViolation() {
+            return 
LeafNodeBuilderCustomizableContextImpl.this.addConstraintViolation();
+        }
+    }
+
     private final ConstraintValidatorContextImpl context;
     private final PathImpl path;
     private final String template;
@@ -35,41 +65,20 @@ public class LeafNodeBuilderCustomizable
         context = parent;
         template = messageTemplate;
         path = propertyPath;
-        node = new NodeImpl((String) null);
-        node.setKind(ElementKind.BEAN);
+        node = new NodeImpl.BeanNodeImpl();
     }
 
     @Override
-    public 
ConstraintValidatorContext.ConstraintViolationBuilder.LeafNodeContextBuilder 
inIterable() {
-        path.getLeafNode().setInIterable(true);
+    public LeafNodeContextBuilder inIterable() {
+        node.setInIterable(true);
         return new LeafNodeContextBuilderImpl();
     }
 
     @Override
     public ConstraintValidatorContext addConstraintViolation() {
+        path.addNode(node);
         context.addError(template, path);
         return context;
     }
 
-    private class LeafNodeContextBuilderImpl
-        implements 
ConstraintValidatorContext.ConstraintViolationBuilder.LeafNodeContextBuilder {
-        @Override
-        public 
ConstraintValidatorContext.ConstraintViolationBuilder.LeafNodeBuilderDefinedContext
 atKey(Object key) {
-            path.getLeafNode().setKey(key);
-            return new LeafNodeBuilderDefinedContextImpl(context, template, 
path);
-        }
-
-        @Override
-        public 
ConstraintValidatorContext.ConstraintViolationBuilder.LeafNodeBuilderDefinedContext
 atIndex(
-            Integer index) {
-            path.getLeafNode().setIndex(index);
-            return new LeafNodeBuilderDefinedContextImpl(context, template, 
path);
-        }
-
-        @Override
-        public ConstraintValidatorContext addConstraintViolation() {
-            context.addError(template, path);
-            return context;
-        }
-    }
 }

Modified: 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderCustomizableContextImpl.java
URL: 
http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderCustomizableContextImpl.java?rev=1796322&r1=1796321&r2=1796322&view=diff
==============================================================================
--- 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderCustomizableContextImpl.java
 (original)
+++ 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderCustomizableContextImpl.java
 Fri May 26 18:33:14 2017
@@ -26,7 +26,7 @@ import javax.validation.ElementKind;
 /**
  * Description: implementation of {@link 
javax.validation.ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderCustomizableContext}.<br/>
  */
-final class NodeBuilderCustomizableContextImpl
+public final class NodeBuilderCustomizableContextImpl
     implements 
ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderCustomizableContext
 {
     private final ConstraintValidatorContextImpl parent;
     private final String messageTemplate;
@@ -40,13 +40,19 @@ final class NodeBuilderCustomizableConte
      * @param path
      * @param name
      */
-    NodeBuilderCustomizableContextImpl(ConstraintValidatorContextImpl 
contextImpl, String template, PathImpl path,
+    public NodeBuilderCustomizableContextImpl(ConstraintValidatorContextImpl 
contextImpl, String template, PathImpl path,
         String name) {
         parent = contextImpl;
         messageTemplate = template;
         propertyPath = path;
-        node = new NodeImpl(name);
-        node.setKind(ElementKind.PROPERTY);
+
+        if (propertyPath.isRootPath() || propertyPath.getLeafNode().getKind() 
!= null) {
+            node = new NodeImpl.PropertyNodeImpl(name);
+        } else {
+            node = propertyPath.removeLeafNode();
+            node.setName(name);
+            node.setKind(ElementKind.PROPERTY); // enforce it
+        }
     }
 
     /**
@@ -54,7 +60,6 @@ final class NodeBuilderCustomizableConte
      */
     @Override
     public 
ConstraintValidatorContext.ConstraintViolationBuilder.NodeContextBuilder 
inIterable() {
-        // Modifies the "previous" node in the path
         node.setInIterable(true);
         return new NodeContextBuilderImpl(parent, messageTemplate, 
propertyPath, node);
     }
@@ -64,9 +69,7 @@ final class NodeBuilderCustomizableConte
      */
     @Override
     public 
ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderCustomizableContext
 addNode(String name) {
-        propertyPath.addNode(node);
-        node = new NodeImpl(name);
-        return this; // Re-use this instance
+        return addPropertyNode(name);
     }
 
     @Override
@@ -74,15 +77,12 @@ final class NodeBuilderCustomizableConte
         String name) {
         propertyPath.addNode(node);
         node = new NodeImpl.PropertyNodeImpl(name);
-        node.setKind(ElementKind.PROPERTY);
-        return null;
+        return this;
     }
 
     @Override
     public 
ConstraintValidatorContext.ConstraintViolationBuilder.LeafNodeBuilderCustomizableContext
 addBeanNode() {
         propertyPath.addNode(node);
-        node = new NodeImpl((String) null);
-        node.setKind(ElementKind.BEAN);
         return new LeafNodeBuilderCustomizableContextImpl(parent, 
messageTemplate, propertyPath);
     }
 

Modified: 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderDefinedContextImpl.java
URL: 
http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderDefinedContextImpl.java?rev=1796322&r1=1796321&r2=1796322&view=diff
==============================================================================
--- 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderDefinedContextImpl.java
 (original)
+++ 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeBuilderDefinedContextImpl.java
 Fri May 26 18:33:14 2017
@@ -21,7 +21,6 @@ package org.apache.bval.jsr.util;
 import org.apache.bval.jsr.ConstraintValidatorContextImpl;
 
 import javax.validation.ConstraintValidatorContext;
-import javax.validation.ElementKind;
 
 /**
  * Description: Implementation of {@link NodeBuilderDefinedContext}.<br/>
@@ -49,8 +48,7 @@ public final class NodeBuilderDefinedCon
      */
     @Override
     public 
ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderCustomizableContext
 addNode(String name) {
-        // Node not yet added, wait until more information is provided
-        return new NodeBuilderCustomizableContextImpl(parent, messageTemplate, 
propertyPath, name);
+        return addPropertyNode(name);
     }
 
     @Override
@@ -61,9 +59,6 @@ public final class NodeBuilderDefinedCon
 
     @Override
     public 
ConstraintValidatorContext.ConstraintViolationBuilder.LeafNodeBuilderCustomizableContext
 addBeanNode() {
-        final NodeImpl node = new NodeImpl((String) null);
-        node.setKind(ElementKind.BEAN);
-        propertyPath.addNode(node);
         return new LeafNodeBuilderCustomizableContextImpl(parent, 
messageTemplate, propertyPath);
     }
 

Modified: 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeContextBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeContextBuilderImpl.java?rev=1796322&r1=1796321&r2=1796322&view=diff
==============================================================================
--- 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeContextBuilderImpl.java
 (original)
+++ 
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeContextBuilderImpl.java
 Fri May 26 18:33:14 2017
@@ -72,19 +72,19 @@ final class NodeContextBuilderImpl imple
      */
     @Override
     public 
ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderCustomizableContext
 addNode(String name) {
-        propertyPath.addNode(node);
-        return new NodeBuilderCustomizableContextImpl(parent, messageTemplate, 
propertyPath, name);
+        return addPropertyNode(name);
     }
 
     @Override
     public 
ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderCustomizableContext
 addPropertyNode(
         String name) {
-        propertyPath.addProperty(name);
-        return new NodeBuilderCustomizableContextImpl(parent, messageTemplate, 
propertyPath, node.getName());
+        propertyPath.addNode(node);
+        return new NodeBuilderCustomizableContextImpl(parent, messageTemplate, 
propertyPath, name);
     }
 
     @Override
     public 
ConstraintValidatorContext.ConstraintViolationBuilder.LeafNodeBuilderCustomizableContext
 addBeanNode() {
+        propertyPath.addNode(node);
         return new LeafNodeBuilderCustomizableContextImpl(parent, 
messageTemplate, propertyPath);
     }
 


Reply via email to