[ 
https://issues.apache.org/jira/browse/PLUTO-794?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Neil Griffin closed PLUTO-794.
------------------------------
    Resolution: Fixed

> Downgrade to hibernate-validator-5.4.3.Final and validation-api-1.1.0.Final 
> in order to conform to Java EE 7
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: PLUTO-794
>                 URL: https://issues.apache.org/jira/browse/PLUTO-794
>             Project: Pluto
>          Issue Type: Task
>          Components: build system, demo portlets, maven archetypes
>            Reporter: Neil Griffin
>            Assignee: Neil Griffin
>            Priority: Major
>             Fix For: 3.1.1
>
>         Attachments: stacktrace.txt
>
>
> Section 1.8 of the Portlet 3.0 Specification titled "Relationship to Java 
> Enterprise Edition" states:
> {quote}The Portlet API v3.0 is based on the Java Standard Edition 7.0 and 
> Java Enterprise Edition v7.0. Portlet containers should at least meet the 
> requirements described by the Java EE 7.0 specification for executing in a 
> Java EE environment.{quote}
> Pluto 3.x implements the Portlet 3.0 API and [targets Java EE 7, which 
> includes the CDI 1.2 API and the Bean Validation 1.1 
> API|https://en.wikipedia.org/wiki/Jakarta_EE#Web_profile]. . As such, it 
> relies on JBoss Weld 2.3.1.Final (which implements the CDI 1.2 API).
> When trying to upgrade to hibernate-validator-6.0.20.Final via PLUTO-791, the 
> attached [^stacktrace.txt] started happening when trying to onblur out of the 
> "Postal Code" field of the applicant-mvcbean-cdi-jsp-portlet demo. This 
> revealed that hibernate-validator-6.0.20.Final was attempting to call the 
> [javax.enterprise.inject.spi.BeanManager.createInstance()|https://javaee.github.io/javaee-spec/javadocs/javax/enterprise/inject/spi/BeanManager.html#createInstance--]
>  method, which the Javadoc indicates was introduced in CDI 2.0.
> Upon closer examination, the [Hibernate Validator Releases 
> page|https://hibernate.org/validator/releases/6.0/] states that version 6.0 
> targets Bean Validation 2.0, which explains why the Hibernate Validator 
> implementation of the Bean Validation API would be permitted to call version 
> 2.0 method signatures in the Bean Validation API.
> The [Hibernate Validator FAQ 
> page|https://hibernate.org/validator/faq/#whats-the-difference-between-hibernate-validator-3-4-and-5]
>  states that Hibernate Validator 5.x is the reference implementation of Bean 
> Validation 1.1 (JSR 349). In addition, the project's main 
> [pom.xml|https://github.com/hibernate/hibernate-validator/blob/5.4/pom.xml#L133]
>  descriptor corroborates the FAQ. Therefore, in order to be compatible with 
> CDI 1.2 and Bean Validation 1.1 (Java EE 7), it is necessary to downgrade to 
> the newest version of Hibernate Validator 5.x (which is 
> hibernate-validator-5.4.3.Final at the time of this writing) and 
> validation-api-1.1.0.Final
> This task involves downgrading from the following dependency versions:
> {code:xml|title=pom.xml (before)}
> <dependency>
>       <groupId>javax.validation</groupId>
>       <artifactId>validation-api</artifactId>
>       <version>2.0.1.Final</version>
>       <scope>provided</scope>
> </dependency>
> <dependency>
>       <groupId>org.hibernate</groupId>
>       <artifactId>hibernate-validator</artifactId>
>       <version>6.0.14.Final</version>
>       <exclusions>
>               <exclusion>
>                       <groupId>javax.validation</groupId>
>                       <artifactId>validation-api</artifactId>
>               </exclusion>
>       </exclusions>
> </dependency>
> <dependency>
>       <groupId>org.hibernate</groupId>
>       <artifactId>hibernate-validator-cdi</artifactId>
>       <version>6.0.14.Final</version>
> </dependency>
> {code}
> {code:xml|title=pom.xml (after)}
> <dependency>
>       <groupId>javax.validation</groupId>
>       <artifactId>validation-api</artifactId>
>       <version>1.1.0.Final</version>
>       <scope>provided</scope>
> </dependency>
> <dependency>
>       <groupId>org.hibernate</groupId>
>       <artifactId>hibernate-validator</artifactId>
>       <version>5.4.3.Final</version>
>       <exclusions>
>               <exclusion>
>                       <groupId>javax.validation</groupId>
>                       <artifactId>validation-api</artifactId>
>               </exclusion>
>       </exclusions>
> </dependency>
> <dependency>
>       <groupId>org.hibernate</groupId>
>       <artifactId>hibernate-validator-cdi</artifactId>
>       <version>5.4.3.Final</version>
> </dependency>
> {code}
> In addition, since the demo and archetypes use Bean Validation 2.0 
> annotations such as:
> - 
> @[javax.validation.constraints.NotBlank|https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/NotBlank.html]
> - 
> @[javax.validation.constraints.Email|https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/Email.html]
> - 
> @[javax.validation.constraints.Positive|https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/Positive.html]
> ... it will be necessary to use their Bean Validation 1.2 counterparts, which 
> are vendor-specific to Hibernate Validator:
> - 
> @[org.hibernate.validator.constraints.NotBlank|https://docs.jboss.org/hibernate/validator/5.1/api/org/hibernate/validator/constraints/NotBlank.html]
> - 
> @[org.hibernate.validator.constraints.Email|https://docs.jboss.org/hibernate/validator/5.1/api/org/hibernate/validator/constraints/Email.html]
> - 
> @[org.hibernate.validator.constraints.Range|https://docs.jboss.org/hibernate/validator/5.1/api/org/hibernate/validator/constraints/Range.html]



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to