Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b3d2b89
commit f7c8aa9
Showing
5 changed files
with
110 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
13 changes: 13 additions & 0 deletions
13
...test/java/org/hibernate/validator/referenceguide/chapter03/parameterscriptassert/Car.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package org.hibernate.validator.referenceguide.chapter03.parameterscriptassert; | ||
|
||
import java.util.List; | ||
|
||
import org.hibernate.validator.constraints.ParameterScriptAssert; | ||
|
||
public class Car { | ||
|
||
@ParameterScriptAssert(lang = "javascript", script = "arg1.size() <= arg0.size() * 2") | ||
public void load(List<Person> passengers, List<PieceOfLuggage> luggage) { | ||
//... | ||
} | ||
} |
53 changes: 53 additions & 0 deletions
53
...e/validator/referenceguide/chapter03/parameterscriptassert/ParameterScriptAssertTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package org.hibernate.validator.referenceguide.chapter03.parameterscriptassert; | ||
|
||
import java.lang.annotation.Annotation; | ||
import java.lang.reflect.Method; | ||
import java.util.Arrays; | ||
import java.util.List; | ||
import java.util.Set; | ||
import javax.validation.ConstraintViolation; | ||
import javax.validation.Validation; | ||
import javax.validation.ValidatorFactory; | ||
import javax.validation.executable.ExecutableValidator; | ||
|
||
import org.junit.BeforeClass; | ||
import org.junit.Test; | ||
|
||
import org.hibernate.validator.constraints.ParameterScriptAssert; | ||
|
||
import static org.junit.Assert.assertEquals; | ||
|
||
public class ParameterScriptAssertTest { | ||
|
||
private static ExecutableValidator executableValidator; | ||
|
||
@BeforeClass | ||
public static void setUpValidator() { | ||
ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); | ||
executableValidator = factory.getValidator().forExecutables(); | ||
} | ||
|
||
@Test | ||
public void validateParameters() throws Exception { | ||
Car object = new Car(); | ||
Method method = Car.class.getMethod( "load", List.class, List.class ); | ||
Object[] parameterValues = { | ||
Arrays.asList( new Person() ), | ||
Arrays.asList( new PieceOfLuggage(), new PieceOfLuggage(), new PieceOfLuggage() ) | ||
}; | ||
|
||
Set<ConstraintViolation<Car>> violations = executableValidator.validateParameters( | ||
object, | ||
method, | ||
parameterValues | ||
); | ||
|
||
assertEquals( 1, violations.size() ); | ||
Class<? extends Annotation> constraintType = violations.iterator() | ||
.next() | ||
.getConstraintDescriptor() | ||
.getAnnotation() | ||
.annotationType(); | ||
assertEquals( ParameterScriptAssert.class, constraintType ); | ||
} | ||
} |
4 changes: 4 additions & 0 deletions
4
...t/java/org/hibernate/validator/referenceguide/chapter03/parameterscriptassert/Person.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
package org.hibernate.validator.referenceguide.chapter03.parameterscriptassert; | ||
|
||
public class Person { | ||
} |
4 changes: 4 additions & 0 deletions
4
...rg/hibernate/validator/referenceguide/chapter03/parameterscriptassert/PieceOfLuggage.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
package org.hibernate.validator.referenceguide.chapter03.parameterscriptassert; | ||
|
||
public class PieceOfLuggage { | ||
} |
f7c8aa9
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/bin/java -ea -Duser.language=en -Didea.test.cyclic.buffer.size=1048576 "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=54566:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar:/Applications/IntelliJ IDEA.app/Contents/plugins/junit/lib/junit-rt.jar:/Applications/IntelliJ IDEA.app/Contents/plugins/junit/lib/junit5-rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/tools.jar:/Users/wangji/Documents/study/hibernate-validator-example/documentation/target/test-classes:/Users/wangji/Documents/study/hibernate-validator-example/documentation/target/classes:/Users/wangji/.m2/repository/org/hibernate/validator/hibernate-validator/6.1.0-SNAPSHOT/hibernate-validator-6.1.0-SNAPSHOT.jar:/Users/wangji/.m2/repository/javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final.jar:/Users/wangji/.m2/repository/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar:/Users/wangji/.m2/repository/com/fasterxml/classmate/1.3.4/classmate-1.3.4.jar:/Users/wangji/.m2/repository/org/glassfish/javax.el/3.0.1-b09/javax.el-3.0.1-b09.jar:/Users/wangji/.m2/repository/org/hibernate/validator/hibernate-validator-cdi/6.1.0-SNAPSHOT/hibernate-validator-cdi-6.1.0-SNAPSHOT.jar:/Users/wangji/.m2/repository/javax/enterprise/cdi-api/2.0.SP1/cdi-api-2.0.SP1.jar:/Users/wangji/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/Users/wangji/.m2/repository/com/google/guava/guava/23.0/guava-23.0.jar:/Users/wangji/.m2/repository/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar:/Users/wangji/.m2/repository/com/google/errorprone/error_prone_annotations/2.0.18/error_prone_annotations-2.0.18.jar:/Users/wangji/.m2/repository/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.jar:/Users/wangji/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.jar:/Users/wangji/.m2/repository/org/codehaus/groovy/groovy-jsr223/2.4.12/groovy-jsr223-2.4.12.jar:/Users/wangji/.m2/repository/org/codehaus/groovy/groovy/2.4.12/groovy-2.4.12.jar:/Users/wangji/.m2/repository/org/osgi/org.osgi.core/6.0.0/org.osgi.core-6.0.0.jar:/Users/wangji/.m2/repository/org/springframework/spring-expression/4.3.10.RELEASE/spring-expression-4.3.10.RELEASE.jar:/Users/wangji/.m2/repository/org/springframework/spring-core/4.3.10.RELEASE/spring-core-4.3.10.RELEASE.jar:/Users/wangji/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/wangji/.m2/repository/junit/junit/4.12/junit-4.12.jar:/Users/wangji/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar:/Users/wangji/.m2/repository/org/assertj/assertj-core/3.8.0/assertj-core-3.8.0.jar:/Users/wangji/.m2/repository/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 org.hibernate.validator.referenceguide.chapter03.parameterscriptassert.ParameterScriptAssertTest,validateParameters
Dec 06, 2018 9:52:27 AM org.hibernate.validator.internal.util.Version
INFO: HV000001: Hibernate Validator 6.1.0-SNAPSHOT
javax.validation.ConstraintDeclarationException: HV000023: Error during execution of script "luggage.size() <= passengers.size() * 2" occurred.
Caused by: org.hibernate.validator.spi.scripting.ScriptEvaluationException: HV000233: An error occurred while executing the script: "luggage.size() <= passengers.size() * 2".
at org.hibernate.validator.spi.scripting.ScriptEngineScriptEvaluator.doEvaluate(ScriptEngineScriptEvaluator.java:70)
at org.hibernate.validator.spi.scripting.ScriptEngineScriptEvaluator.evaluate(ScriptEngineScriptEvaluator.java:60)
at org.hibernate.validator.internal.constraintvalidators.hv.ScriptAssertContext.evaluateScriptAssertExpression(ScriptAssertContext.java:49)
... 38 more
Caused by: javax.script.ScriptException: ReferenceError: "luggage" is not defined in at line number 1
at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:470)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:454)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402)
at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233)
at org.hibernate.validator.spi.scripting.ScriptEngineScriptEvaluator.doEvaluate(ScriptEngineScriptEvaluator.java:67)
... 40 more
Caused by: :1 ReferenceError: "luggage" is not defined
at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:319)
at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:291)
at jdk.nashorn.internal.objects.Global.noSuchProperty(Global.java:1441)
at jdk.nashorn.internal.scripts.Script$^eval_.:program(:1)
at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:449)
... 45 more
when I change ParameterScriptAssert script is ok !change luggage arg0 ?
@ParameterScriptAssert(lang = "javascript", script = "arg1.size() <= arg0.size() * 2")
public void load(List passengers, List luggage) {
//...
}