<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">On 8/14/2013 3:08 PM, Farah Juma wrote:<br>
    </div>
    <blockquote
      cite="mid:42261114.4834830.1376507321848.JavaMail.root@redhat.com"
      type="cite">
      <pre wrap="">Hi,

I recently worked on CDI and Bean Validation integration for method validation (WFLY-529). As described in [1], part of this work involved replacing the delegate of the EE LazyValidatorFactory with a CDI-enabled ValidatorFactory. However, JCA and JPA still currently use copied versions of the old EE LazyValidatorFactory. Since JCA and JPA should also have access to the CDI-enabled ValidatorFactory, it would be good if we could remove the copies (i.e., remove JCAValidatorFactory and JPALazyValidatorFactory) and use the current EE LazyValidatorFactory directly instead. As discussed with Scott Marlow, for JPA, it looks like we can access the EE LazyValidatorFactory from the deployment unit attachment (i.e., via deploymentUnit.getAttachment(BeanValidationAttachments.VALIDATOR_FACTORY)), as described in WFLY-1705 [2]. However, for JCA, it doesn't seem like this will be possible since the code that currently instantiates the JCAValidatorFactory doesn't have access to the deploymen!
 tUnit (and it seems like there isn't a way to modify the code to be able to access this). Another option might be to register the ValidatorFactory as a service and then perform a manual lookup on the service.

I was wondering if anyone had any thoughts about what approach to take for JCA or how to go about removing the JCAValidatorFactory. I've created WFLY-1882 [3] to track this. In addition to JCA and JPA, we'll need to consider what should be done for JSF since it will also need to be able to access the CDI-enabled ValidatorFactory. Note that JSF doesn't use a copy of the EE LazyValidatorFactory and so it seems to be bootstrapping Bean Validation in another way.</pre>
    </blockquote>
    Farah,<br>
    <br>
    JSF bootstraps Bean Validation as per JSF spec section 3.5.6.2:<br>
    <br>
    <blockquote><i>The Bean Validation ValidatorFactory is the main
        entry point into Bean Validation and is responsible for creating</i><i><br>
      </i><i>Validator instances. [P1-start-validatoryfactory]A
        ValidatorFactory is retrieved using the following algorithm:</i><i><br>
      </i><i>If the servlet context contains a ValidatorFactory instance
        under the attribute named</i><i><br>
      </i><i>javax.faces.validator.beanValidator.ValidatorFactory, this
        instance is used by JSF to acquire Validator instances</i><i><br>
      </i><i>(specifically in the BeanValidator). This key should be
        defined in the constant named VALIDATOR_FACTORY_KEY</i><i><br>
      </i><i>on BeanValidator.</i><i><br>
      </i><i>If the servlet context does not contain such an entry, JSF
        looks for a Bean Validation provider in the classpath. If</i><i><br>
      </i><i>present, the standard Bean Validation bootstrap strategy is
        used. If not present, Bean Validation integration is</i><i><br>
      </i><i>disabled.</i><i><br>
      </i></blockquote>
    In our case, we use the second method, which is to simply place the
    Bean Validation provider in the classpath.&nbsp; For every deployment
    that uses JSF, the JSF subsystem will add the
    org.hibernate.validator module to the deployment.<br>
    <br>
    <br>
    <blockquote
      cite="mid:42261114.4834830.1376507321848.JavaMail.root@redhat.com"
      type="cite">
      <pre wrap="">

[1] <a class="moz-txt-link-freetext" href="https://issues.jboss.org/browse/WFLY-529?focusedCommentId=12787076&amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12787076">https://issues.jboss.org/browse/WFLY-529?focusedCommentId=12787076&amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12787076</a>
[2] <a class="moz-txt-link-freetext" href="https://issues.jboss.org/browse/WFLY-1705">https://issues.jboss.org/browse/WFLY-1705</a>
[3] <a class="moz-txt-link-freetext" href="https://issues.jboss.org/browse/WFLY-1882">https://issues.jboss.org/browse/WFLY-1882</a>

Thanks,
Farah

_______________________________________________
wildfly-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:wildfly-dev@lists.jboss.org">wildfly-dev@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/wildfly-dev">https://lists.jboss.org/mailman/listinfo/wildfly-dev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>