I don't about this... I feel we need to discuss this before we reinvent the 
bean validation JSR wheel and Hibernate Validator or some other implementation. 
Why are we forcing users to learn another framework instead of using a 
standard? This is almost -1 territory... I feel we need to clean up the builder 
pattern mess before we make another decision on plugins...

Gary

<div>-------- Original message --------</div><div>From: [email protected] 
</div><div>Date:09/14/2014  23:34  (GMT-05:00) </div><div>To: 
[email protected] </div><div>Subject: [2/8] git commit: Add validation 
message to @RequiresNonNull. </div><div>
</div>Add validation message to @RequiresNonNull.


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/20e739a5
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/20e739a5
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/20e739a5

Branch: refs/heads/master
Commit: 20e739a5308023e4f5b03a49ea12f473193dcbea
Parents: 84e7fed
Author: Matt Sicker <[email protected]>
Authored: Sun Sep 14 20:26:48 2014 -0500
Committer: Matt Sicker <[email protected]>
Committed: Sun Sep 14 20:26:48 2014 -0500

----------------------------------------------------------------------
.../validation/constraints/RequiresNonNull.java       |  5 +++++
.../validators/RequiresNonNullValidator.java          | 14 +++++++++++++-
2 files changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/20e739a5/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/RequiresNonNull.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/RequiresNonNull.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/RequiresNonNull.java
index b3ef11d..7eb83e2 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/RequiresNonNull.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/RequiresNonNull.java
@@ -36,4 +36,9 @@ import 
org.apache.logging.log4j.core.config.plugins.validation.validators.Requir
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Constraint(RequiresNonNullValidator.class)
public @interface RequiresNonNull {
+
+    /**
+     * The message to be logged if this constraint is violated. This should 
normally be overridden.
+     */
+    String message() default "The parameter is null";
}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/20e739a5/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiresNonNullValidator.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiresNonNullValidator.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiresNonNullValidator.java
index 49c5806..9a39d4d 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiresNonNullValidator.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/RequiresNonNullValidator.java
@@ -16,8 +16,10 @@
  */
package org.apache.logging.log4j.core.config.plugins.validation.validators;

+import org.apache.logging.log4j.Logger;
import 
org.apache.logging.log4j.core.config.plugins.validation.ConstraintValidator;
import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.RequiresNonNull;
+import org.apache.logging.log4j.status.StatusLogger;

/**
  * Validator implementation for {@link RequiresNonNull}.
@@ -25,12 +27,22 @@ import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.Requi
  * @since 2.1
  */
public class RequiresNonNullValidator implements 
ConstraintValidator<RequiresNonNull, Object> {
+
+    private static final Logger LOGGER = StatusLogger.getLogger();
+
+    private RequiresNonNull annotation;
+
     @Override
     public void initialize(final RequiresNonNull annotation) {
+        this.annotation = annotation;
     }

     @Override
     public boolean isValid(final Object value) {
-        return value != null;
+        if (value != null) {
+            return true;
+        }
+        LOGGER.error(annotation.message());
+        return false;
     }
}

Reply via email to