I think our best bet is to leave the check in place (not just for
now), for better compatibility with older containers.

The check occurs at class initialization, so it's no performance hit...

Regards,
Jan-Kees


2009/8/24 Michael Concini <[email protected]>:
> Ah. I did just notice that I am pulling in the validation API to the runtime
> instead of just for the build in my sandbox.  One wrong entry when I edited
> the local build script.
>
> Its probably a good idea to have that extra check in there for now anyway
> since I imagine most runtimes don't have their own impl of the validation
> spec yet.
>
> Thanks for looking into this.
> Mike
>
> Jan-Kees van Andel wrote:
>
> I've checked in a fix. It should work now.
> I hope it works, but I still find it strange that WebSphere contains
> Validation API binaries. Did you add them yourself?
> Regards,
> Jan-Kees
> 2009/8/21 Michael Concini <[email protected]>:
>
>
> Glad to be of service :)   Thanks for the quick response.  I'll keep a
> lookout for a fix.
> Thanks.
> Jan-Kees van Andel wrote:
>
>
> I don't understand it. It looks like the BeanValidator.validate method
> is actually called. That should be impossible since it is added in JSF
> 2.0.
> I base my beanval-exists-check on a
> Class.forName("javax.validation.Validator"). It may exist in your
> environment, while an implementation is not available. But since there
> is no official Bean Validation release yet, this should not be
> possible. When it gets released though, this may happen, so I'm gonna
> try to modify the code so that it does a more thorough check.
> When it's committed, I'll let you know.
> /JK
> Ps. Mike: It looks like you're my first customer. :-)
> 2009/8/21 Michael Concini <[email protected]>:
>
>
> |I was doing a quick reqression test on the myfaces-example-simple app,
> and
> I hit the exception below trying to run sample1.  Looks to be introduced
> by the recent drop for the bean validation work.
> I haven't worked with the validation APIs before so its very possible
> I've
> missed a step. Is there some steps that need to be followed to get this
> working?
> Thanks,
> Mike
> javax.servlet.ServletException: Could not create a default provider
>       at
> javax.faces.webapp.FacesServlet._handleStandardRequest(FacesServlet.java:456)
>       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:182)
>       at
> com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1072)
>       at
> com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:646)
>       at
> com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:406)
>       at
> com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:175)
>       at
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:127)
>       at
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93)
>       at
> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)
>       at
> com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
>       at
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
>       at
> com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:890)
>       at
> com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:943)
>       at
> com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:86)
>       at
> com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:881)
>       at
> com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1567)
>       at
> com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:178)
>       at
> com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)
>       at
> com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)
>       at
> com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
>       at
> com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
>       at
> com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
>       at
> com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
>       at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
>       at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
>       at
> com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
>       at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
>       at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1554)
> Caused by: javax.validation.ValidationException: Could not create a
> default
> provider
>       at
> javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:170)
>       at
> javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:45)
>       at
> javax.faces.validator.BeanValidator.createValidatorFactory(BeanValidator.java:271)
>       at
> javax.faces.validator.BeanValidator.validate(BeanValidator.java:181)
>       at
> javax.faces.component._ComponentUtils.callValidators(_ComponentUtils.java:158)
>       at javax.faces.component.UIInput.validateValue(UIInput.java:350)
>       at javax.faces.component.UIInput.validate(UIInput.java:497)
>       at
> javax.faces.component.UIInput.processValidators(UIInput.java:184)
>       at javax.faces.component.UIForm.processValidators(UIForm.java:94)
>       at
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1131)
>       at
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1131)
>       at
> javax.faces.component.UIViewRoot._processValidatorsDefault(UIViewRoot.java:1211)
>       at javax.faces.component.UIViewRoot.access$600(UIViewRoot.java:74)
>       at
> javax.faces.component.UIViewRoot$ProcessValidatorPhaseProcessor.process(UIViewRoot.java:1258)
>       at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1185)
>       at
> javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:655)
>       at
> org.apache.myfaces.lifecycle.ProcessValidationsExecutor.execute(ProcessValidationsExecutor.java:35)
>       at
> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:127)
>       at
> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:83)
>       at
> javax.faces.webapp.FacesServlet._handleStandardRequest(FacesServlet.java:421)
>       ... 27 more
> Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
>       at java.util.ArrayList.get(ArrayList.java:338)
>       at
> javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:168)
>       ... 46 more
> |||
>
>
>
>
>
>
>
>

Reply via email to