You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Benson Margulies <be...@basistech.com> on 2015/12/11 13:26:34 UTC

Re: Bean Validation

The good news is, now I have a test case.

https://github.com/benson-basis/cxf-karaf-validation-tc

This project demonstrates that Apache CXF 3.1.2 somehow causes
Hibernate to go off the rails, failing to find it's EL provider, in
Karaf. Without the full-started CXF service, it works fine.

I did try something like the proposed workaround in that stackoverflow
question, but I can't figure out what classloader is going to work.
Karaf claims that no bundle exports the class that Hibernate claims to
be looking for.


On Fri, Dec 11, 2015 at 3:46 AM, Charlie Mordant <cm...@gmail.com> wrote:
> Hi Benson,
>
> You should have a more advanced use case than me ^^.
> I fell on this thread:
> http://stackoverflow.com/questions/29678113/el-implementation-is-not-found-for-hibernate-validator-in-osgi-container
>
> So my guess is that:
> * Either there's no el provider on the provisionned bundles ( but i doubt,)
> * Either we should wrap the hibernate validator jar to be weaved by Aries
> spi-fly (that allows to make that bundle's serviceloader working).
>
> You can also try to bump the HV version (I filled a Jira which seems to be
> fixed: https://hibernate.atlassian.net/browse/HV-846).
>
> Regards,
> Charlie
>
> 2015-12-10 19:10 GMT+01:00 Benson Margulies <be...@basistech.com>:
>>
>> Next problem:
>>
>> using your stuff, I get a problem with EL. I think I ran into this
>> before. Charlie, does this ring any bells for you?
>>
>>
>> Caused by: java.lang.ExceptionInInitializerError
>> at
>> org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateExpression(ResourceBundleMessageInterpolator.java:227)
>> at
>> org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateMessage(ResourceBundleMessageInterpolator.java:187)
>> at
>> org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolate(ResourceBundleMessageInterpolator.java:115)
>> at
>> org.hibernate.validator.internal.engine.ValidationContext.interpolate(ValidationContext.java:370)
>> at
>> org.hibernate.validator.internal.engine.ValidationContext.createConstraintViolation(ValidationContext.java:284)
>> at
>> org.hibernate.validator.internal.engine.ValidationContext.createConstraintViolations(ValidationContext.java:246)
>> at
>> org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateSingleConstraint(ConstraintTree.java:289)
>> at
>> org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:133)
>> at
>> org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:91)
>> at
>> org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:85)
>> at
>> org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:478)
>> at
>> org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:424)
>> at
>> org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:388)
>> at
>> org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:340)
>> at
>> org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:158)
>> at
>> com.basistech.ws.common.api.options.OptionsValidator.validate(OptionsValidator.java:35)
>> at
>> com.basistech.ws.common.api.options.ProcessingOptions$Builder.setOptions(ProcessingOptions.java:112)
>> at
>> com.basistech.ws.frontend.service.AbstractRaasRsService.getProcessingOptions(AbstractRaasRsService.java:750)
>> at
>> com.basistech.ws.frontend.service.AbstractRaasRsService.processRequest(AbstractRaasRsService.java:582)
>> at
>> com.basistech.ws.frontend.service.AbstractRaasRsService.processHelper(AbstractRaasRsService.java:210)
>> at
>> com.basistech.ws.frontend.service.RaasRsLanguageService.runRli(RaasRsLanguageService.java:119)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:497)
>> at
>> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
>> at
>> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
>> ... 36 more
>> Caused by: javax.el.ELException: Provider
>> com.sun.el.ExpressionFactoryImpl not found
>> at javax.el.FactoryFinder.newInstance(FactoryFinder.java:101)
>> at javax.el.FactoryFinder.find(FactoryFinder.java:197)
>> at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:197)
>> at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:168)
>> at
>> org.hibernate.validator.internal.engine.messageinterpolation.InterpolationTerm.&lt;clinit&gt;(InterpolationTerm.java:60)
>> ... 63 more
>> Caused by: java.lang.ClassNotFoundException:
>> com.sun.el.ExpressionFactoryImpl not found by
>> org.apache.cxf.cxf-rt-transports-http [110]
>> at
>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1558)
>> at
>> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
>> at
>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1998)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>> at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1919)
>> at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:959)
>> at
>> org.ops4j.pax.swissbox.core.BundleClassLoader.findClass(BundleClassLoader.java:176)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>> at
>> org.ops4j.pax.swissbox.core.BundleClassLoader.loadClass(BundleClassLoader.java:192)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>> at javax.el.FactoryFinder.newInstance(FactoryFinder.java:87)
>> ... 67 more
>> </pre>
>>
>> On Thu, Dec 10, 2015 at 11:21 AM, Benson Margulies <be...@basistech.com>
>> wrote:
>> > I ran into a hitch. You're import won't accept guava 16. I guess I'll
>> > load up two guavas.
>> >
>> > On Mon, Dec 7, 2015 at 10:46 AM, Charlie Mordant <cm...@gmail.com>
>> > wrote:
>> >> Hi Benson,
>> >>
>> >> I got it working making my own validation feature, you can find it
>> >> here:
>> >>
>> >> https://github.com/OsgiliathEnterprise/net.osgiliath.parent/blob/master/net.osgiliath.framework/net.osgiliath.features/net.osgiliath.feature.validation/src/main/resources/net.osgiliath.feature.validation.xml
>> >>
>> >> Regards,
>> >>
>> >> 2015-12-07 16:10 GMT+01:00 Benson Margulies <be...@basistech.com>:
>> >>>
>> >>> I could not get the Hibernate bean validation feature to work in
>> >>> 4.0.x. For one thing, it's in the 'enterprise' feature set, which does
>> >>> not work at all without extra <repository> elements which I can't
>> >>> have. Even when I copied it out, I still couldn't get it to work.
>> >>>
>> >>> So I made a working feature with Apache Bval. However, the Bval
>> >>> project seems to be perpetually asleep, and so I can't get a problem
>> >>> with one of their bundles fixed. So, I'm hoping that someone has an
>> >>> idea about how to rehab the hibernate solution.
>> >>
>> >>
>> >>
>> >>
>> >> --
>> >> Charlie Mordant
>> >>
>> >> Full OSGI/EE stack made with Karaf:
>> >> https://github.com/OsgiliathEnterprise/net.osgiliath.parent
>
>
>
>
> --
> Charlie Mordant
>
> Full OSGI/EE stack made with Karaf:
> https://github.com/OsgiliathEnterprise/net.osgiliath.parent

Re: Bean Validation

Posted by Benson Margulies <be...@basistech.com>.
I finally worked all this out. Hibernate does some of its dynamic
class loading at the time you call _validate_. So, wrapping the call
to create a validator in a setting of the context class loader isn't
good enough. You have to proxy the factory and the validator so that
you can get the right class loader into place for all the calls.  See
https://github.com/apache/cxf/pull/102. If anyone can tell me a way to
make this simpler, I'm all ears.

Re: Bean Validation

Posted by Benson Margulies <be...@basistech.com>.
See also CXF-6706.

I had to adapt Charles' code. Note the addition of the tccl
management; without it, hibernate fails to find WoodStox, which it
looks for.

/**
 * returns the validatorfactory.
 * @return the singleton validatorfactory
 */
public static synchronized ValidatorFactory getValidatorFactory() {
    ClassLoader oldTccl = Thread.currentThread().getContextClassLoader();
    try {
        // our bundle class loader should have wstx in it, which
Hibernate seems to want.
        Thread.currentThread().setContextClassLoader(OSGIValidationFactory.class.getClassLoader());
        if (validatorFactory == null) {
            final
ProviderSpecificBootstrap<HibernateValidatorConfiguration>
validationBootStrap = Validation
                    .byProvider(HibernateValidator.class);

            // bootstrap to properly resolve in an OSGi environment
            validationBootStrap

.providerResolver(HibernateValidationOSGIServicesProviderResolver
                            .getInstance());

            final HibernateValidatorConfiguration configure =
validationBootStrap
                    .configure();
            validatorFactory = configure.buildValidatorFactory();
        }
        return validatorFactory;
    } finally {
        Thread.currentThread().setContextClassLoader(oldTccl);
    }
}

On Fri, Dec 11, 2015 at 8:13 AM, Benson Margulies <be...@basistech.com> wrote:
> Other news: the CXF bean validation features almost work. I'm fixing
> https://issues.apache.org/jira/browse/CXF-6705.
>
> On Fri, Dec 11, 2015 at 7:26 AM, Benson Margulies <be...@basistech.com> wrote:
>> The good news is, now I have a test case.
>>
>> https://github.com/benson-basis/cxf-karaf-validation-tc
>>
>> This project demonstrates that Apache CXF 3.1.2 somehow causes
>> Hibernate to go off the rails, failing to find it's EL provider, in
>> Karaf. Without the full-started CXF service, it works fine.
>>
>> I did try something like the proposed workaround in that stackoverflow
>> question, but I can't figure out what classloader is going to work.
>> Karaf claims that no bundle exports the class that Hibernate claims to
>> be looking for.
>>
>>
>> On Fri, Dec 11, 2015 at 3:46 AM, Charlie Mordant <cm...@gmail.com> wrote:
>>> Hi Benson,
>>>
>>> You should have a more advanced use case than me ^^.
>>> I fell on this thread:
>>> http://stackoverflow.com/questions/29678113/el-implementation-is-not-found-for-hibernate-validator-in-osgi-container
>>>
>>> So my guess is that:
>>> * Either there's no el provider on the provisionned bundles ( but i doubt,)
>>> * Either we should wrap the hibernate validator jar to be weaved by Aries
>>> spi-fly (that allows to make that bundle's serviceloader working).
>>>
>>> You can also try to bump the HV version (I filled a Jira which seems to be
>>> fixed: https://hibernate.atlassian.net/browse/HV-846).
>>>
>>> Regards,
>>> Charlie
>>>
>>> 2015-12-10 19:10 GMT+01:00 Benson Margulies <be...@basistech.com>:
>>>>
>>>> Next problem:
>>>>
>>>> using your stuff, I get a problem with EL. I think I ran into this
>>>> before. Charlie, does this ring any bells for you?
>>>>
>>>>
>>>> Caused by: java.lang.ExceptionInInitializerError
>>>> at
>>>> org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateExpression(ResourceBundleMessageInterpolator.java:227)
>>>> at
>>>> org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateMessage(ResourceBundleMessageInterpolator.java:187)
>>>> at
>>>> org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolate(ResourceBundleMessageInterpolator.java:115)
>>>> at
>>>> org.hibernate.validator.internal.engine.ValidationContext.interpolate(ValidationContext.java:370)
>>>> at
>>>> org.hibernate.validator.internal.engine.ValidationContext.createConstraintViolation(ValidationContext.java:284)
>>>> at
>>>> org.hibernate.validator.internal.engine.ValidationContext.createConstraintViolations(ValidationContext.java:246)
>>>> at
>>>> org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateSingleConstraint(ConstraintTree.java:289)
>>>> at
>>>> org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:133)
>>>> at
>>>> org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:91)
>>>> at
>>>> org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:85)
>>>> at
>>>> org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:478)
>>>> at
>>>> org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:424)
>>>> at
>>>> org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:388)
>>>> at
>>>> org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:340)
>>>> at
>>>> org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:158)
>>>> at
>>>> com.basistech.ws.common.api.options.OptionsValidator.validate(OptionsValidator.java:35)
>>>> at
>>>> com.basistech.ws.common.api.options.ProcessingOptions$Builder.setOptions(ProcessingOptions.java:112)
>>>> at
>>>> com.basistech.ws.frontend.service.AbstractRaasRsService.getProcessingOptions(AbstractRaasRsService.java:750)
>>>> at
>>>> com.basistech.ws.frontend.service.AbstractRaasRsService.processRequest(AbstractRaasRsService.java:582)
>>>> at
>>>> com.basistech.ws.frontend.service.AbstractRaasRsService.processHelper(AbstractRaasRsService.java:210)
>>>> at
>>>> com.basistech.ws.frontend.service.RaasRsLanguageService.runRli(RaasRsLanguageService.java:119)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:497)
>>>> at
>>>> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
>>>> at
>>>> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
>>>> ... 36 more
>>>> Caused by: javax.el.ELException: Provider
>>>> com.sun.el.ExpressionFactoryImpl not found
>>>> at javax.el.FactoryFinder.newInstance(FactoryFinder.java:101)
>>>> at javax.el.FactoryFinder.find(FactoryFinder.java:197)
>>>> at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:197)
>>>> at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:168)
>>>> at
>>>> org.hibernate.validator.internal.engine.messageinterpolation.InterpolationTerm.&lt;clinit&gt;(InterpolationTerm.java:60)
>>>> ... 63 more
>>>> Caused by: java.lang.ClassNotFoundException:
>>>> com.sun.el.ExpressionFactoryImpl not found by
>>>> org.apache.cxf.cxf-rt-transports-http [110]
>>>> at
>>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1558)
>>>> at
>>>> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
>>>> at
>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1998)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>> at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1919)
>>>> at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:959)
>>>> at
>>>> org.ops4j.pax.swissbox.core.BundleClassLoader.findClass(BundleClassLoader.java:176)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>>> at
>>>> org.ops4j.pax.swissbox.core.BundleClassLoader.loadClass(BundleClassLoader.java:192)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>> at javax.el.FactoryFinder.newInstance(FactoryFinder.java:87)
>>>> ... 67 more
>>>> </pre>
>>>>
>>>> On Thu, Dec 10, 2015 at 11:21 AM, Benson Margulies <be...@basistech.com>
>>>> wrote:
>>>> > I ran into a hitch. You're import won't accept guava 16. I guess I'll
>>>> > load up two guavas.
>>>> >
>>>> > On Mon, Dec 7, 2015 at 10:46 AM, Charlie Mordant <cm...@gmail.com>
>>>> > wrote:
>>>> >> Hi Benson,
>>>> >>
>>>> >> I got it working making my own validation feature, you can find it
>>>> >> here:
>>>> >>
>>>> >> https://github.com/OsgiliathEnterprise/net.osgiliath.parent/blob/master/net.osgiliath.framework/net.osgiliath.features/net.osgiliath.feature.validation/src/main/resources/net.osgiliath.feature.validation.xml
>>>> >>
>>>> >> Regards,
>>>> >>
>>>> >> 2015-12-07 16:10 GMT+01:00 Benson Margulies <be...@basistech.com>:
>>>> >>>
>>>> >>> I could not get the Hibernate bean validation feature to work in
>>>> >>> 4.0.x. For one thing, it's in the 'enterprise' feature set, which does
>>>> >>> not work at all without extra <repository> elements which I can't
>>>> >>> have. Even when I copied it out, I still couldn't get it to work.
>>>> >>>
>>>> >>> So I made a working feature with Apache Bval. However, the Bval
>>>> >>> project seems to be perpetually asleep, and so I can't get a problem
>>>> >>> with one of their bundles fixed. So, I'm hoping that someone has an
>>>> >>> idea about how to rehab the hibernate solution.
>>>> >>
>>>> >>
>>>> >>
>>>> >>
>>>> >> --
>>>> >> Charlie Mordant
>>>> >>
>>>> >> Full OSGI/EE stack made with Karaf:
>>>> >> https://github.com/OsgiliathEnterprise/net.osgiliath.parent
>>>
>>>
>>>
>>>
>>> --
>>> Charlie Mordant
>>>
>>> Full OSGI/EE stack made with Karaf:
>>> https://github.com/OsgiliathEnterprise/net.osgiliath.parent

Re: Bean Validation

Posted by Benson Margulies <be...@basistech.com>.
Other news: the CXF bean validation features almost work. I'm fixing
https://issues.apache.org/jira/browse/CXF-6705.

On Fri, Dec 11, 2015 at 7:26 AM, Benson Margulies <be...@basistech.com> wrote:
> The good news is, now I have a test case.
>
> https://github.com/benson-basis/cxf-karaf-validation-tc
>
> This project demonstrates that Apache CXF 3.1.2 somehow causes
> Hibernate to go off the rails, failing to find it's EL provider, in
> Karaf. Without the full-started CXF service, it works fine.
>
> I did try something like the proposed workaround in that stackoverflow
> question, but I can't figure out what classloader is going to work.
> Karaf claims that no bundle exports the class that Hibernate claims to
> be looking for.
>
>
> On Fri, Dec 11, 2015 at 3:46 AM, Charlie Mordant <cm...@gmail.com> wrote:
>> Hi Benson,
>>
>> You should have a more advanced use case than me ^^.
>> I fell on this thread:
>> http://stackoverflow.com/questions/29678113/el-implementation-is-not-found-for-hibernate-validator-in-osgi-container
>>
>> So my guess is that:
>> * Either there's no el provider on the provisionned bundles ( but i doubt,)
>> * Either we should wrap the hibernate validator jar to be weaved by Aries
>> spi-fly (that allows to make that bundle's serviceloader working).
>>
>> You can also try to bump the HV version (I filled a Jira which seems to be
>> fixed: https://hibernate.atlassian.net/browse/HV-846).
>>
>> Regards,
>> Charlie
>>
>> 2015-12-10 19:10 GMT+01:00 Benson Margulies <be...@basistech.com>:
>>>
>>> Next problem:
>>>
>>> using your stuff, I get a problem with EL. I think I ran into this
>>> before. Charlie, does this ring any bells for you?
>>>
>>>
>>> Caused by: java.lang.ExceptionInInitializerError
>>> at
>>> org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateExpression(ResourceBundleMessageInterpolator.java:227)
>>> at
>>> org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateMessage(ResourceBundleMessageInterpolator.java:187)
>>> at
>>> org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolate(ResourceBundleMessageInterpolator.java:115)
>>> at
>>> org.hibernate.validator.internal.engine.ValidationContext.interpolate(ValidationContext.java:370)
>>> at
>>> org.hibernate.validator.internal.engine.ValidationContext.createConstraintViolation(ValidationContext.java:284)
>>> at
>>> org.hibernate.validator.internal.engine.ValidationContext.createConstraintViolations(ValidationContext.java:246)
>>> at
>>> org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateSingleConstraint(ConstraintTree.java:289)
>>> at
>>> org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:133)
>>> at
>>> org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:91)
>>> at
>>> org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:85)
>>> at
>>> org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:478)
>>> at
>>> org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:424)
>>> at
>>> org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:388)
>>> at
>>> org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:340)
>>> at
>>> org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:158)
>>> at
>>> com.basistech.ws.common.api.options.OptionsValidator.validate(OptionsValidator.java:35)
>>> at
>>> com.basistech.ws.common.api.options.ProcessingOptions$Builder.setOptions(ProcessingOptions.java:112)
>>> at
>>> com.basistech.ws.frontend.service.AbstractRaasRsService.getProcessingOptions(AbstractRaasRsService.java:750)
>>> at
>>> com.basistech.ws.frontend.service.AbstractRaasRsService.processRequest(AbstractRaasRsService.java:582)
>>> at
>>> com.basistech.ws.frontend.service.AbstractRaasRsService.processHelper(AbstractRaasRsService.java:210)
>>> at
>>> com.basistech.ws.frontend.service.RaasRsLanguageService.runRli(RaasRsLanguageService.java:119)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:497)
>>> at
>>> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
>>> at
>>> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
>>> ... 36 more
>>> Caused by: javax.el.ELException: Provider
>>> com.sun.el.ExpressionFactoryImpl not found
>>> at javax.el.FactoryFinder.newInstance(FactoryFinder.java:101)
>>> at javax.el.FactoryFinder.find(FactoryFinder.java:197)
>>> at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:197)
>>> at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:168)
>>> at
>>> org.hibernate.validator.internal.engine.messageinterpolation.InterpolationTerm.&lt;clinit&gt;(InterpolationTerm.java:60)
>>> ... 63 more
>>> Caused by: java.lang.ClassNotFoundException:
>>> com.sun.el.ExpressionFactoryImpl not found by
>>> org.apache.cxf.cxf-rt-transports-http [110]
>>> at
>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1558)
>>> at
>>> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
>>> at
>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1998)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>> at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1919)
>>> at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:959)
>>> at
>>> org.ops4j.pax.swissbox.core.BundleClassLoader.findClass(BundleClassLoader.java:176)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>> at
>>> org.ops4j.pax.swissbox.core.BundleClassLoader.loadClass(BundleClassLoader.java:192)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>> at javax.el.FactoryFinder.newInstance(FactoryFinder.java:87)
>>> ... 67 more
>>> </pre>
>>>
>>> On Thu, Dec 10, 2015 at 11:21 AM, Benson Margulies <be...@basistech.com>
>>> wrote:
>>> > I ran into a hitch. You're import won't accept guava 16. I guess I'll
>>> > load up two guavas.
>>> >
>>> > On Mon, Dec 7, 2015 at 10:46 AM, Charlie Mordant <cm...@gmail.com>
>>> > wrote:
>>> >> Hi Benson,
>>> >>
>>> >> I got it working making my own validation feature, you can find it
>>> >> here:
>>> >>
>>> >> https://github.com/OsgiliathEnterprise/net.osgiliath.parent/blob/master/net.osgiliath.framework/net.osgiliath.features/net.osgiliath.feature.validation/src/main/resources/net.osgiliath.feature.validation.xml
>>> >>
>>> >> Regards,
>>> >>
>>> >> 2015-12-07 16:10 GMT+01:00 Benson Margulies <be...@basistech.com>:
>>> >>>
>>> >>> I could not get the Hibernate bean validation feature to work in
>>> >>> 4.0.x. For one thing, it's in the 'enterprise' feature set, which does
>>> >>> not work at all without extra <repository> elements which I can't
>>> >>> have. Even when I copied it out, I still couldn't get it to work.
>>> >>>
>>> >>> So I made a working feature with Apache Bval. However, the Bval
>>> >>> project seems to be perpetually asleep, and so I can't get a problem
>>> >>> with one of their bundles fixed. So, I'm hoping that someone has an
>>> >>> idea about how to rehab the hibernate solution.
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Charlie Mordant
>>> >>
>>> >> Full OSGI/EE stack made with Karaf:
>>> >> https://github.com/OsgiliathEnterprise/net.osgiliath.parent
>>
>>
>>
>>
>> --
>> Charlie Mordant
>>
>> Full OSGI/EE stack made with Karaf:
>> https://github.com/OsgiliathEnterprise/net.osgiliath.parent

Re: Bean Validation

Posted by Benson Margulies <be...@basistech.com>.
Other news: the CXF bean validation features almost work. I'm fixing
https://issues.apache.org/jira/browse/CXF-6705.

On Fri, Dec 11, 2015 at 7:26 AM, Benson Margulies <be...@basistech.com> wrote:
> The good news is, now I have a test case.
>
> https://github.com/benson-basis/cxf-karaf-validation-tc
>
> This project demonstrates that Apache CXF 3.1.2 somehow causes
> Hibernate to go off the rails, failing to find it's EL provider, in
> Karaf. Without the full-started CXF service, it works fine.
>
> I did try something like the proposed workaround in that stackoverflow
> question, but I can't figure out what classloader is going to work.
> Karaf claims that no bundle exports the class that Hibernate claims to
> be looking for.
>
>
> On Fri, Dec 11, 2015 at 3:46 AM, Charlie Mordant <cm...@gmail.com> wrote:
>> Hi Benson,
>>
>> You should have a more advanced use case than me ^^.
>> I fell on this thread:
>> http://stackoverflow.com/questions/29678113/el-implementation-is-not-found-for-hibernate-validator-in-osgi-container
>>
>> So my guess is that:
>> * Either there's no el provider on the provisionned bundles ( but i doubt,)
>> * Either we should wrap the hibernate validator jar to be weaved by Aries
>> spi-fly (that allows to make that bundle's serviceloader working).
>>
>> You can also try to bump the HV version (I filled a Jira which seems to be
>> fixed: https://hibernate.atlassian.net/browse/HV-846).
>>
>> Regards,
>> Charlie
>>
>> 2015-12-10 19:10 GMT+01:00 Benson Margulies <be...@basistech.com>:
>>>
>>> Next problem:
>>>
>>> using your stuff, I get a problem with EL. I think I ran into this
>>> before. Charlie, does this ring any bells for you?
>>>
>>>
>>> Caused by: java.lang.ExceptionInInitializerError
>>> at
>>> org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateExpression(ResourceBundleMessageInterpolator.java:227)
>>> at
>>> org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateMessage(ResourceBundleMessageInterpolator.java:187)
>>> at
>>> org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolate(ResourceBundleMessageInterpolator.java:115)
>>> at
>>> org.hibernate.validator.internal.engine.ValidationContext.interpolate(ValidationContext.java:370)
>>> at
>>> org.hibernate.validator.internal.engine.ValidationContext.createConstraintViolation(ValidationContext.java:284)
>>> at
>>> org.hibernate.validator.internal.engine.ValidationContext.createConstraintViolations(ValidationContext.java:246)
>>> at
>>> org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateSingleConstraint(ConstraintTree.java:289)
>>> at
>>> org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:133)
>>> at
>>> org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:91)
>>> at
>>> org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:85)
>>> at
>>> org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:478)
>>> at
>>> org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:424)
>>> at
>>> org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:388)
>>> at
>>> org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:340)
>>> at
>>> org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:158)
>>> at
>>> com.basistech.ws.common.api.options.OptionsValidator.validate(OptionsValidator.java:35)
>>> at
>>> com.basistech.ws.common.api.options.ProcessingOptions$Builder.setOptions(ProcessingOptions.java:112)
>>> at
>>> com.basistech.ws.frontend.service.AbstractRaasRsService.getProcessingOptions(AbstractRaasRsService.java:750)
>>> at
>>> com.basistech.ws.frontend.service.AbstractRaasRsService.processRequest(AbstractRaasRsService.java:582)
>>> at
>>> com.basistech.ws.frontend.service.AbstractRaasRsService.processHelper(AbstractRaasRsService.java:210)
>>> at
>>> com.basistech.ws.frontend.service.RaasRsLanguageService.runRli(RaasRsLanguageService.java:119)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>> at java.lang.reflect.Method.invoke(Method.java:497)
>>> at
>>> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
>>> at
>>> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
>>> ... 36 more
>>> Caused by: javax.el.ELException: Provider
>>> com.sun.el.ExpressionFactoryImpl not found
>>> at javax.el.FactoryFinder.newInstance(FactoryFinder.java:101)
>>> at javax.el.FactoryFinder.find(FactoryFinder.java:197)
>>> at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:197)
>>> at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:168)
>>> at
>>> org.hibernate.validator.internal.engine.messageinterpolation.InterpolationTerm.&lt;clinit&gt;(InterpolationTerm.java:60)
>>> ... 63 more
>>> Caused by: java.lang.ClassNotFoundException:
>>> com.sun.el.ExpressionFactoryImpl not found by
>>> org.apache.cxf.cxf-rt-transports-http [110]
>>> at
>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1558)
>>> at
>>> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
>>> at
>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1998)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>> at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1919)
>>> at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:959)
>>> at
>>> org.ops4j.pax.swissbox.core.BundleClassLoader.findClass(BundleClassLoader.java:176)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>> at
>>> org.ops4j.pax.swissbox.core.BundleClassLoader.loadClass(BundleClassLoader.java:192)
>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>> at javax.el.FactoryFinder.newInstance(FactoryFinder.java:87)
>>> ... 67 more
>>> </pre>
>>>
>>> On Thu, Dec 10, 2015 at 11:21 AM, Benson Margulies <be...@basistech.com>
>>> wrote:
>>> > I ran into a hitch. You're import won't accept guava 16. I guess I'll
>>> > load up two guavas.
>>> >
>>> > On Mon, Dec 7, 2015 at 10:46 AM, Charlie Mordant <cm...@gmail.com>
>>> > wrote:
>>> >> Hi Benson,
>>> >>
>>> >> I got it working making my own validation feature, you can find it
>>> >> here:
>>> >>
>>> >> https://github.com/OsgiliathEnterprise/net.osgiliath.parent/blob/master/net.osgiliath.framework/net.osgiliath.features/net.osgiliath.feature.validation/src/main/resources/net.osgiliath.feature.validation.xml
>>> >>
>>> >> Regards,
>>> >>
>>> >> 2015-12-07 16:10 GMT+01:00 Benson Margulies <be...@basistech.com>:
>>> >>>
>>> >>> I could not get the Hibernate bean validation feature to work in
>>> >>> 4.0.x. For one thing, it's in the 'enterprise' feature set, which does
>>> >>> not work at all without extra <repository> elements which I can't
>>> >>> have. Even when I copied it out, I still couldn't get it to work.
>>> >>>
>>> >>> So I made a working feature with Apache Bval. However, the Bval
>>> >>> project seems to be perpetually asleep, and so I can't get a problem
>>> >>> with one of their bundles fixed. So, I'm hoping that someone has an
>>> >>> idea about how to rehab the hibernate solution.
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Charlie Mordant
>>> >>
>>> >> Full OSGI/EE stack made with Karaf:
>>> >> https://github.com/OsgiliathEnterprise/net.osgiliath.parent
>>
>>
>>
>>
>> --
>> Charlie Mordant
>>
>> Full OSGI/EE stack made with Karaf:
>> https://github.com/OsgiliathEnterprise/net.osgiliath.parent