You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2019/10/31 08:42:50 UTC
[karaf] branch master updated: [KARAF-6452] Add SCR CXF example
This is an automated email from the ASF dual-hosted git repository.
jbonofre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/karaf.git
The following commit(s) were added to refs/heads/master by this push:
new 73bed3c [KARAF-6452] Add SCR CXF example
new f6233ae Merge pull request #978 from jbonofre/KARAF-6452
73bed3c is described below
commit 73bed3ceae64f46e5dbbd2f61711fecf17a7ec3f
Author: Jean-Baptiste Onofré <jb...@apache.org>
AuthorDate: Wed Oct 30 06:01:08 2019 +0100
[KARAF-6452] Add SCR CXF example
---
examples/karaf-rest-example/README.md | 24 +++++++++--
.../pom.xml | 6 +--
.../rest/blueprint}/BookingServiceRest.java | 2 +-
.../src/main/resources/OSGI-INF/blueprint/rest.xml | 2 +-
.../src/main/feature/feature.xml | 20 +++++++--
.../pom.xml | 34 +++++++++++----
.../examples/rest/scr}/BookingServiceRest.java | 18 +++-----
.../karaf/examples/rest/scr/RestService.java} | 22 +++++++---
examples/karaf-rest-example/pom.xml | 5 ++-
examples/karaf-soap-example/README.md | 11 +++--
.../pom.xml | 29 ++++++-------
.../soap/blueprint}/BookingServiceSoap.java | 2 +-
.../soap/blueprint}/BookingServiceSoapImpl.java | 4 +-
.../src/main/resources/OSGI-INF/blueprint/soap.xml | 4 +-
.../karaf-soap-example-client/pom.xml | 2 +-
.../karaf/examples/soap/client/CxfClient.java | 2 +-
.../src/main/feature/feature.xml | 13 +++++-
.../pom.xml | 48 ++++++++++++++--------
.../examples/soap/scr}/BookingServiceSoap.java | 2 +-
.../examples/soap/scr}/BookingServiceSoapImpl.java | 9 ++--
.../karaf/examples/soap/scr/SoapService.java} | 19 ++++++---
examples/karaf-soap-example/pom.xml | 3 +-
.../karaf/itests/examples/RestExampleTest.java | 30 ++++++++++++--
.../karaf/itests/examples/SoapExampleTest.java | 32 +++++++++++++--
24 files changed, 238 insertions(+), 105 deletions(-)
diff --git a/examples/karaf-rest-example/README.md b/examples/karaf-rest-example/README.md
index 826b55e..93ba30d 100644
--- a/examples/karaf-rest-example/README.md
+++ b/examples/karaf-rest-example/README.md
@@ -1,4 +1,4 @@
-<!--
+ <!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
@@ -31,10 +31,12 @@ The "client" bundle uses the `BookingService` with a REST client stub.
## Artifacts
* **karaf-rest-example-api** is a common bundle containing the `Booking` POJO and the `BookingService` interface.
-* **karaf-rest-example-provider** is a blueprint bundle providing the `BookingServiceRest` implementation of the `BookingService` interface.
+* **karaf-rest-example-blueprint** is a blueprint bundle providing the `BookingServiceRest` implementation of the `BookingService` interface.
+* **karaf-rest-example-scr** is a SCR bundle providing the `BookingServiceRest` implementation of the `BookingService` interface.
* **karaf-rest-example-client** is a regular Blueprint bundle using the `BookingService`.
* **karaf-rest-example-client-http** is a regular Blueprint REST client bundle using Java Http.
* **karaf-rest-example-client-cxf** is a regular Blueprint REST client bundle using Apache CXF.
+* **karaf-rest-example-whiteboard** is another way to deploy REST services using whiteboard pattern.
* **karaf-rest-example-features** provides a Karaf features repository used for the deployment.
## Build
@@ -53,10 +55,14 @@ On a running Karaf instance, register the features repository using:
karaf@root()> feature:repo-add mvn:org.apache.karaf.examples/karaf-rest-example-features/LATEST/xml
```
-Then, you can install the service provider feature:
+Then, you can install the service blueprint provider or service SCR provider feature:
```
-karaf@root()> feature:install karaf-rest-example-provider
+karaf@root()> feature:install karaf-rest-example-blueprint
+```
+
+```
+karaf@root()> feature:install karaf-rest-example-scr
```
And the service client feature using Java Http:
@@ -83,4 +89,14 @@ service.
```
karaf@root()> booking:add 1 "John Doe" AF520
karaf@root()> booking:list
+```
+
+## Whiteboard
+
+Instead of the CXF with blueprint `karaf-rest-example-blueprint` feature, or CXF with SCR `karaf-rest-example-scr` feature, you can use the JAXRS Whiteboard approach (with Aries implementation).
+
+Install the `karaf-rest-example-whiteboard` feature:
+
+```
+karaf@root()> feature:install karaf-rest-example-whiteboard
```
\ No newline at end of file
diff --git a/examples/karaf-rest-example/karaf-rest-example-provider/pom.xml b/examples/karaf-rest-example/karaf-rest-example-blueprint/pom.xml
similarity index 93%
copy from examples/karaf-rest-example/karaf-rest-example-provider/pom.xml
copy to examples/karaf-rest-example/karaf-rest-example-blueprint/pom.xml
index 8e4eec3..2307210 100644
--- a/examples/karaf-rest-example/karaf-rest-example-provider/pom.xml
+++ b/examples/karaf-rest-example/karaf-rest-example-blueprint/pom.xml
@@ -28,8 +28,8 @@
<relativePath>../pom.xml</relativePath>
</parent>
- <artifactId>karaf-rest-example-provider</artifactId>
- <name>Apache Karaf :: Examples :: REST :: Provider</name>
+ <artifactId>karaf-rest-example-blueprint</artifactId>
+ <name>Apache Karaf :: Examples :: REST :: Blueprint</name>
<packaging>bundle</packaging>
<dependencies>
@@ -52,7 +52,7 @@
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
- <Export-Package>org.apache.karaf.examples.rest.provider</Export-Package>
+ <Export-Package>org.apache.karaf.examples.rest.blueprint</Export-Package>
<Import-Package>
*
</Import-Package>
diff --git a/examples/karaf-rest-example/karaf-rest-example-provider/src/main/java/org/apache/karaf/examples/rest/provider/BookingServiceRest.java b/examples/karaf-rest-example/karaf-rest-example-blueprint/src/main/java/org/apache/karaf/examples/rest/blueprint/BookingServiceRest.java
similarity index 97%
copy from examples/karaf-rest-example/karaf-rest-example-provider/src/main/java/org/apache/karaf/examples/rest/provider/BookingServiceRest.java
copy to examples/karaf-rest-example/karaf-rest-example-blueprint/src/main/java/org/apache/karaf/examples/rest/blueprint/BookingServiceRest.java
index 097ba2a..ad3f557 100644
--- a/examples/karaf-rest-example/karaf-rest-example-provider/src/main/java/org/apache/karaf/examples/rest/provider/BookingServiceRest.java
+++ b/examples/karaf-rest-example/karaf-rest-example-blueprint/src/main/java/org/apache/karaf/examples/rest/blueprint/BookingServiceRest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.karaf.examples.rest.provider;
+package org.apache.karaf.examples.rest.blueprint;
import java.util.Collection;
import java.util.HashMap;
diff --git a/examples/karaf-rest-example/karaf-rest-example-provider/src/main/resources/OSGI-INF/blueprint/rest.xml b/examples/karaf-rest-example/karaf-rest-example-blueprint/src/main/resources/OSGI-INF/blueprint/rest.xml
similarity index 98%
rename from examples/karaf-rest-example/karaf-rest-example-provider/src/main/resources/OSGI-INF/blueprint/rest.xml
rename to examples/karaf-rest-example/karaf-rest-example-blueprint/src/main/resources/OSGI-INF/blueprint/rest.xml
index 51172b6..d768082 100644
--- a/examples/karaf-rest-example/karaf-rest-example-provider/src/main/resources/OSGI-INF/blueprint/rest.xml
+++ b/examples/karaf-rest-example/karaf-rest-example-blueprint/src/main/resources/OSGI-INF/blueprint/rest.xml
@@ -41,6 +41,6 @@
</jaxrs:providers>
</jaxrs:server>
- <bean id="bookingBean" class="org.apache.karaf.examples.rest.provider.BookingServiceRest"/>
+ <bean id="bookingBean" class="org.apache.karaf.examples.rest.blueprint.BookingServiceRest"/>
</blueprint>
diff --git a/examples/karaf-rest-example/karaf-rest-example-features/src/main/feature/feature.xml b/examples/karaf-rest-example/karaf-rest-example-features/src/main/feature/feature.xml
index bad7a67..1122bb3 100644
--- a/examples/karaf-rest-example/karaf-rest-example-features/src/main/feature/feature.xml
+++ b/examples/karaf-rest-example/karaf-rest-example-features/src/main/feature/feature.xml
@@ -25,7 +25,7 @@
<bundle>mvn:org.apache.karaf.examples/karaf-rest-example-api/${project.version}</bundle>
</feature>
- <feature name="karaf-rest-example-provider" version="${project.version}">
+ <feature name="karaf-rest-example-blueprint" version="${project.version}">
<feature version="${project.version}">karaf-rest-example-common</feature>
<feature dependency="true">http</feature>
<requirement>osgi.service;effective:=active;filter:=(objectClass=org.osgi.service.http.HttpService)</requirement>
@@ -36,16 +36,14 @@
<bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
<bundle dependency="true">mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/${jackson.version}</bundle>
<bundle dependency="true">mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${jackson.version}</bundle>
- <bundle>mvn:org.apache.karaf.examples/karaf-rest-example-provider/${project.version}</bundle>
+ <bundle>mvn:org.apache.karaf.examples/karaf-rest-example-blueprint/${project.version}</bundle>
</feature>
<feature name="karaf-rest-example-client-http" version="${project.version}">
- <feature version="${project.version}">karaf-rest-example-provider</feature>
<bundle>mvn:org.apache.karaf.examples/karaf-rest-example-client-http/${project.version}</bundle>
</feature>
<feature name="karaf-rest-example-client-cxf" version="${project.version}">
- <feature version="${project.version}">karaf-rest-example-provider</feature>
<bundle>mvn:org.apache.karaf.examples/karaf-rest-example-client-cxf/${project.version}</bundle>
</feature>
@@ -59,4 +57,18 @@
<bundle>mvn:org.apache.karaf.examples/karaf-rest-example-whiteboard/${project.version}</bundle>
</feature>
+ <feature name="karaf-rest-example-scr" version="${project.version}">
+ <feature version="${project.version}">karaf-rest-example-common</feature>
+ <feature dependency="true">http</feature>
+ <requirement>osgi.service;effective:=active;filter:=(objectClass=org.osgi.service.http.HttpService)</requirement>
+ <feature dependency="true">scr</feature>
+ <feature version="${cxf.version}" dependency="true">cxf</feature>
+ <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
+ <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle>
+ <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
+ <bundle dependency="true">mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/${jackson.version}</bundle>
+ <bundle dependency="true">mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${jackson.version}</bundle>
+ <bundle>mvn:org.apache.karaf.examples/karaf-rest-example-scr/${project.version}</bundle>
+ </feature>
+
</features>
diff --git a/examples/karaf-rest-example/karaf-rest-example-provider/pom.xml b/examples/karaf-rest-example/karaf-rest-example-scr/pom.xml
similarity index 65%
rename from examples/karaf-rest-example/karaf-rest-example-provider/pom.xml
rename to examples/karaf-rest-example/karaf-rest-example-scr/pom.xml
index 8e4eec3..a00a5a5 100644
--- a/examples/karaf-rest-example/karaf-rest-example-provider/pom.xml
+++ b/examples/karaf-rest-example/karaf-rest-example-scr/pom.xml
@@ -28,21 +28,34 @@
<relativePath>../pom.xml</relativePath>
</parent>
- <artifactId>karaf-rest-example-provider</artifactId>
- <name>Apache Karaf :: Examples :: REST :: Provider</name>
+ <artifactId>karaf-rest-example-scr</artifactId>
+ <name>Apache Karaf :: Examples :: REST :: SCR</name>
<packaging>bundle</packaging>
<dependencies>
<dependency>
- <groupId>javax.ws.rs</groupId>
- <artifactId>javax.ws.rs-api</artifactId>
- <version>2.1</version>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.cmpn</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+ <version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.karaf.examples</groupId>
<artifactId>karaf-rest-example-api</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.jaxrs</groupId>
+ <artifactId>jackson-jaxrs-json-provider</artifactId>
+ <version>${jackson.version}</version>
+ </dependency>
</dependencies>
<build>
@@ -50,12 +63,15 @@
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
+ <inherited>true</inherited>
+ <extensions>true</extensions>
<configuration>
<instructions>
- <Export-Package>org.apache.karaf.examples.rest.provider</Export-Package>
- <Import-Package>
- *
- </Import-Package>
+ <Export-Package>!*</Export-Package>
+ <Import-Package>*</Import-Package>
+ <Private-Package>
+ org.apache.karaf.examples.rest.scr
+ </Private-Package>
</instructions>
</configuration>
</plugin>
diff --git a/examples/karaf-rest-example/karaf-rest-example-provider/src/main/java/org/apache/karaf/examples/rest/provider/BookingServiceRest.java b/examples/karaf-rest-example/karaf-rest-example-scr/src/main/java/org/apache/karaf/examples/rest/scr/BookingServiceRest.java
similarity index 88%
rename from examples/karaf-rest-example/karaf-rest-example-provider/src/main/java/org/apache/karaf/examples/rest/provider/BookingServiceRest.java
rename to examples/karaf-rest-example/karaf-rest-example-scr/src/main/java/org/apache/karaf/examples/rest/scr/BookingServiceRest.java
index 097ba2a..d8abeaf 100644
--- a/examples/karaf-rest-example/karaf-rest-example-provider/src/main/java/org/apache/karaf/examples/rest/provider/BookingServiceRest.java
+++ b/examples/karaf-rest-example/karaf-rest-example-scr/src/main/java/org/apache/karaf/examples/rest/scr/BookingServiceRest.java
@@ -14,24 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.karaf.examples.rest.provider;
+package org.apache.karaf.examples.rest.scr;
+import org.apache.karaf.examples.rest.api.Booking;
+import org.apache.karaf.examples.rest.api.BookingService;
+
+import javax.ws.rs.*;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-
-import org.apache.karaf.examples.rest.api.Booking;
-import org.apache.karaf.examples.rest.api.BookingService;
-
@Path("/")
public class BookingServiceRest implements BookingService {
diff --git a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoap.java b/examples/karaf-rest-example/karaf-rest-example-scr/src/main/java/org/apache/karaf/examples/rest/scr/RestService.java
similarity index 54%
copy from examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoap.java
copy to examples/karaf-rest-example/karaf-rest-example-scr/src/main/java/org/apache/karaf/examples/rest/scr/RestService.java
index 63207da..52a5db7 100644
--- a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoap.java
+++ b/examples/karaf-rest-example/karaf-rest-example-scr/src/main/java/org/apache/karaf/examples/rest/scr/RestService.java
@@ -14,13 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.karaf.examples.soap.provider;
+package org.apache.karaf.examples.rest.scr;
-import org.apache.karaf.examples.soap.api.BookingService;
+import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
-import javax.jws.WebService;
+@Component
+public class RestService {
-@WebService
-public interface BookingServiceSoap extends BookingService {
+ @Activate
+ public void activate() throws Exception {
+ JAXRSServerFactoryBean bean = new JAXRSServerFactoryBean();
+ bean.setAddress("/booking");
+ bean.setBus(BusFactory.getDefaultBus());
+ bean.setProvider(new JacksonJsonProvider());
+ bean.setServiceBean(new BookingServiceRest());
+ bean.create();
+ }
}
diff --git a/examples/karaf-rest-example/pom.xml b/examples/karaf-rest-example/pom.xml
index 76a162f..6998362 100644
--- a/examples/karaf-rest-example/pom.xml
+++ b/examples/karaf-rest-example/pom.xml
@@ -34,10 +34,11 @@
<modules>
<module>karaf-rest-example-api</module>
- <module>karaf-rest-example-provider</module>
+ <module>karaf-rest-example-blueprint</module>
+ <module>karaf-rest-example-scr</module>
<module>karaf-rest-example-client</module>
- <module>karaf-rest-example-features</module>
<module>karaf-rest-example-whiteboard</module>
+ <module>karaf-rest-example-features</module>
</modules>
</project>
diff --git a/examples/karaf-soap-example/README.md b/examples/karaf-soap-example/README.md
index 1fcae2d..f83634d 100644
--- a/examples/karaf-soap-example/README.md
+++ b/examples/karaf-soap-example/README.md
@@ -31,7 +31,8 @@ The "client" bundle uses the `BookingService` with a SOAP client stub.
## Artifacts
* **karaf-soap-example-api** is a common bundle containing the `Booking` POJO and the `BookingService` interface.
-* **karaf-soap-example-provider** is a blueprint bundle providing the `BookingServiceSoap` implementation of the `BookingService` interface.
+* **karaf-soap-example-blueprint** is a blueprint bundle providing the `BookingServiceSoap` implementation of the `BookingService` interface.
+* **karaf-soap-example-scr** is a SCR bundle providing the `BookingServiceSoap` implementation of the `BookingService` interface.
* **karaf-soap-example-client** is a CXF client to the `BookingService` SOAP.
* **karaf-soap-example-features** provides a Karaf features repository used for the deployment.
@@ -51,10 +52,14 @@ On a running Karaf instance, register the features repository using:
karaf@root()> feature:repo-add mvn:org.apache.karaf.examples/karaf-soap-example-features/LATEST/xml
```
-Then, you can install the service provider feature:
+Then, you can install the service blueprint provider or scr provider feature:
```
-karaf@root()> feature:install karaf-soap-example-provider
+karaf@root()> feature:install karaf-soap-example-blueprint
+```
+
+```
+karaf@root()> feature:install karaf-soap-example-scr
```
And the service client feature:
diff --git a/examples/karaf-soap-example/karaf-soap-example-provider/pom.xml b/examples/karaf-soap-example/karaf-soap-example-blueprint/pom.xml
similarity index 81%
copy from examples/karaf-soap-example/karaf-soap-example-provider/pom.xml
copy to examples/karaf-soap-example/karaf-soap-example-blueprint/pom.xml
index daab036..6cc7be8 100644
--- a/examples/karaf-soap-example/karaf-soap-example-provider/pom.xml
+++ b/examples/karaf-soap-example/karaf-soap-example-blueprint/pom.xml
@@ -28,8 +28,8 @@
<relativePath>../pom.xml</relativePath>
</parent>
- <artifactId>karaf-soap-example-provider</artifactId>
- <name>Apache Karaf :: Examples :: SOAP :: Provider</name>
+ <artifactId>karaf-soap-example-blueprint</artifactId>
+ <name>Apache Karaf :: Examples :: SOAP :: Blueprint</name>
<packaging>bundle</packaging>
<dependencies>
@@ -52,7 +52,7 @@
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
- <Export-Package>org.apache.karaf.examples.soap.provider</Export-Package>
+ <Export-Package>org.apache.karaf.examples.soap.blueprint</Export-Package>
<Import-Package>
*
</Import-Package>
@@ -61,20 +61,21 @@
</plugin>
</plugins>
</build>
+
<profiles>
<profile>
- <id>java9-plus</id>
- <dependencies>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
- <version>1.1.3</version>
- </dependency>
- </dependencies>
- <activation>
- <jdk>[9,)</jdk>
+ <id>java9-plus</id>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
+ <version>1.1.3</version>
+ </dependency>
+ </dependencies>
+ <activation>
+ <jdk>[9,)</jdk>
</activation>
- </profile>
+ </profile>
</profiles>
</project>
diff --git a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoap.java b/examples/karaf-soap-example/karaf-soap-example-blueprint/src/main/java/org/apache/karaf/examples/soap/blueprint/BookingServiceSoap.java
similarity index 95%
copy from examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoap.java
copy to examples/karaf-soap-example/karaf-soap-example-blueprint/src/main/java/org/apache/karaf/examples/soap/blueprint/BookingServiceSoap.java
index 63207da..cb7454c 100644
--- a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoap.java
+++ b/examples/karaf-soap-example/karaf-soap-example-blueprint/src/main/java/org/apache/karaf/examples/soap/blueprint/BookingServiceSoap.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.karaf.examples.soap.provider;
+package org.apache.karaf.examples.soap.blueprint;
import org.apache.karaf.examples.soap.api.BookingService;
diff --git a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoapImpl.java b/examples/karaf-soap-example/karaf-soap-example-blueprint/src/main/java/org/apache/karaf/examples/soap/blueprint/BookingServiceSoapImpl.java
similarity index 89%
copy from examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoapImpl.java
copy to examples/karaf-soap-example/karaf-soap-example-blueprint/src/main/java/org/apache/karaf/examples/soap/blueprint/BookingServiceSoapImpl.java
index eab1304..466dba0 100644
--- a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoapImpl.java
+++ b/examples/karaf-soap-example/karaf-soap-example-blueprint/src/main/java/org/apache/karaf/examples/soap/blueprint/BookingServiceSoapImpl.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.karaf.examples.soap.provider;
+package org.apache.karaf.examples.soap.blueprint;
import java.util.*;
@@ -22,7 +22,7 @@ import org.apache.karaf.examples.soap.api.Booking;
import javax.jws.WebService;
-@WebService(endpointInterface="org.apache.karaf.examples.soap.provider.BookingServiceSoap", serviceName="Booking")
+@WebService(endpointInterface="org.apache.karaf.examples.soap.blueprint.BookingServiceSoap", serviceName="Booking")
public class BookingServiceSoapImpl implements BookingServiceSoap {
private Map<Long, Booking> bookings = new HashMap<>();
diff --git a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/resources/OSGI-INF/blueprint/soap.xml b/examples/karaf-soap-example/karaf-soap-example-blueprint/src/main/resources/OSGI-INF/blueprint/soap.xml
similarity index 88%
rename from examples/karaf-soap-example/karaf-soap-example-provider/src/main/resources/OSGI-INF/blueprint/soap.xml
rename to examples/karaf-soap-example/karaf-soap-example-blueprint/src/main/resources/OSGI-INF/blueprint/soap.xml
index 50908e5..e3dbc44 100644
--- a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/resources/OSGI-INF/blueprint/soap.xml
+++ b/examples/karaf-soap-example/karaf-soap-example-blueprint/src/main/resources/OSGI-INF/blueprint/soap.xml
@@ -32,9 +32,9 @@
</cxf:features>
</cxf:bus>
- <jaxws:server serviceClass="org.apache.karaf.examples.soap.provider.BookingServiceSoap" address="/example">
+ <jaxws:server serviceClass="org.apache.karaf.examples.soap.blueprint.BookingServiceSoap" address="/example">
<jaxws:serviceBean>
- <bean class="org.apache.karaf.examples.soap.provider.BookingServiceSoapImpl"/>
+ <bean class="org.apache.karaf.examples.soap.blueprint.BookingServiceSoapImpl"/>
</jaxws:serviceBean>
</jaxws:server>
diff --git a/examples/karaf-soap-example/karaf-soap-example-client/pom.xml b/examples/karaf-soap-example/karaf-soap-example-client/pom.xml
index f75f5e0..989dc7e 100644
--- a/examples/karaf-soap-example/karaf-soap-example-client/pom.xml
+++ b/examples/karaf-soap-example/karaf-soap-example-client/pom.xml
@@ -40,7 +40,7 @@
</dependency>
<dependency>
<groupId>org.apache.karaf.examples</groupId>
- <artifactId>karaf-soap-example-provider</artifactId>
+ <artifactId>karaf-soap-example-blueprint</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
diff --git a/examples/karaf-soap-example/karaf-soap-example-client/src/main/java/org/apache/karaf/examples/soap/client/CxfClient.java b/examples/karaf-soap-example/karaf-soap-example-client/src/main/java/org/apache/karaf/examples/soap/client/CxfClient.java
index 0df8961..da73d3d 100644
--- a/examples/karaf-soap-example/karaf-soap-example-client/src/main/java/org/apache/karaf/examples/soap/client/CxfClient.java
+++ b/examples/karaf-soap-example/karaf-soap-example-client/src/main/java/org/apache/karaf/examples/soap/client/CxfClient.java
@@ -18,7 +18,7 @@ package org.apache.karaf.examples.soap.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.karaf.examples.soap.api.Booking;
-import org.apache.karaf.examples.soap.provider.BookingServiceSoap;
+import org.apache.karaf.examples.soap.blueprint.BookingServiceSoap;
import java.util.Collection;
diff --git a/examples/karaf-soap-example/karaf-soap-example-features/src/main/feature/feature.xml b/examples/karaf-soap-example/karaf-soap-example-features/src/main/feature/feature.xml
index 53af507..4852d59 100644
--- a/examples/karaf-soap-example/karaf-soap-example-features/src/main/feature/feature.xml
+++ b/examples/karaf-soap-example/karaf-soap-example-features/src/main/feature/feature.xml
@@ -29,13 +29,13 @@
<bundle dependency="true">mvn:org.ow2.asm/asm-commons/${asm6.version}</bundle>
</feature>
- <feature name="karaf-soap-example-provider" version="${project.version}">
+ <feature name="karaf-soap-example-blueprint" version="${project.version}">
<feature>karaf-soap-example-common</feature>
<feature>aries-blueprint</feature>
<feature version="${cxf.version}">cxf-core</feature>
<feature version="${cxf.version}">cxf-jaxws</feature>
<feature version="${cxf.version}">cxf-databinding-jaxb</feature>
- <bundle>mvn:org.apache.karaf.examples/karaf-soap-example-provider/${project.version}</bundle>
+ <bundle>mvn:org.apache.karaf.examples/karaf-soap-example-blueprint/${project.version}</bundle>
</feature>
<feature name="karaf-soap-example-client" version="${project.version}">
@@ -45,4 +45,13 @@
<bundle>mvn:org.apache.karaf.examples/karaf-soap-example-client/${project.version}</bundle>
</feature>
+ <feature name="karaf-soap-example-scr" version="${project.version}">
+ <feature>karaf-soap-example-common</feature>
+ <feature>scr</feature>
+ <feature version="${cxf.version}">cxf-core</feature>
+ <feature version="${cxf.version}">cxf-jaxws</feature>
+ <feature version="${cxf.version}">cxf-databinding-jaxb</feature>
+ <bundle>mvn:org.apache.karaf.examples/karaf-soap-example-scr/${project.version}</bundle>
+ </feature>
+
</features>
diff --git a/examples/karaf-soap-example/karaf-soap-example-provider/pom.xml b/examples/karaf-soap-example/karaf-soap-example-scr/pom.xml
similarity index 66%
rename from examples/karaf-soap-example/karaf-soap-example-provider/pom.xml
rename to examples/karaf-soap-example/karaf-soap-example-scr/pom.xml
index daab036..7086fb4 100644
--- a/examples/karaf-soap-example/karaf-soap-example-provider/pom.xml
+++ b/examples/karaf-soap-example/karaf-soap-example-scr/pom.xml
@@ -28,12 +28,20 @@
<relativePath>../pom.xml</relativePath>
</parent>
- <artifactId>karaf-soap-example-provider</artifactId>
- <name>Apache Karaf :: Examples :: SOAP :: Provider</name>
+ <artifactId>karaf-soap-example-scr</artifactId>
+ <name>Apache Karaf :: Examples :: SOAP :: SCR</name>
<packaging>bundle</packaging>
<dependencies>
<dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.cmpn</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
@@ -50,31 +58,35 @@
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
+ <inherited>true</inherited>
+ <extensions>true</extensions>
<configuration>
<instructions>
- <Export-Package>org.apache.karaf.examples.soap.provider</Export-Package>
- <Import-Package>
- *
- </Import-Package>
+ <Export-Package>!*</Export-Package>
+ <Import-Package>*</Import-Package>
+ <Private-Package>
+ org.apache.karaf.examples.soap.scr
+ </Private-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
+
<profiles>
<profile>
- <id>java9-plus</id>
- <dependencies>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
- <version>1.1.3</version>
- </dependency>
- </dependencies>
- <activation>
- <jdk>[9,)</jdk>
+ <id>java9-plus</id>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
+ <version>1.1.3</version>
+ </dependency>
+ </dependencies>
+ <activation>
+ <jdk>[9,)</jdk>
</activation>
- </profile>
+ </profile>
</profiles>
-</project>
+</project>
\ No newline at end of file
diff --git a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoap.java b/examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/BookingServiceSoap.java
similarity index 95%
copy from examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoap.java
copy to examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/BookingServiceSoap.java
index 63207da..54fe1f2 100644
--- a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoap.java
+++ b/examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/BookingServiceSoap.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.karaf.examples.soap.provider;
+package org.apache.karaf.examples.soap.scr;
import org.apache.karaf.examples.soap.api.BookingService;
diff --git a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoapImpl.java b/examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/BookingServiceSoapImpl.java
similarity index 85%
rename from examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoapImpl.java
rename to examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/BookingServiceSoapImpl.java
index eab1304..0564ad8 100644
--- a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoapImpl.java
+++ b/examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/BookingServiceSoapImpl.java
@@ -14,15 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.karaf.examples.soap.provider;
-
-import java.util.*;
+package org.apache.karaf.examples.soap.scr;
import org.apache.karaf.examples.soap.api.Booking;
import javax.jws.WebService;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
-@WebService(endpointInterface="org.apache.karaf.examples.soap.provider.BookingServiceSoap", serviceName="Booking")
+@WebService(endpointInterface="org.apache.karaf.examples.soap.scr.BookingServiceSoap", serviceName="Booking")
public class BookingServiceSoapImpl implements BookingServiceSoap {
private Map<Long, Booking> bookings = new HashMap<>();
diff --git a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoap.java b/examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/SoapService.java
similarity index 59%
rename from examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoap.java
rename to examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/SoapService.java
index 63207da..2e87411 100644
--- a/examples/karaf-soap-example/karaf-soap-example-provider/src/main/java/org/apache/karaf/examples/soap/provider/BookingServiceSoap.java
+++ b/examples/karaf-soap-example/karaf-soap-example-scr/src/main/java/org/apache/karaf/examples/soap/scr/SoapService.java
@@ -14,13 +14,22 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.karaf.examples.soap.provider;
+package org.apache.karaf.examples.soap.scr;
-import org.apache.karaf.examples.soap.api.BookingService;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
+import org.osgi.service.component.annotations.Component;
-import javax.jws.WebService;
+@Component
+public class SoapService {
-@WebService
-public interface BookingServiceSoap extends BookingService {
+ public void activate() throws Exception {
+ JaxWsServerFactoryBean bean = new JaxWsServerFactoryBean();
+ bean.setAddress("/example");
+ bean.setServiceClass(BookingServiceSoap.class);
+ bean.setServiceBean(new BookingServiceSoapImpl());
+ bean.setBus(BusFactory.getDefaultBus());
+ bean.create();
+ }
}
diff --git a/examples/karaf-soap-example/pom.xml b/examples/karaf-soap-example/pom.xml
index 1ffc4b9..432b677 100644
--- a/examples/karaf-soap-example/pom.xml
+++ b/examples/karaf-soap-example/pom.xml
@@ -34,7 +34,8 @@
<modules>
<module>karaf-soap-example-api</module>
- <module>karaf-soap-example-provider</module>
+ <module>karaf-soap-example-blueprint</module>
+ <module>karaf-soap-example-scr</module>
<module>karaf-soap-example-client</module>
<module>karaf-soap-example-features</module>
</modules>
diff --git a/itests/test/src/test/java/org/apache/karaf/itests/examples/RestExampleTest.java b/itests/test/src/test/java/org/apache/karaf/itests/examples/RestExampleTest.java
index 6f13917..1c93415 100644
--- a/itests/test/src/test/java/org/apache/karaf/itests/examples/RestExampleTest.java
+++ b/itests/test/src/test/java/org/apache/karaf/itests/examples/RestExampleTest.java
@@ -48,10 +48,10 @@ public class RestExampleTest extends BaseTest {
}
@Test
- public void testWithHttpClient() throws Exception {
+ public void testBlueprintWithHttpClient() throws Exception {
setup();
- installAndAssertFeature("karaf-rest-example-provider");
+ installAndAssertFeature("karaf-rest-example-blueprint");
installAndAssertFeature("karaf-rest-example-client-http");
@@ -59,10 +59,32 @@ public class RestExampleTest extends BaseTest {
}
@Test
- public void testWithCxfClient() throws Exception {
+ public void testBlueprintWithCxfClient() throws Exception {
setup();
- installAndAssertFeature("karaf-rest-example-provider");
+ installAndAssertFeature("karaf-rest-example-blueprint");
+
+ installAndAssertFeature("karaf-rest-example-client-cxf");
+
+ verify();
+ }
+
+ @Test
+ public void testScrWithHttpClient() throws Exception {
+ setup();
+
+ installAndAssertFeature("karaf-rest-example-scr");
+
+ installAndAssertFeature("karaf-rest-example-client-http");
+
+ verify();
+ }
+
+ @Test
+ public void testScrWithCxfClient() throws Exception {
+ setup();
+
+ installAndAssertFeature("karaf-rest-example-scr");
installAndAssertFeature("karaf-rest-example-client-cxf");
diff --git a/itests/test/src/test/java/org/apache/karaf/itests/examples/SoapExampleTest.java b/itests/test/src/test/java/org/apache/karaf/itests/examples/SoapExampleTest.java
index 751c6e6..7f34040 100644
--- a/itests/test/src/test/java/org/apache/karaf/itests/examples/SoapExampleTest.java
+++ b/itests/test/src/test/java/org/apache/karaf/itests/examples/SoapExampleTest.java
@@ -21,17 +21,22 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
-import org.ops4j.pax.exam.spi.reactors.PerClass;
+import org.ops4j.pax.exam.spi.reactors.PerMethod;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
@RunWith(PaxExam.class)
-@ExamReactorStrategy(PerClass.class)
+@ExamReactorStrategy(PerMethod.class)
public class SoapExampleTest extends BaseTest {
@Test
- public void test() throws Exception {
+ public void testBlueprint() throws Exception {
addFeaturesRepository("mvn:org.apache.karaf.examples/karaf-soap-example-features/" + System.getProperty("karaf.version") + "/xml");
- installAndAssertFeature("karaf-soap-example-provider");
+ installAndAssertFeature("karaf-soap-example-blueprint");
installAndAssertFeature("karaf-soap-example-client");
String url = "http://localhost:" + getHttpPort() + "/cxf/example";
@@ -42,4 +47,23 @@ public class SoapExampleTest extends BaseTest {
assertContains("TST001", output);
}
+ @Test
+ public void testScr() throws Exception {
+ addFeaturesRepository("mvn:org.apache.karaf.examples/karaf-soap-example-features/" + System.getProperty("karaf.version") + "/xml");
+
+ installAndAssertFeature("karaf-soap-example-scr");
+
+ URL url = new URL("http://localhost:" + getHttpPort() + "/cxf");
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ StringBuilder builder = new StringBuilder();
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ builder.append(line).append("\n");
+ }
+ }
+
+ assertContains("BookingServiceSoap", builder.toString());
+ }
+
}