I am attempting to run the latest Bean Validation 2.0 TCK with OpenLiberty (which uses Hibernate Validator 6.0.4.Final), and am finding that there are a number of tests which aare are testing invalid validation.xml's and expect errors on-use of the application, but OpenLiberty throws these exceptions at app deployment time (due to OpenLiberty performing CDI scanning at app startup time, triggering a read of the validation.xml).
For example: https://github.com/beanvalidation/beanvalidation-tck/blob/master/tests/src/main/java/org/hibernate/beanvalidation/tck/tests/bootstrap/BootstrapConfigurationWithEmptyValidatedExecutableTypesTest.java
https://github.com/beanvalidation/beanvalidation-tck/blob/master/tests/src/main/java/org/hibernate/beanvalidation/tck/tests/xmlconfiguration/ClockProviderSpecifiedInValidationXmlNoDefaultConstructorTest.java
[Section 9 of the spec|http://beanvalidation.org/2.0/spec/#xml] indicates that if any sort of issues arise while processing the validation.xml, then a ValidationException ought to be thrown.
The exception we get at deployment time is still correct (although the ValidationException is wrapped in a CDI DeploymentException): javax.validation.ValidationException: HV000201: Unable to instantiate clock provider class org.hibernate.beanvalidation.tck.tests.xmlconfiguration.XmlDefinedClockProviderWithNoDefaultConstructor. at org.hibernate.validator.internal.xml.ValidationBootstrapParameters.setClockProvider(ValidationBootstrapParameters.java:241) at org.hibernate.validator.internal.xml.ValidationBootstrapParameters.<init>(ValidationBootstrapParameters.java:61) at org.hibernate.validator.internal.engine.ConfigurationImpl.parseValidationXml(ConfigurationImpl.java:512) at org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:317) at org.hibernate.validator.cdi.ValidationExtension.<init>(ValidationExtension.java:119) at com.ibm.ws.beanvalidation.v20.cdi.internal.LibertyHibernateValidatorExtension.delegate(LibertyHibernateValidatorExtension.java:112) at com.ibm.ws.beanvalidation.v20.cdi.internal.LibertyHibernateValidatorExtension.beforeBeanDiscovery(LibertyHibernateValidatorExtension.java:132) at sun.reflect.GeneratedMethodAccessor124.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95) at org.jboss.weld.injection.MethodInvocationStrategy$SpecialParamPlusBeanManagerStrategy.invoke(MethodInvocationStrategy.java:144) at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330) at org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:123) at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308) at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286) at javax.enterprise.inject.spi.ObserverMethod.notify(ObserverMethod.java:124) at org.jboss.weld.util.Observers.notify(Observers.java:166) at org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:285) at org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:273) at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:177) at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:171) at org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:53) at org.jboss.weld.bootstrap.events.AbstractDefinitionContainerEvent.fire(AbstractDefinitionContainerEvent.java:44) at org.jboss.weld.bootstrap.events.BeforeBeanDiscoveryImpl.fire(BeforeBeanDiscoveryImpl.java:54) at org.jboss.weld.bootstrap.WeldStartup.startInitialization(WeldStartup.java:391) at org.jboss.weld.bootstrap.WeldBootstrap.startInitialization(WeldBootstrap.java:76) at com.ibm.ws.cdi.impl.CDIContainerImpl$2.run(CDIContainerImpl.java:142) at com.ibm.ws.cdi.impl.CDIContainerImpl$2.run(CDIContainerImpl.java:139) at java.security.AccessController.doPrivileged(Native Method) at com.ibm.ws.cdi.impl.CDIContainerImpl.applicationStarting(CDIContainerImpl.java:139) at com.ibm.ws.cdi.liberty.CDIRuntimeImpl.applicationStarting(CDIRuntimeImpl.java:383) at com.ibm.ws.container.service.state.internal.ApplicationStateManager.fireStarting(ApplicationStateManager.java:28) at com.ibm.ws.container.service.state.internal.StateChangeServiceImpl.fireApplicationStarting(StateChangeServiceImpl.java:50) at com.ibm.ws.app.manager.module.internal.DeployedAppInfoBase.preDeployApp(DeployedAppInfoBase.java:383) at com.ibm.ws.app.manager.module.internal.DeployedAppInfoBase.deployApp(DeployedAppInfoBase.java:412) at com.ibm.ws.app.manager.war.internal.WARApplicationHandlerImpl.install(WARApplicationHandlerImpl.java:65) at com.ibm.ws.app.manager.internal.statemachine.StartAction.execute(StartAction.java:140) at com.ibm.ws.app.manager.internal.statemachine.ApplicationStateMachineImpl.enterState(ApplicationStateMachineImpl.java:1258) at com.ibm.ws.app.manager.internal.statemachine.ApplicationStateMachineImpl.performAction(ApplicationStateMachineImpl.java:1106) at com.ibm.ws.app.manager.internal.statemachine.ApplicationStateMachineImpl.run(ApplicationStateMachineImpl.java:881) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) |
|