You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brooklyn.apache.org by "Aled Sage (JIRA)" <ji...@apache.org> on 2016/08/23 22:23:20 UTC

[jira] [Created] (BROOKLYN-338) brooklyn-rest-client feature fails when used it in Karaf

Aled Sage created BROOKLYN-338:
----------------------------------

             Summary: brooklyn-rest-client feature fails when used it in Karaf
                 Key: BROOKLYN-338
                 URL: https://issues.apache.org/jira/browse/BROOKLYN-338
             Project: Brooklyn
          Issue Type: Bug
            Reporter: Aled Sage


Running in Karaf with 0.10.0-SNAPSHOT, I was trying to use a Java-based entity that depended on brooklyn-rest-client. Unfortunately it gave the error below when trying to call {{BrooklynApi.getServerApi}}:

{noformat}
14:13:12,744 WARN  110 internal.EffectorUtils         [ager-hNCDIaY7-10] Error invoking start at TestRunnerImpl{id=q32d37v4bj}: interface org.jboss.resteasy.client.core.marshallers.ResteasyClientProxy is not visible from class loader
14:13:12,744 DEBUG 110 internal.EffectorUtils         [ager-hNCDIaY7-10] Error invoking start at TestRunnerImpl{id=q32d37v4bj}
java.util.concurrent.ExecutionException: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: interface org.jboss.resteasy.client.core.marshallers.ResteasyClientProxy is not visible from class loader
        at org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext.invokeEffectorMethodSync(AbstractManagementContext.java:343)[110:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.mgmt.internal.EffectorUtils.invokeMethodEffector(EffectorUtils.java:276)[110:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.effector.MethodEffector.call(MethodEffector.java:148)[110:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.entity.trait.Startable$StartEffectorBody.call(Startable.java:56)[110:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.entity.trait.Startable$StartEffectorBody.call(Startable.java:50)[110:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.effector.EffectorTasks$EffectorBodyTaskFactory$1.call(EffectorTasks.java:82)[110:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:359)[110:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:519)[110:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_80]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_80]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_80]
        at java.lang.Thread.run(Thread.java:745)[:1.7.0_80]
Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: interface org.jboss.resteasy.client.core.marshallers.ResteasyClientProxy is not visible from class loader
        at org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:129)
        at org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:372)
        at io.cloudsoft.test.scheduler.TestRunnerImpl.performAmpConnectivityTests(TestRunnerImpl.java:115)
        at io.cloudsoft.test.scheduler.TestRunnerImpl.start(TestRunnerImpl.java:64)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_80]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_80]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_80]
        at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_80]
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)[54:groovy-all:2.3.7]
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)[54:groovy-all:2.3.7]
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)[54:groovy-all:2.3.7]
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)[54:groovy-all:2.3.7]
        at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)[54:groovy-all:2.3.7]
        at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)[jar:bundle://54.0:0/!/:2.3.7]
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)[54:groovy-all:2.3.7]
        at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)[jar:bundle://54.0:0/!/:2.3.7]
        at org.apache.brooklyn.util.groovy.GroovyJavaMethods.invokeMethodOnMetaClass(GroovyJavaMethods.java:191)[135:org.apache.brooklyn.utils-groovy:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext.invokeEffectorMethodLocal(AbstractManagementContext.java:315)[110:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext.invokeEffectorMethodSync(AbstractManagementContext.java:339)[110:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        ... 11 more
Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: interface org.jboss.resteasy.client.core.marshallers.ResteasyClientProxy is not visible from class loader
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)[:1.7.0_80]
        at java.util.concurrent.FutureTask.get(FutureTask.java:188)[:1.7.0_80]
        at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
        at org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:361)
        at org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:370)
        ... 28 more
Caused by: java.lang.IllegalArgumentException: interface org.jboss.resteasy.client.core.marshallers.ResteasyClientProxy is not visible from class loader
        at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:616)[:1.7.0_80]
        at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:592)[:1.7.0_80]
        at java.lang.reflect.WeakCache$Factory.get(WeakCache.java:244)[:1.7.0_80]
        at java.lang.reflect.WeakCache.get(WeakCache.java:141)[:1.7.0_80]
        at java.lang.reflect.Proxy.getProxyClass0(Proxy.java:455)[:1.7.0_80]
        at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:738)[:1.7.0_80]
        at org.jboss.resteasy.client.ProxyBuilder.createProxy(ProxyBuilder.java:166)[282:wrap_file__Users_drigodwin_Documents_amp-pro_cloudsoft-amp-karaf-4.0.0-SNAPSHOT_system_org_jboss_resteasy_resteasy-jaxrs_3.0.8.Final_resteasy-jaxrs-3.0.8.Final.jar:0.0.0]
        at org.jboss.resteasy.client.ProxyBuilder.now(ProxyBuilder.java:129)[282:wrap_file__Users_drigodwin_Documents_amp-pro_cloudsoft-amp-karaf-4.0.0-SNAPSHOT_system_org_jboss_resteasy_resteasy-jaxrs_3.0.8.Final_resteasy-jaxrs-3.0.8.Final.jar:0.0.0]
        at org.jboss.resteasy.client.ProxyFactory.create(ProxyFactory.java:70)[282:wrap_file__Users_drigodwin_Documents_amp-pro_cloudsoft-amp-karaf-4.0.0-SNAPSHOT_system_org_jboss_resteasy_resteasy-jaxrs_3.0.8.Final_resteasy-jaxrs-3.0.8.Final.jar:0.0.0]
        at org.jboss.resteasy.client.ProxyFactory.create(ProxyFactory.java:65)[282:wrap_file__Users_drigodwin_Documents_amp-pro_cloudsoft-amp-karaf-4.0.0-SNAPSHOT_system_org_jboss_resteasy_resteasy-jaxrs_3.0.8.Final_resteasy-jaxrs-3.0.8.Final.jar:0.0.0]
        at org.jboss.resteasy.client.ProxyFactory.create(ProxyFactory.java:60)[282:wrap_file__Users_drigodwin_Documents_amp-pro_cloudsoft-amp-karaf-4.0.0-SNAPSHOT_system_org_jboss_resteasy_resteasy-jaxrs_3.0.8.Final_resteasy-jaxrs-3.0.8.Final.jar:0.0.0]
        at org.jboss.resteasy.client.ProxyFactory.create(ProxyFactory.java:43)[282:wrap_file__Users_drigodwin_Documents_amp-pro_cloudsoft-amp-karaf-4.0.0-SNAPSHOT_system_org_jboss_resteasy_resteasy-jaxrs_3.0.8.Final_resteasy-jaxrs-3.0.8.Final.jar:0.0.0]
        at org.apache.brooklyn.rest.client.BrooklynApi.proxy(BrooklynApi.java:268)[120:org.apache.brooklyn.rest-client:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.rest.client.BrooklynApi.getServerApi(BrooklynApi.java:354)[120:org.apache.brooklyn.rest-client:0.10.0.SNAPSHOT]
        at io.cloudsoft.test.scheduler.rest.client.BrooklynRestClientImpl.isServerUp(BrooklynRestClientImpl.java:117)[60:io.cloudsoft.amp.qaframework.qa-test-scheduler:1.0.0.SNAPSHOT]
        at io.cloudsoft.test.scheduler.TestRunnerImpl$2.call(TestRunnerImpl.java:110)[60:io.cloudsoft.amp.qaframework.qa-test-scheduler:1.0.0.SNAPSHOT]
        at io.cloudsoft.test.scheduler.TestRunnerImpl$2.call(TestRunnerImpl.java:107)[60:io.cloudsoft.amp.qaframework.qa-test-scheduler:1.0.0.SNAPSHOT]
        ... 6 more
14:13:12,746 DEBUG 110 task.CompoundTask              [ager-hNCDIaY7-10] Parent task DstJob:HtFg6n00 ignoring child error (org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: interface org.jboss.resteasy.client.core.marshallers.ResteasyClientProxy is not visible from class loader) in presence of our own error (org.apache.brooklyn.core.mgmt.internal.EffectorUtils$EffectorCallPropagatedRuntimeException: Error invoking start at TestRunnerImpl{id=q32d37v4bj}: interface org.jboss.resteasy.client.core.marshallers.ResteasyClientProxy is not visible from class loader)
{noformat}

---
Fixed the immediate error by adding to {{brooklyn-rest-client/pom.xml}}:

{noformat}
<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.5.3</version>
    <extensions>true</extensions>
    <configuration>
        <instructions>
            <Import-Package>*,org.jboss.resteasy.client.core.marshallers</Import-Package>
        </instructions>
    </configuration>
</plugin>
{noformat}

Note the absence of version in the import. Because it is built with pax wrap ({{wrap:mvn:org.jboss.resteasy/resteasy-jaxrs/${resteasy.version}}}) it gets version {{0}}. So got a wiring error.

When giving it an explicit version number (with {{wrap:mvn:org.jboss.resteasy/resteasy-jaxrs/${resteasy.version}$Bundle-Version=${resteasy.version}}}), that seemingly just gave the bundle the version number and not the Export-Packages, so still got the same wiring error.

Hence backing off from giving any version number requirement in the Import-Package.

---
The next error was:

{noformat}
19:58:18,728 DEBUG 121 internal.EffectorUtils         [nager-muB1cYlC-7] Error invoking start at TestRunnerImpl{id=v470nl1isq}
java.util.concurrent.ExecutionException: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: ReaderException: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/json and type boolean
        at org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext.invokeEffectorMethodSync(AbstractManagementContext.java:343)[121:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.mgmt.internal.EffectorUtils.invokeMethodEffector(EffectorUtils.java:276)[121:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.effector.MethodEffector.call(MethodEffector.java:148)[121:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.entity.trait.Startable$StartEffectorBody.call(Startable.java:56)[121:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.entity.trait.Startable$StartEffectorBody.call(Startable.java:50)[121:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.effector.EffectorTasks$EffectorBodyTaskFactory$1.call(EffectorTasks.java:82)[121:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:359)[121:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:519)[121:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_71]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_71]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_71]
        at java.lang.Thread.run(Thread.java:745)[:1.7.0_71]
Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: ReaderException: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/json and type boolean
        at org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:129)
        at org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:372)
        at io.cloudsoft.test.scheduler.TestRunnerImpl.performAmpConnectivityTests(TestRunnerImpl.java:115)
        at io.cloudsoft.test.scheduler.TestRunnerImpl.start(TestRunnerImpl.java:64)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_71]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_71]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_71]
        at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_71]
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)[90:groovy-all:2.3.7]
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)[90:groovy-all:2.3.7]
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)[90:groovy-all:2.3.7]
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)[90:groovy-all:2.3.7]
        at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)[90:groovy-all:2.3.7]
        at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)[mvn:org.codehaus.groovy/groovy-all/2.3.7:2.3.7]
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)[90:groovy-all:2.3.7]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)[90:groovy-all:2.3.7]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)[90:groovy-all:2.3.7]
        at org.apache.brooklyn.util.groovy.GroovyJavaMethods.invokeMethodOnMetaClass(GroovyJavaMethods.java:191)[143:org.apache.brooklyn.utils-groovy:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext.invokeEffectorMethodLocal(AbstractManagementContext.java:315)[121:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        at org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext.invokeEffectorMethodSync(AbstractManagementContext.java:339)[121:org.apache.brooklyn.core:0.10.0.SNAPSHOT]
        ... 11 more
Caused by: java.util.concurrent.ExecutionException: org.jboss.resteasy.spi.ReaderException: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/json and type boolean
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)[:1.7.0_71]
        at java.util.concurrent.FutureTask.get(FutureTask.java:188)[:1.7.0_71]
        at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
        at org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:361)
        at org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:370)
        ... 29 more
Caused by: org.jboss.resteasy.spi.ReaderException: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/json and type boolean
        at org.jboss.resteasy.client.core.BaseClientResponse.readFrom(BaseClientResponse.java:470)
        at org.jboss.resteasy.client.core.BaseClientResponse.getEntity(BaseClientResponse.java:385)
        at org.jboss.resteasy.client.core.BaseClientResponse.getEntity(BaseClientResponse.java:358)
        at org.jboss.resteasy.client.core.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:61)
        at org.jboss.resteasy.client.core.ClientInvoker.invoke(ClientInvoker.java:125)
        at org.jboss.resteasy.client.core.ClientProxy.invoke(ClientProxy.java:88)
        at com.sun.proxy.$Proxy83.isUp(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_71]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_71]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_71]
        at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_71]
        at org.apache.brooklyn.rest.client.BrooklynApi$3.invoke(BrooklynApi.java:290)[290:org.apache.brooklyn.rest-client:0.10.0.SNAPSHOT]
        at com.sun.proxy.$Proxy84.isUp(Unknown Source)[128:org.apache.brooklyn.rest-api:0.10.0.SNAPSHOT]
        at io.cloudsoft.test.scheduler.rest.client.BrooklynRestClientImpl.isServerUp(BrooklynRestClientImpl.java:117)[280:io.cloudsoft.amp.qaframework.qa-test-scheduler:1.0.0.SNAPSHOT]
        at io.cloudsoft.test.scheduler.TestRunnerImpl$2.call(TestRunnerImpl.java:110)[280:io.cloudsoft.amp.qaframework.qa-test-scheduler:1.0.0.SNAPSHOT]
        at io.cloudsoft.test.scheduler.TestRunnerImpl$2.call(TestRunnerImpl.java:107)[280:io.cloudsoft.amp.qaframework.qa-test-scheduler:1.0.0.SNAPSHOT]
        ... 6 more
Caused by: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/json and type boolean
        at org.jboss.resteasy.core.interception.ClientReaderInterceptorContext.throwReaderNotFound(ClientReaderInterceptorContext.java:39)
        at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.getReader(AbstractReaderInterceptorContext.java:73)
        at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:50)
        at org.jboss.resteasy.client.core.BaseClientResponse.readFrom(BaseClientResponse.java:434)
        ... 21 more
{noformat}


The normal reason for this (e.g. http://stackoverflow.com/questions/14775572/unable-to-find-a-messagebodyreader-of-content-type-application-json) is that RESTEasy Jackson provider is missing from the classpath.

Indeed, looking at {{bundle:list -s -t 0 | grep -i resteasy}}, it showed that the only resteasy bundle was {{wrap_file__Users_aled_repos_cloudsoft_amp_karaf_cloudsoft-amp_target_assembly_system_org_jboss_resteasy_resteasy-jaxrs_3.0.8.Final_resteasy-jaxrs-3.0.8.Final.jar}}.

It probably missed the others out because they were considered "optional".

---
Tried removing {{dependency="true"}} from each bundle in the brooklyn-rest-client feature (as defined in brooklyn).

This forced it try to add all those bundles, but led to the error below:

{noformat}
18:45:56,538 ERROR  10 service.BootFeaturesInstaller  [pool-7-thread-1 ] Error installing boot features
org.osgi.service.resolver.ResolutionException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=brooklyn-rest-client; type=karaf.feature; version=0 [caused by: Unable to resolve brooklyn-rest-client/0.10.0.SNAPSHOT: missing requirement [brooklyn-rest-client/0.10.0.SNAPSHOT] osgi.identity; osgi.identity=com.fasterxml.jackson.datatype.jackson-datatype-guava; type=osgi.bundle; version="[2.4.5,2.4.5]"; resolution:=mandatory [caused by: Unable to resolve com.fasterxml.jackson.datatype.jackson-datatype-guava/2.4.5: missing requirement [com.fasterxml.jackson.datatype.jackson-datatype-guava/2.4.5] osgi.wiring.package; filter:="(&(osgi.wiring.package=com.google.common.base)(version>=15.0.0)(!(version>=15.1.0)))"]]
        at org.apache.felix.resolver.ResolutionError.toException(ResolutionError.java:42)[org.apache.felix.framework-5.4.0.jar:]
        at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:235)[org.apache.felix.framework-5.4.0.jar:]
        at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:158)[org.apache.felix.framework-5.4.0.jar:]
        at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:216)[10:org.apache.karaf.features.core:4.0.4]
        at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:263)[10:org.apache.karaf.features.core:4.0.4]
        at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:259)[10:org.apache.karaf.features.core:4.0.4]
        at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1089)[10:org.apache.karaf.features.core:4.0.4]
        at org.apacqhe.karaf.features.internal.service.FeaturesServiceImpl$1.call(FeaturesServiceImpl.java:985)[10:org.apache.karaf.features.core:4.0.4]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_71]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_71]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_71]
        at java.lang.Thread.run(Thread.java:745)[:1.7.0_71]
{noformat}

At this point, when it needs yet another different version of guava (between {{[15.0.0, 15.1)}}), things are getting depressing!

---
The long-term solution is probably to refactor brooklyn-rest-client: to have it just depend on {{javax.ws.rs}}, and then the user of the feature gets to choose the impl (where we test with cxf).

The short-term solution for my problem was to abandon using brooklyn-rest-client in my Java entity, and to instead use a combination of Brooklyn's HttpTool and fasterxml.jackson ObjectMapper.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)