From 34cfe001714b7befc83a452c061a03b9767b6f98 Mon Sep 17 00:00:00 2001 From: kenneth westelinck Date: Mon, 22 Jan 2018 08:17:29 +0100 Subject: [PATCH 1/2] functional test works, still needs to use spring --- examples/osgi-http-service/bundle/pom.xml | 61 ++++++++++++++++- .../osgihttpservice/JerseyApplication.java | 18 +++-- .../spring/SpringResource.java | 17 +++++ .../src/main/resources/spring-context.xml | 7 ++ .../osgi-http-service/functional-test/pom.xml | 15 +++- .../test/AbstractHttpServiceTest.java | 68 ++++++++++++------- ext/spring4/pom.xml | 55 ++++++++++----- .../spring/SpringComponentProvider.java | 24 ++++--- 8 files changed, 196 insertions(+), 69 deletions(-) create mode 100644 examples/osgi-http-service/bundle/src/main/java/org/glassfish/jersey/examples/osgihttpservice/spring/SpringResource.java create mode 100644 examples/osgi-http-service/bundle/src/main/resources/spring-context.xml diff --git a/examples/osgi-http-service/bundle/pom.xml b/examples/osgi-http-service/bundle/pom.xml index 8ac57977e2..911db52bc5 100644 --- a/examples/osgi-http-service/bundle/pom.xml +++ b/examples/osgi-http-service/bundle/pom.xml @@ -41,7 +41,8 @@ --> - + 4.0.0 @@ -58,6 +59,10 @@ OSGi HttpService example bundle + + 4.3.5.RELEASE_1 + + org.glassfish.jersey.containers @@ -77,6 +82,42 @@ org.apache.felix.eventadmin provided + + + org.apache.servicemix.bundles + org.apache.servicemix.bundles.spring-beans + ${spring4.version} + + + + org.apache.servicemix.bundles + org.apache.servicemix.bundles.spring-core + ${spring4.version} + + + + org.apache.servicemix.bundles + org.apache.servicemix.bundles.spring-web + ${spring4.version} + + + + org.apache.servicemix.bundles + org.apache.servicemix.bundles.spring-aop + ${spring4.version} + + + + org.apache.servicemix.bundles + org.apache.servicemix.bundles.spring-context + ${spring4.version} + + + + org.apache.servicemix.bundles + org.apache.servicemix.bundles.spring-expression + ${spring4.version} + @@ -87,8 +128,22 @@ true - org.glassfish.jersey.examples.osgihttpservice - javax.servlet.*;version="[2.4,5.0)",* + + org.glassfish.jersey.examples.osgihttpservice, + org.glassfish.jersey.examples.osgihttpservice.spring + + + javax.servlet.*;version="[2.4,5.0)", + org.springframework.expression, + org.springframework.beans.factory, + org.springframework.beans.factory.xml, + org.springframework.cglib.core, + org.springframework.cglib.proxy, + org.springframework.beans, + org.springframework.context, + org.springframework.context.config, + * + org.glassfish.jersey.examples.osgihttpservice.Activator jersey-osgi-http-service-bundle ${project.version} diff --git a/examples/osgi-http-service/bundle/src/main/java/org/glassfish/jersey/examples/osgihttpservice/JerseyApplication.java b/examples/osgi-http-service/bundle/src/main/java/org/glassfish/jersey/examples/osgihttpservice/JerseyApplication.java index 52714120f1..3286220c64 100644 --- a/examples/osgi-http-service/bundle/src/main/java/org/glassfish/jersey/examples/osgihttpservice/JerseyApplication.java +++ b/examples/osgi-http-service/bundle/src/main/java/org/glassfish/jersey/examples/osgihttpservice/JerseyApplication.java @@ -40,17 +40,15 @@ package org.glassfish.jersey.examples.osgihttpservice; -import java.util.HashSet; -import java.util.Set; -import javax.ws.rs.core.Application; +import org.glassfish.jersey.server.ResourceConfig; +import org.springframework.context.support.ClassPathXmlApplicationContext; -public class JerseyApplication extends Application { +public class JerseyApplication extends ResourceConfig { - @Override - public Set> getClasses() { - Set> result = new HashSet>(); - result.add(StatusResource.class); - return result; - } + public JerseyApplication() { + property("contextConfig", new ClassPathXmlApplicationContext("spring-context.xml")); + packages("org.glassfish.jersey.examples.osgihttpservice.spring"); + register(StatusResource.class); + } } diff --git a/examples/osgi-http-service/bundle/src/main/java/org/glassfish/jersey/examples/osgihttpservice/spring/SpringResource.java b/examples/osgi-http-service/bundle/src/main/java/org/glassfish/jersey/examples/osgihttpservice/spring/SpringResource.java new file mode 100644 index 0000000000..9d113a40f8 --- /dev/null +++ b/examples/osgi-http-service/bundle/src/main/java/org/glassfish/jersey/examples/osgihttpservice/spring/SpringResource.java @@ -0,0 +1,17 @@ +package org.glassfish.jersey.examples.osgihttpservice.spring; + +import javax.inject.Named; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + +@Path("status2") +@Named +public class SpringResource { + + @GET + @Produces("text/plain") + public String getStatus() { + return "active"; + } +} diff --git a/examples/osgi-http-service/bundle/src/main/resources/spring-context.xml b/examples/osgi-http-service/bundle/src/main/resources/spring-context.xml new file mode 100644 index 0000000000..698aeeaa2c --- /dev/null +++ b/examples/osgi-http-service/bundle/src/main/resources/spring-context.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/examples/osgi-http-service/functional-test/pom.xml b/examples/osgi-http-service/functional-test/pom.xml index 88c03f0ea2..ef2f6a650b 100644 --- a/examples/osgi-http-service/functional-test/pom.xml +++ b/examples/osgi-http-service/functional-test/pom.xml @@ -41,7 +41,8 @@ --> - + 4.0.0 @@ -159,6 +160,16 @@ test + + org.glassfish.jersey.ext + jersey-spring4 + test + + + javax.servlet + javax.servlet-api + ${servlet3.version} + @@ -247,7 +258,7 @@ - + diff --git a/examples/osgi-http-service/functional-test/src/test/java/org/glassfish/jersey/examples/osgihttpservice/test/AbstractHttpServiceTest.java b/examples/osgi-http-service/functional-test/src/test/java/org/glassfish/jersey/examples/osgihttpservice/test/AbstractHttpServiceTest.java index 740e699056..45b7ca777b 100644 --- a/examples/osgi-http-service/functional-test/src/test/java/org/glassfish/jersey/examples/osgihttpservice/test/AbstractHttpServiceTest.java +++ b/examples/osgi-http-service/functional-test/src/test/java/org/glassfish/jersey/examples/osgihttpservice/test/AbstractHttpServiceTest.java @@ -40,6 +40,21 @@ package org.glassfish.jersey.examples.osgihttpservice.test; +import org.glassfish.jersey.internal.util.PropertiesHelper; +import org.ops4j.pax.exam.Configuration; +import org.ops4j.pax.exam.Option; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.BundleException; +import org.osgi.service.event.Event; +import org.osgi.service.event.EventConstants; +import org.osgi.service.event.EventHandler; + +import javax.inject.Inject; +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.UriBuilder; import java.net.URI; import java.security.AccessController; import java.util.ArrayList; @@ -53,23 +68,6 @@ import java.util.concurrent.TimeoutException; import java.util.logging.Logger; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.UriBuilder; - -import javax.inject.Inject; - -import org.glassfish.jersey.internal.util.PropertiesHelper; - -import org.ops4j.pax.exam.Configuration; -import org.ops4j.pax.exam.Option; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.BundleException; -import org.osgi.service.event.Event; -import org.osgi.service.event.EventConstants; -import org.osgi.service.event.EventHandler; import static org.junit.Assert.assertEquals; import static org.ops4j.pax.exam.CoreOptions.junitBundles; import static org.ops4j.pax.exam.CoreOptions.mavenBundle; @@ -84,10 +82,14 @@ public abstract class AbstractHttpServiceTest { @Inject BundleContext bundleContext; - /** maximum waiting time for runtime initialization and Jersey deployment */ - public static final long MAX_WAITING_SECONDS = 10L; + /** + * maximum waiting time for runtime initialization and Jersey deployment + */ + public static final long MAX_WAITING_SECONDS = 60L; - /** Latch for blocking the testing thread until the runtime is ready and Jersey deployed */ + /** + * Latch for blocking the testing thread until the runtime is ready and Jersey deployed + */ final CountDownLatch countDownLatch = new CountDownLatch(1); private static final int port = getProperty("jersey.config.test.container.port", 8080); @@ -102,8 +104,7 @@ public abstract class AbstractHttpServiceTest { public abstract List