Skip to content

Commit

Permalink
Upgrade Hibernate Validator (#8016)
Browse files Browse the repository at this point in the history
* Upgrade Hibernate Validator

* Revert "Suppress Hibernate warning (#7542)"

This reverts commit 2b845b6.
  • Loading branch information
mkurz authored and marcospereira committed Nov 21, 2017
1 parent cdc2210 commit 8e80755
Show file tree
Hide file tree
Showing 8 changed files with 75 additions and 38 deletions.
2 changes: 1 addition & 1 deletion framework/project/Dependencies.scala
Expand Up @@ -93,7 +93,7 @@ object Dependencies {

val javaFormsDeps = Seq(

"org.hibernate" % "hibernate-validator" % "5.4.1.Final",
"org.hibernate" % "hibernate-validator" % "6.0.5.Final",

("org.springframework" % "spring-context" % springFrameworkVersion)
.exclude("org.springframework", "spring-aop")
Expand Down
Expand Up @@ -63,8 +63,13 @@
*/
public class Form<T> {

/** Statically compiled Pattern for replacing ".<collection element>" to get the field from a violation. */
private static final Pattern REPLACE_COLLECTION_ELEMENT = Pattern.compile(".<collection element>", Pattern.LITERAL);
/**
* Statically compiled Pattern for replacing pairs of "<" and ">" with an optional content and optionally prefixed with a dot. Needed to get the field from a violation.
* This takes care of occurrences like "field.<list element>", "field<K>[somekey]", "field[somekey].<map value>", "field<K>[somekey].<map key>", etc.
* We always want to end up with just "field" or "field[0]" in case of lists or "field[somekey]" in case of maps.
* Also see https://github.com/hibernate/hibernate-validator/blob/6.0.5.Final/engine/src/main/java/org/hibernate/validator/internal/engine/path/NodeImpl.java#L51-L56
*/
private static final Pattern REPLACE_COLLECTION_ELEMENT = Pattern.compile("\\.?<[^<]*>");

/** Statically compiled Pattern for replacing "typeMismatch" in Form errors. */
private static final Pattern REPLACE_TYPEMISMATCH = Pattern.compile("typeMismatch", Pattern.LITERAL);
Expand Down

This file was deleted.

@@ -0,0 +1,43 @@
/*
* Copyright (C) 2009-2017 Lightbend Inc. <https://www.lightbend.com>
*/
package play.data;

import play.data.validation.Constraints;

import java.util.List;
import java.util.Map;
import java.util.Optional;

public class TypeArgumentForm {

private List<@Constraints.Min(0) Integer> list;

private Map<@Constraints.MinLength(3) String, @Constraints.Min(6) Integer> map;

private Optional<@Constraints.MinLength(9) String> optional;

public List<Integer> getList() {
return list;
}

public void setList(final List<Integer> list) {
this.list = list;
}

public Map<String, Integer> getMap() {
return map;
}

public void setMap(final Map<String, Integer> map) {
this.map = map;
}

public Optional<String> getOptional() {
return optional;
}

public void setOptional(final Optional<String> optional) {
this.optional = optional;
}
}
Expand Up @@ -372,12 +372,32 @@ trait FormSpec extends Specification {
}

"support type arguments constraints" in {
val listForm = formFactory.form(classOf[ListForm]).bindFromRequest(FormSpec.dummyRequest(Map("values[0]" -> Array("4"), "values[1]" -> Array("-3"), "values[2]" -> Array("6"))))
val listForm = formFactory.form(classOf[TypeArgumentForm]).bindFromRequest(FormSpec.dummyRequest(Map(
"list[0]" -> Array("4"), "list[1]" -> Array("-3"), "list[2]" -> Array("6"),
"map['ab']" -> Array("28"), "map['something']" -> Array("2"), "map['worksperfect']" -> Array("87"),
"optional" -> Array("Acme")
)))

listForm.hasErrors must beEqualTo(true)
listForm.allErrors().size() must beEqualTo(1)
listForm.errors("values[1]").get(0).messages().size() must beEqualTo(1)
listForm.errors("values[1]").get(0).messages().get(0) must beEqualTo("error.min")
listForm.allErrors().size() must beEqualTo(4)
listForm.errors("list[1]").get(0).messages().size() must beEqualTo(1)
listForm.errors("list[1]").get(0).messages().get(0) must beEqualTo("error.min")
listForm.value().get().getList.get(0) must beEqualTo(4)
listForm.value().get().getList.get(1) must beEqualTo(-3)
listForm.value().get().getList.get(2) must beEqualTo(6)
listForm.errors("map[ab]").get(0).messages().get(0) must beEqualTo("error.minLength")
listForm.value().get().getMap.get("ab") must beEqualTo(28)
listForm.errors("map[something]").get(0).messages().get(0) must beEqualTo("error.min")
listForm.value().get().getMap.get("something") must beEqualTo(2)
listForm.value().get().getMap.get("worksperfect") must beEqualTo(87)
listForm.errors("optional").get(0).messages().get(0) must beEqualTo("error.minLength")
listForm.value().get().getOptional.get must beEqualTo("Acme")
// Also test an Optional that binds a value but doesn't cause a validation error:
val optForm = formFactory.form(classOf[TypeArgumentForm]).bindFromRequest(FormSpec.dummyRequest(Map(
"optional" -> Array("Microsoft Corporation")
)))
optForm.allErrors().size() must beEqualTo(0)
optForm.get().getOptional.get must beEqualTo("Microsoft Corporation")
}

"work with the @repeat helper" in {
Expand Down
Expand Up @@ -19,8 +19,6 @@
<logger name="play" level="INFO" />

<logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF" />
<!-- https://hibernate.atlassian.net/browse/HV-1323 -->
<logger name="org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator" level="ERROR" />

<root level="WARN">
<appender-ref ref="ASYNCSTDOUT" />
Expand Down
Expand Up @@ -15,8 +15,6 @@
<logger name="play" level="INFO" />

<logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF" />
<!-- https://hibernate.atlassian.net/browse/HV-1323 -->
<logger name="org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator" level="ERROR" />

<root level="WARN">
<appender-ref ref="STDOUT" />
Expand Down
Expand Up @@ -29,9 +29,6 @@

<logger name="play" level="INFO" />

<!-- https://hibernate.atlassian.net/browse/HV-1323 -->
<logger name="org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator" level="ERROR" />

<logger name="org.jdbcdslog.ConnectionLogger" level="OFF" /> <!-- Won' log connections -->
<logger name="org.jdbcdslog.StatementLogger" level="INFO" /> <!-- Will log all statements -->
<logger name="org.jdbcdslog.ResultSetLogger" level="OFF" /> <!-- Won' log result sets -->
Expand Down

0 comments on commit 8e80755

Please sign in to comment.