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

Neil Griffin updated PLUTO-794:
-------------------------------
    Description: 
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]


  was:
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 annotations like 
@


> 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