You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@groovy.apache.org by Johan Haleby <jo...@gmail.com> on 2020/02/15 11:57:56 UTC

Problems with OSGi after upgrading to Groovy 3.0.0

Hi,

I'm maintaining an open source library called REST Assured
<http://rest-assured.io/> which uses Groovy under the covers. I'd like to
upgrade from Groovy 2.5.x to 3.0 but when I try to do this I run into
troubles with the OSGi integration. I have a pax exam test that is defined
like this:

@RunWith(PaxExam.class)public class XmlPathOSGiITest {

    @Configuration
    public static Option[] configure() {
        return new Option[]
                {
                        /* System Properties */

systemProperty(EXAM_FAIL_ON_UNRESOLVED_KEY).value("true"),

systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),

                        /* Hamcrest & JUnit bundles */
                        restAssuredJunitBundles(),

                        /* Transitive dependencies needed in the Pax
Exam container.
                        Some of these need to be wrapped because they
are not available as OSGi bundles */

mavenBundle().groupId("org.apache.aries.spifly").artifactId("org.apache.aries.spifly.dynamic.bundle").version("1.2.1"),

mavenBundle().groupId("org.hamcrest").artifactId("hamcrest").versionAsInProject(),

mavenBundle().groupId("org.apache.commons").artifactId("commons-lang3").versionAsInProject(),

mavenBundle().groupId("org.codehaus.groovy").artifactId("groovy-json").versionAsInProject().noStart(),

mavenBundle().groupId("org.codehaus.groovy").artifactId("groovy-xml").versionAsInProject().noStart(),

mavenBundle().groupId("org.codehaus.groovy").artifactId("groovy").versionAsInProject(),


wrappedBundle(mavenBundle().groupId("org.ccil.cowan.tagsoup").artifactId("tagsoup").versionAsInProject()),
                        wrappedBundle(mavenBundle("jakarta.xml.bind",
"jakarta.xml.bind-api").versionAsInProject()),
                        wrappedBundle(mavenBundle("javax.activation",
"activation").version("1.1.1")),

wrappedBundle(mavenBundle("org.apache.httpcomponents",
"httpclient").versionAsInProject()),

wrappedBundle(mavenBundle("org.apache.httpcomponents",
"httpmime").versionAsInProject()),

wrappedBundle(mavenBundle("org.apache.httpcomponents",
"httpcore").versionAsInProject()),

                        /* Rest Assured dependencies needed in the Pax
Exam container to be able to execute the tests below */
                        mavenBundle("io.rest-assured",
"json-path").versionAsInProject(),
                        mavenBundle("io.rest-assured",
"xml-path").versionAsInProject(),
                        mavenBundle("io.rest-assured",
"rest-assured").versionAsInProject(),
                        mavenBundle("io.rest-assured",
"rest-assured-common").versionAsInProject()
                };
    }

    @Test
    public void getUUIDParsesAStringResultToUUID() {
        final String UUID_XML = "<some>\n" +
                "  <thing
id=\"1\">db24eeeb-7fe5-41d3-8f06-986b793ecc91</thing>\n" +
                "  <thing
id=\"2\">d69ded28-d75c-460f-9cbe-1412c60ed4cc</thing>\n" +
                "</some>";

        final UUID uuid = from(UUID_XML).getUUID("some.thing[0]");

        assertThat(uuid,
Matchers.equalTo(UUID.fromString("db24eeeb-7fe5-41d3-8f06-986b793ecc91")));
    }}


This test used to pass in Groovy 2.5.7 but it fails after upgrading to
3.0.0 with this stacktrace:

java.lang.ClassNotFoundException:
org.codehaus.groovy.runtime.ScriptBytecodeAdapter not found by
groovy-xml [20]

    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597)
    at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1375)
    at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1618)
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1548)
    at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at io.restassured.internal.common.assertion.AssertParameter.notNull(AssertParameter.groovy:25)
    at io.restassured.path.xml.XmlPath.get(XmlPath.java:316)
    at io.restassured.path.xml.XmlPath.getUUID(XmlPath.java:584)
    at io.restassured.test.osgi.XmlPathOSGiITest.getUUIDParsesAStringResultToUUID(XmlPathOSGiITest.java:84)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:566)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runLeafWithRetry(ContainerTestRunner.java:97)
    at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChildWithRetry(ContainerTestRunner.java:84)
    at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:75)
    at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:43)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
    at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.invokeViaJUnit(JUnitProbeInvoker.java:124)
    at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.findAndInvoke(JUnitProbeInvoker.java:97)
    at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.call(JUnitProbeInvoker.java:73)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:566)
    at org.ops4j.pax.swissbox.framework.RemoteFrameworkImpl.invokeMethodOnService(RemoteFrameworkImpl.java:435)
    at org.ops4j.pax.swissbox.framework.RemoteFrameworkImpl.invokeMethodOnService(RemoteFrameworkImpl.java:408)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:566)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.lang.Thread.run(Thread.java:834)


I have a pax-exam test that looks like this:

@RunWith(PaxExam.class)public class XmlPathOSGiITest {

    @Configuration
    public static Option[] configure() {
        return new Option[]
                {
                        /* System Properties */

systemProperty(EXAM_FAIL_ON_UNRESOLVED_KEY).value("true"),

systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),

                        /* Hamcrest & JUnit bundles */
                        restAssuredJunitBundles(),

                        /* Transitive dependencies needed in the Pax
Exam container.
                        Some of these need to be wrapped because they
are not available as OSGi bundles */

mavenBundle().groupId("org.apache.aries.spifly").artifactId("org.apache.aries.spifly.dynamic.bundle").version("1.2.1"),

mavenBundle().groupId("org.hamcrest").artifactId("hamcrest").versionAsInProject(),

mavenBundle().groupId("org.apache.commons").artifactId("commons-lang3").versionAsInProject(),

mavenBundle().groupId("org.codehaus.groovy").artifactId("groovy-json").versionAsInProject().noStart(),

mavenBundle().groupId("org.codehaus.groovy").artifactId("groovy-xml").versionAsInProject().noStart(),

mavenBundle().groupId("org.codehaus.groovy").artifactId("groovy").versionAsInProject(),


wrappedBundle(mavenBundle().groupId("org.ccil.cowan.tagsoup").artifactId("tagsoup").versionAsInProject()),
                        wrappedBundle(mavenBundle("jakarta.xml.bind",
"jakarta.xml.bind-api").versionAsInProject()),
                        wrappedBundle(mavenBundle("javax.activation",
"activation").version("1.1.1")),

wrappedBundle(mavenBundle("org.apache.httpcomponents",
"httpclient").versionAsInProject()),

wrappedBundle(mavenBundle("org.apache.httpcomponents",
"httpmime").versionAsInProject()),

wrappedBundle(mavenBundle("org.apache.httpcomponents",
"httpcore").versionAsInProject()),

                        /* Rest Assured dependencies needed in the Pax
Exam container to be able to execute the tests below */
                        mavenBundle("io.rest-assured",
"json-path").versionAsInProject(),
                        mavenBundle("io.rest-assured",
"xml-path").versionAsInProject(),
                        mavenBundle("io.rest-assured",
"rest-assured").versionAsInProject(),
                        mavenBundle("io.rest-assured",
"rest-assured-common").versionAsInProject()
                };
    }

    @Test
    public void getUUIDParsesAStringResultToUUID() {
        final String UUID_XML = "<some>\n" +
                "  <thing
id=\"1\">db24eeeb-7fe5-41d3-8f06-986b793ecc91</thing>\n" +
                "  <thing
id=\"2\">d69ded28-d75c-460f-9cbe-1412c60ed4cc</thing>\n" +
                "</some>";

        final UUID uuid = from(UUID_XML).getUUID("some.thing[0]");

        assertThat(uuid,
Matchers.equalTo(UUID.fromString("db24eeeb-7fe5-41d3-8f06-986b793ecc91")));
    }}

This used to work fine with Groovy 2.5 but after upgrading to Groovy 3.0 I
get the following error:

java.lang.ClassNotFoundException:
org.codehaus.groovy.runtime.ScriptBytecodeAdapter not found by
groovy-xml [20]

    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597)
    at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1375)
    at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1618)
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1548)
    at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at io.restassured.internal.common.assertion.AssertParameter.notNull(AssertParameter.groovy:25)
    at io.restassured.path.xml.XmlPath.get(XmlPath.java:316)
    at io.restassured.path.xml.XmlPath.getUUID(XmlPath.java:584)
    at io.restassured.test.osgi.XmlPathOSGiITest.getUUIDParsesAStringResultToUUID(XmlPathOSGiITest.java:84)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:566)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runLeafWithRetry(ContainerTestRunner.java:97)
    at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChildWithRetry(ContainerTestRunner.java:84)
    at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:75)
    at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:43)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
    at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.invokeViaJUnit(JUnitProbeInvoker.java:124)
    at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.findAndInvoke(JUnitProbeInvoker.java:97)
    at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.call(JUnitProbeInvoker.java:73)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:566)
    at org.ops4j.pax.swissbox.framework.RemoteFrameworkImpl.invokeMethodOnService(RemoteFrameworkImpl.java:435)
    at org.ops4j.pax.swissbox.framework.RemoteFrameworkImpl.invokeMethodOnService(RemoteFrameworkImpl.java:408)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:566)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.lang.Thread.run(Thread.java:834)

I've checked mvn dependency:tree to make sure that I have no remnants of
Groovy 2.5.x still in the classpath.

What could be the cause of this and how do I fix it? Note that you can find
the project on github here
<https://github.com/rest-assured/rest-assured/tree/master/examples/rest-assured-itest-java-osgi>
.

I originally posted this question on stackoverflow
<https://stackoverflow.com/questions/60224686/osgi-tests-no-longer-working-after-upgrading-from-groovy-2-5-to-groovy-3-0>
but
was encouraged to post here as well.

Regards,
/Johan

Re: Problems with OSGi after upgrading to Groovy 3.0.0

Posted by Johan Haleby <jo...@gmail.com>.
Sorry for double posting the pax exam example, guess I copied and pasted
too much from SO.

On Sat, Feb 15, 2020 at 12:57 PM Johan Haleby <jo...@gmail.com>
wrote:

> Hi,
>
> I'm maintaining an open source library called REST Assured
> <http://rest-assured.io/> which uses Groovy under the covers. I'd like to
> upgrade from Groovy 2.5.x to 3.0 but when I try to do this I run into
> troubles with the OSGi integration. I have a pax exam test that is defined
> like this:
>
> @RunWith(PaxExam.class)public class XmlPathOSGiITest {
>
>     @Configuration
>     public static Option[] configure() {
>         return new Option[]
>                 {
>                         /* System Properties */
>                         systemProperty(EXAM_FAIL_ON_UNRESOLVED_KEY).value("true"),
>                         systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
>
>                         /* Hamcrest & JUnit bundles */
>                         restAssuredJunitBundles(),
>
>                         /* Transitive dependencies needed in the Pax Exam container.
>                         Some of these need to be wrapped because they are not available as OSGi bundles */
>                         mavenBundle().groupId("org.apache.aries.spifly").artifactId("org.apache.aries.spifly.dynamic.bundle").version("1.2.1"),
>                         mavenBundle().groupId("org.hamcrest").artifactId("hamcrest").versionAsInProject(),
>                         mavenBundle().groupId("org.apache.commons").artifactId("commons-lang3").versionAsInProject(),
>                         mavenBundle().groupId("org.codehaus.groovy").artifactId("groovy-json").versionAsInProject().noStart(),
>                         mavenBundle().groupId("org.codehaus.groovy").artifactId("groovy-xml").versionAsInProject().noStart(),
>                         mavenBundle().groupId("org.codehaus.groovy").artifactId("groovy").versionAsInProject(),
>
>                         wrappedBundle(mavenBundle().groupId("org.ccil.cowan.tagsoup").artifactId("tagsoup").versionAsInProject()),
>                         wrappedBundle(mavenBundle("jakarta.xml.bind", "jakarta.xml.bind-api").versionAsInProject()),
>                         wrappedBundle(mavenBundle("javax.activation", "activation").version("1.1.1")),
>                         wrappedBundle(mavenBundle("org.apache.httpcomponents", "httpclient").versionAsInProject()),
>                         wrappedBundle(mavenBundle("org.apache.httpcomponents", "httpmime").versionAsInProject()),
>                         wrappedBundle(mavenBundle("org.apache.httpcomponents", "httpcore").versionAsInProject()),
>
>                         /* Rest Assured dependencies needed in the Pax Exam container to be able to execute the tests below */
>                         mavenBundle("io.rest-assured", "json-path").versionAsInProject(),
>                         mavenBundle("io.rest-assured", "xml-path").versionAsInProject(),
>                         mavenBundle("io.rest-assured", "rest-assured").versionAsInProject(),
>                         mavenBundle("io.rest-assured", "rest-assured-common").versionAsInProject()
>                 };
>     }
>
>     @Test
>     public void getUUIDParsesAStringResultToUUID() {
>         final String UUID_XML = "<some>\n" +
>                 "  <thing id=\"1\">db24eeeb-7fe5-41d3-8f06-986b793ecc91</thing>\n" +
>                 "  <thing id=\"2\">d69ded28-d75c-460f-9cbe-1412c60ed4cc</thing>\n" +
>                 "</some>";
>
>         final UUID uuid = from(UUID_XML).getUUID("some.thing[0]");
>
>         assertThat(uuid, Matchers.equalTo(UUID.fromString("db24eeeb-7fe5-41d3-8f06-986b793ecc91")));
>     }}
>
>
> This test used to pass in Groovy 2.5.7 but it fails after upgrading to
> 3.0.0 with this stacktrace:
>
> java.lang.ClassNotFoundException: org.codehaus.groovy.runtime.ScriptBytecodeAdapter not found by groovy-xml [20]
>
>     at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597)
>     at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
>     at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>     at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1375)
>     at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1618)
>     at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1548)
>     at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
>     at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>     at io.restassured.internal.common.assertion.AssertParameter.notNull(AssertParameter.groovy:25)
>     at io.restassured.path.xml.XmlPath.get(XmlPath.java:316)
>     at io.restassured.path.xml.XmlPath.getUUID(XmlPath.java:584)
>     at io.restassured.test.osgi.XmlPathOSGiITest.getUUIDParsesAStringResultToUUID(XmlPathOSGiITest.java:84)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:566)
>     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>     at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runLeafWithRetry(ContainerTestRunner.java:97)
>     at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChildWithRetry(ContainerTestRunner.java:84)
>     at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:75)
>     at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:43)
>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>     at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>     at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
>     at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
>     at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.invokeViaJUnit(JUnitProbeInvoker.java:124)
>     at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.findAndInvoke(JUnitProbeInvoker.java:97)
>     at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.call(JUnitProbeInvoker.java:73)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:566)
>     at org.ops4j.pax.swissbox.framework.RemoteFrameworkImpl.invokeMethodOnService(RemoteFrameworkImpl.java:435)
>     at org.ops4j.pax.swissbox.framework.RemoteFrameworkImpl.invokeMethodOnService(RemoteFrameworkImpl.java:408)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:566)
>     at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
>     at sun.rmi.transport.Transport$1.run(Transport.java:200)
>     at sun.rmi.transport.Transport$1.run(Transport.java:197)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
>     at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)
>     at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796)
>     at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676)
>     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>     at java.lang.Thread.run(Thread.java:834)
>
>
> I have a pax-exam test that looks like this:
>
> @RunWith(PaxExam.class)public class XmlPathOSGiITest {
>
>     @Configuration
>     public static Option[] configure() {
>         return new Option[]
>                 {
>                         /* System Properties */
>                         systemProperty(EXAM_FAIL_ON_UNRESOLVED_KEY).value("true"),
>                         systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
>
>                         /* Hamcrest & JUnit bundles */
>                         restAssuredJunitBundles(),
>
>                         /* Transitive dependencies needed in the Pax Exam container.
>                         Some of these need to be wrapped because they are not available as OSGi bundles */
>                         mavenBundle().groupId("org.apache.aries.spifly").artifactId("org.apache.aries.spifly.dynamic.bundle").version("1.2.1"),
>                         mavenBundle().groupId("org.hamcrest").artifactId("hamcrest").versionAsInProject(),
>                         mavenBundle().groupId("org.apache.commons").artifactId("commons-lang3").versionAsInProject(),
>                         mavenBundle().groupId("org.codehaus.groovy").artifactId("groovy-json").versionAsInProject().noStart(),
>                         mavenBundle().groupId("org.codehaus.groovy").artifactId("groovy-xml").versionAsInProject().noStart(),
>                         mavenBundle().groupId("org.codehaus.groovy").artifactId("groovy").versionAsInProject(),
>
>                         wrappedBundle(mavenBundle().groupId("org.ccil.cowan.tagsoup").artifactId("tagsoup").versionAsInProject()),
>                         wrappedBundle(mavenBundle("jakarta.xml.bind", "jakarta.xml.bind-api").versionAsInProject()),
>                         wrappedBundle(mavenBundle("javax.activation", "activation").version("1.1.1")),
>                         wrappedBundle(mavenBundle("org.apache.httpcomponents", "httpclient").versionAsInProject()),
>                         wrappedBundle(mavenBundle("org.apache.httpcomponents", "httpmime").versionAsInProject()),
>                         wrappedBundle(mavenBundle("org.apache.httpcomponents", "httpcore").versionAsInProject()),
>
>                         /* Rest Assured dependencies needed in the Pax Exam container to be able to execute the tests below */
>                         mavenBundle("io.rest-assured", "json-path").versionAsInProject(),
>                         mavenBundle("io.rest-assured", "xml-path").versionAsInProject(),
>                         mavenBundle("io.rest-assured", "rest-assured").versionAsInProject(),
>                         mavenBundle("io.rest-assured", "rest-assured-common").versionAsInProject()
>                 };
>     }
>
>     @Test
>     public void getUUIDParsesAStringResultToUUID() {
>         final String UUID_XML = "<some>\n" +
>                 "  <thing id=\"1\">db24eeeb-7fe5-41d3-8f06-986b793ecc91</thing>\n" +
>                 "  <thing id=\"2\">d69ded28-d75c-460f-9cbe-1412c60ed4cc</thing>\n" +
>                 "</some>";
>
>         final UUID uuid = from(UUID_XML).getUUID("some.thing[0]");
>
>         assertThat(uuid, Matchers.equalTo(UUID.fromString("db24eeeb-7fe5-41d3-8f06-986b793ecc91")));
>     }}
>
> This used to work fine with Groovy 2.5 but after upgrading to Groovy 3.0 I
> get the following error:
>
> java.lang.ClassNotFoundException: org.codehaus.groovy.runtime.ScriptBytecodeAdapter not found by groovy-xml [20]
>
>     at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597)
>     at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
>     at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>     at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1375)
>     at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1618)
>     at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1548)
>     at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
>     at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>     at io.restassured.internal.common.assertion.AssertParameter.notNull(AssertParameter.groovy:25)
>     at io.restassured.path.xml.XmlPath.get(XmlPath.java:316)
>     at io.restassured.path.xml.XmlPath.getUUID(XmlPath.java:584)
>     at io.restassured.test.osgi.XmlPathOSGiITest.getUUIDParsesAStringResultToUUID(XmlPathOSGiITest.java:84)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:566)
>     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>     at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runLeafWithRetry(ContainerTestRunner.java:97)
>     at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChildWithRetry(ContainerTestRunner.java:84)
>     at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:75)
>     at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:43)
>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>     at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>     at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
>     at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
>     at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.invokeViaJUnit(JUnitProbeInvoker.java:124)
>     at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.findAndInvoke(JUnitProbeInvoker.java:97)
>     at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.call(JUnitProbeInvoker.java:73)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:566)
>     at org.ops4j.pax.swissbox.framework.RemoteFrameworkImpl.invokeMethodOnService(RemoteFrameworkImpl.java:435)
>     at org.ops4j.pax.swissbox.framework.RemoteFrameworkImpl.invokeMethodOnService(RemoteFrameworkImpl.java:408)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:566)
>     at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
>     at sun.rmi.transport.Transport$1.run(Transport.java:200)
>     at sun.rmi.transport.Transport$1.run(Transport.java:197)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
>     at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)
>     at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796)
>     at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676)
>     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>     at java.lang.Thread.run(Thread.java:834)
>
> I've checked mvn dependency:tree to make sure that I have no remnants of
> Groovy 2.5.x still in the classpath.
>
> What could be the cause of this and how do I fix it? Note that you can
> find the project on github here
> <https://github.com/rest-assured/rest-assured/tree/master/examples/rest-assured-itest-java-osgi>
> .
>
> I originally posted this question on stackoverflow
> <https://stackoverflow.com/questions/60224686/osgi-tests-no-longer-working-after-upgrading-from-groovy-2-5-to-groovy-3-0> but
> was encouraged to post here as well.
>
> Regards,
> /Johan
>

Re: Problems with OSGi after upgrading to Groovy 3.0.0

Posted by Johan Haleby <jo...@gmail.com>.
There's now an issue for it here:
https://issues.apache.org/jira/browse/GROOVY-9402

On Sat, Feb 15, 2020 at 6:00 PM Daniel.Sun <su...@apache.org> wrote:

> Hi Johan,
>
>      Please submit a JIRA ticket with a sample code to reproduce the issue.
>
>      Here the link to JIRA:
> https://issues.apache.org/jira/projects/GROOVY/summary
>
> Cheers,
> Daniel.Sun
>
>
>
> -----
> Apache Groovy committer & PMC member
> Blog: http://blog.sunlan.me
> Twitter: @daniel_sun
>
> --
> Sent from: http://groovy.329449.n5.nabble.com/Groovy-Users-f329450.html
>

Re: Problems with OSGi after upgrading to Groovy 3.0.0

Posted by "Daniel.Sun" <su...@apache.org>.
Hi Johan,

     Please submit a JIRA ticket with a sample code to reproduce the issue.

     Here the link to JIRA:
https://issues.apache.org/jira/projects/GROOVY/summary

Cheers,
Daniel.Sun



-----
Apache Groovy committer & PMC member 
Blog: http://blog.sunlan.me 
Twitter: @daniel_sun 

--
Sent from: http://groovy.329449.n5.nabble.com/Groovy-Users-f329450.html