Refactoring of karaf-boot
diff --git a/OSGI-INF/karaf-tracker/sample.osgi.service.provider.Activator b/OSGI-INF/karaf-tracker/sample.osgi.service.provider.Activator
new file mode 100644
index 0000000..12b26d7
--- /dev/null
+++ b/OSGI-INF/karaf-tracker/sample.osgi.service.provider.Activator
@@ -0,0 +1 @@
+#Thu Sep 24 22:02:56 CEST 2015
diff --git a/karaf-boot-parent/pom.xml b/karaf-boot-parent/pom.xml
deleted file mode 100644
index 9142128..0000000
--- a/karaf-boot-parent/pom.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.apache.karaf.boot</groupId>
- <artifactId>karaf-boot-parent</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- <packaging>pom</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.karaf.boot</groupId>
- <artifactId>karaf-boot</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.karaf.boot</groupId>
- <artifactId>karaf-boot-maven-plugin</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- <inherited>true</inherited>
- <extensions>true</extensions>
- <executions>
- <execution>
- <phase>generate-resources</phase>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <scanPaths>
- <scanPath>${project.build.sourceDirectory}</scanPath>
- </scanPaths>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <version>2.5.4</version>
- <inherited>true</inherited>
- <extensions>true</extensions>
- <configuration>
- <supportedProjectTypes>
- <supportedProjectType>jar</supportedProjectType>
- <supportedProjectType>war</supportedProjectType>
- </supportedProjectTypes>
- </configuration>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>bundle</goal>
- </goals>
- <configuration>
- <instructions>
- <Import-Package>
- org.apache.karaf.boot*;resolution:=optional,
- *
- </Import-Package>
- </instructions>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
-</project>
\ No newline at end of file
diff --git a/karaf-boot-samples/README.md b/karaf-boot-samples/README.md
index 31be07a..d65c349 100644
--- a/karaf-boot-samples/README.md
+++ b/karaf-boot-samples/README.md
@@ -1,9 +1,16 @@
-* karaf-boot-simple
- Simple bean
-* karaf-boot-service-provider
- Service provider
-* karaf-boot-service-consumer
- Service consumer
+* karaf-boot-sample-service-provider-osgi
+ Expose a service using the "native" Karaf OSGi layer (low level)
+* karaf-boot-sample-service-consumer-osgi
+ Use a service using the "native" Karaf OSGi layer (low level)
+
+* karaf-boot-services-osgi
+ Simple services using OSGi
+* karaf-boot-services-blueprint
+ Simple services using blueprint
+* karaf-boot-services-ds
+ Simple services using DS/SCR
+* karaf-boot-services-cdi
+ Simple services using CDI
* karaf-boot-config-managed
Managed by configuration (reload)
* karaf-boot-servlet
@@ -17,4 +24,4 @@
* karaf-boot-profile
Build a profile based on karaf-boot definition
* karaf-boot-starter
- Package and configure Karaf as a ready to run artifact
\ No newline at end of file
+ Package and configure Karaf as a ready to run artifact
diff --git a/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/README.md b/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/README.md
new file mode 100644
index 0000000..93f69f7
--- /dev/null
+++ b/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/README.md
@@ -0,0 +1,33 @@
+== karaf-boot-sample-service-provider-osgi ==
+
+This sample exposes an OSGi service using the Karaf util classe and annotation.
+
+= Design
+
+This artifact uses the hello service provided by another artifact (karaf-boot-sample-service-provider-ds for instance).
+
+It uses the DS annotations to create a bean with a reference (@Reference) to the hello service.
+In the HelloServiceClient bean, we use the @Activate annotation to execute a specific method.
+
+You don't think anything else: karaf-boot will generate all the plumbing for you, and you will directly have a ready
+to use artifact.
+
+= Build
+
+To build, simply do:
+
+ mvn clean install
+
+= Deploy
+
+To deploy in Karaf, you have to enable the DS support first. For that, you have to install the scr feature:
+
+ feature:install scr
+
+Once scr feature installed:
+
+* you can drop the generated jar file (target/karaf-boot-sample-service-consumer-ds-1.0.jar) in the
+Karaf deploy folder
+* in the Karaf shell console, do:
+
+ bundle:install -s mvn:karaf-boot-samples/karaf-boot-sample-service-consumer-ds/1.0
\ No newline at end of file
diff --git a/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/pom.xml b/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/pom.xml
new file mode 100644
index 0000000..c6b85c0
--- /dev/null
+++ b/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/pom.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <!--
+
+ 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 regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-sample-service-consumer-ds</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-starter-ds</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-sample-service-provider-ds</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-maven-plugin</artifactId>
+ <version>${project.version}</version>
+ <extensions>true</extensions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
diff --git a/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/src/main/java/sample/ds/service/consumer/HelloServiceClient.java b/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/src/main/java/sample/ds/service/consumer/HelloServiceClient.java
new file mode 100644
index 0000000..f70ebf7
--- /dev/null
+++ b/karaf-boot-samples/karaf-boot-sample-service-consumer-ds/src/main/java/sample/ds/service/consumer/HelloServiceClient.java
@@ -0,0 +1,59 @@
+/**
+ * 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 regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package sample.ds.service.consumer;
+
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import sample.ds.service.provider.HelloService;
+
+@Component
+public class HelloServiceClient implements Runnable {
+
+ private HelloService helloService;
+
+ private Thread thread;
+
+ @Activate
+ public void start() {
+ thread = new Thread(this);
+ thread.start();
+ }
+
+ @Deactivate
+ public void stop() {
+ thread.interrupt();
+ }
+
+ public void run() {
+ while (true) {
+ System.out.println(helloService.hello("World"));
+ try {
+ Thread.sleep(5000);
+ } catch (Exception e) {
+ // nothing to do
+ }
+ }
+ }
+
+ @Reference
+ public void setHelloService(HelloService helloService) {
+ this.helloService = helloService;
+ }
+
+}
diff --git a/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/README.md b/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/README.md
new file mode 100644
index 0000000..1684c81
--- /dev/null
+++ b/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/README.md
@@ -0,0 +1,28 @@
+== karaf-boot-sample-service-consumer-osgi ==
+
+This sample uses an OSGi service using the Karaf util classe and annotation.
+
+= Design
+
+The service "contract" is exposed by another artifact (the karaf-boot-sample-service-provider-osgi module).
+
+The hello service is retrieved in the Activator of this artifact, and uses it directly.
+
+This Activator overrides the doStart() method, where we retrieve the HelloService using the getTrackedService() method. Karaf
+deals with all service lookup and tracking.
+
+= Build
+
+To build, simply do:
+
+ mvn clean install
+
+= Deploy
+
+To deploy in Karaf:
+
+* you can drop the generated jar file (target/karaf-boot-sample-service-provider-osgi-1.0.jar) in the
+Karaf deploy folder
+* in the Karaf shell console, do:
+
+ bundle:install -s mvn:karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/1.0
\ No newline at end of file
diff --git a/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/pom.xml b/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/pom.xml
new file mode 100644
index 0000000..c26cfbf
--- /dev/null
+++ b/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/pom.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <!--
+
+ 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 regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-sample-service-consumer-osgi</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-starter</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-sample-service-provider-osgi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-maven-plugin</artifactId>
+ <version>${project.version}</version>
+ <extensions>true</extensions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
diff --git a/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/src/main/java/sample/osgi/service/consumer/Activator.java b/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/src/main/java/sample/osgi/service/consumer/Activator.java
new file mode 100644
index 0000000..fffd850
--- /dev/null
+++ b/karaf-boot-samples/karaf-boot-sample-service-consumer-osgi/src/main/java/sample/osgi/service/consumer/Activator.java
@@ -0,0 +1,48 @@
+/**
+ * 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 regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package sample.osgi.service.consumer;
+
+import org.apache.karaf.util.tracker.BaseActivator;
+import org.apache.karaf.util.tracker.annotation.RequireService;
+import org.apache.karaf.util.tracker.annotation.Services;
+import sample.osgi.service.provider.HelloService;
+
+/**
+ * Simple activator that retrieve the hello service and use it.
+ */
+@Services(
+ requires = {
+ @RequireService(HelloService.class)
+ }
+)
+public class Activator extends BaseActivator {
+
+ @Override
+ public void doStart() throws Exception {
+ HelloService helloService = getTrackedService(HelloService.class);
+
+ // basic usage, in real life, it could be injected and used in a bean or whatever
+ System.out.println("Hello " + helloService.hello("World"));
+ }
+
+ @Override
+ public void doStop() {
+ super.doStop();
+ }
+
+
+}
diff --git a/karaf-boot-samples/karaf-boot-sample-service-provider-ds/README.md b/karaf-boot-samples/karaf-boot-sample-service-provider-ds/README.md
new file mode 100644
index 0000000..0206a7b
--- /dev/null
+++ b/karaf-boot-samples/karaf-boot-sample-service-provider-ds/README.md
@@ -0,0 +1,35 @@
+== karaf-boot-sample-service-provider-ds ==
+
+This sample exposes an OSGi service using the Karaf util classe and annotation.
+
+= Design
+
+The service "contract" is describe by the Hello interface. It's a very simple service that expose one operation (hello).
+The service client send a message (String) to the hello service and he gets a response.
+
+The HelloServiceImpl is very simple: it prefixes the message with "Hello".
+
+We use the @Component DS annotation on HelloServiceImpl implementation in order to expose the service.
+
+You don't think anything else: karaf-boot will generate all the plumbing for you, and you will directly have a ready
+to use artifact.
+
+= Build
+
+To build, simply do:
+
+ mvn clean install
+
+= Deploy
+
+To deploy in Karaf, you have to enable the DS support first. For that, you have to install the scr feature:
+
+ feature:install scr
+
+Once scr feature installed:
+
+* you can drop the generated jar file (target/karaf-boot-sample-service-provider-ds-1.0.jar) in the
+Karaf deploy folder
+* in the Karaf shell console, do:
+
+ bundle:install -s mvn:karaf-boot-samples/karaf-boot-sample-service-provider-ds/1.0
\ No newline at end of file
diff --git a/karaf-boot-samples/karaf-boot-sample-simple/pom.xml b/karaf-boot-samples/karaf-boot-sample-service-provider-ds/pom.xml
similarity index 63%
rename from karaf-boot-samples/karaf-boot-sample-simple/pom.xml
rename to karaf-boot-samples/karaf-boot-sample-service-provider-ds/pom.xml
index 538503d..854a780 100644
--- a/karaf-boot-samples/karaf-boot-sample-simple/pom.xml
+++ b/karaf-boot-samples/karaf-boot-sample-service-provider-ds/pom.xml
@@ -21,13 +21,27 @@
<modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.karaf.boot</groupId>
- <artifactId>karaf-boot-parent</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>karaf-boot-sample-simple</artifactId>
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-sample-service-provider-ds</artifactId>
<version>1.0.0-SNAPSHOT</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-starter-ds</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-maven-plugin</artifactId>
+ <version>${project.version}</version>
+ <extensions>true</extensions>
+ </plugin>
+ </plugins>
+ </build>
+
</project>
\ No newline at end of file
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceListener.java b/karaf-boot-samples/karaf-boot-sample-service-provider-ds/src/main/java/sample/ds/service/provider/HelloService.java
similarity index 71%
copy from karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceListener.java
copy to karaf-boot-samples/karaf-boot-sample-service-provider-ds/src/main/java/sample/ds/service/provider/HelloService.java
index 725a220..50c2d30 100644
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceListener.java
+++ b/karaf-boot-samples/karaf-boot-sample-service-provider-ds/src/main/java/sample/ds/service/provider/HelloService.java
@@ -14,15 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.karaf.boot;
+package sample.ds.service.provider;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+/**
+ * Simple hello service contract.
+ */
+public interface HelloService {
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ReferenceListener {
- String ref() default "";
+ public String hello(String message);
+
}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceListener.java b/karaf-boot-samples/karaf-boot-sample-service-provider-ds/src/main/java/sample/ds/service/provider/HelloServiceImpl.java
similarity index 71%
copy from karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceListener.java
copy to karaf-boot-samples/karaf-boot-sample-service-provider-ds/src/main/java/sample/ds/service/provider/HelloServiceImpl.java
index 725a220..5319a47 100644
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceListener.java
+++ b/karaf-boot-samples/karaf-boot-sample-service-provider-ds/src/main/java/sample/ds/service/provider/HelloServiceImpl.java
@@ -14,15 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.karaf.boot;
+package sample.ds.service.provider;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+import org.osgi.service.component.annotations.Component;
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ReferenceListener {
- String ref() default "";
+/**
+ * Simple implementation of the hello service..
+ */
+@Component
+public class HelloServiceImpl implements HelloService {
+
+ public String hello(String message) {
+ return "Hello " + message + " !";
+ }
+
}
diff --git a/karaf-boot-samples/karaf-boot-sample-service-provider-osgi/README.md b/karaf-boot-samples/karaf-boot-sample-service-provider-osgi/README.md
new file mode 100644
index 0000000..3cd81c6
--- /dev/null
+++ b/karaf-boot-samples/karaf-boot-sample-service-provider-osgi/README.md
@@ -0,0 +1,33 @@
+== karaf-boot-sample-service-provider-osgi ==
+
+This sample exposes an OSGi service using the Karaf util classe and annotation.
+
+= Design
+
+The service "contract" is describe by the Hello interface. It's a very simple service that expose one operation (hello).
+The service client send a message (String) to the hello service and he gets a response.
+
+The HelloServiceImpl is very simple: it prefixes the message with "Hello".
+
+In order to expose this service, we create an Activator, extending Karaf util BaseActivator.
+Our activator contains the @Services annotation describing the provided services (@ProvideService annotation).
+
+In this activator, we override the doStart() method, where we instantiate the HelloServiceImpl bean and register the
+HelloService service using the register() method (provided by Karaf). The Karaf BaseActivator manages the service
+registration, so you don't have to take care about the unregistration of the service, etc.
+
+= Build
+
+To build, simply do:
+
+ mvn clean install
+
+= Deploy
+
+To deploy in Karaf:
+
+* you can drop the generated jar file (target/karaf-boot-sample-service-provider-osgi-1.0.jar) in the
+Karaf deploy folder
+* in the Karaf shell console, do:
+
+ bundle:install -s mvn:karaf-boot-samples/karaf-boot-sample-service-provider-osgi/1.0
\ No newline at end of file
diff --git a/karaf-boot-samples/karaf-boot-sample-simple/pom.xml b/karaf-boot-samples/karaf-boot-sample-service-provider-osgi/pom.xml
similarity index 63%
copy from karaf-boot-samples/karaf-boot-sample-simple/pom.xml
copy to karaf-boot-samples/karaf-boot-sample-service-provider-osgi/pom.xml
index 538503d..d1bb116 100644
--- a/karaf-boot-samples/karaf-boot-sample-simple/pom.xml
+++ b/karaf-boot-samples/karaf-boot-sample-service-provider-osgi/pom.xml
@@ -21,13 +21,27 @@
<modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.karaf.boot</groupId>
- <artifactId>karaf-boot-parent</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>karaf-boot-sample-simple</artifactId>
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-sample-service-provider-osgi</artifactId>
<version>1.0.0-SNAPSHOT</version>
-</project>
\ No newline at end of file
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-starter</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.karaf.boot</groupId>
+ <artifactId>karaf-boot-maven-plugin</artifactId>
+ <version>${project.version}</version>
+ <extensions>true</extensions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/karaf-boot-samples/karaf-boot-sample-service-provider-osgi/src/main/java/sample/osgi/service/provider/Activator.java b/karaf-boot-samples/karaf-boot-sample-service-provider-osgi/src/main/java/sample/osgi/service/provider/Activator.java
new file mode 100644
index 0000000..9bc9b20
--- /dev/null
+++ b/karaf-boot-samples/karaf-boot-sample-service-provider-osgi/src/main/java/sample/osgi/service/provider/Activator.java
@@ -0,0 +1,41 @@
+/**
+ * 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 regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package sample.osgi.service.provider;
+
+import org.apache.karaf.util.tracker.BaseActivator;
+import org.apache.karaf.util.tracker.annotation.ProvideService;
+import org.apache.karaf.util.tracker.annotation.Services;
+
+/**
+ * Simple activator registering the hello service.
+ */
+@Services(
+ provides = {
+ @ProvideService(HelloService.class)
+ }
+)
+public class Activator extends BaseActivator {
+
+ @Override
+ public void doStart() throws Exception {
+ // create hello service bean
+ HelloServiceImpl bean = new HelloServiceImpl();
+ // register the hello service
+ register(HelloService.class, bean);
+ }
+
+}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceListener.java b/karaf-boot-samples/karaf-boot-sample-service-provider-osgi/src/main/java/sample/osgi/service/provider/HelloService.java
similarity index 71%
copy from karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceListener.java
copy to karaf-boot-samples/karaf-boot-sample-service-provider-osgi/src/main/java/sample/osgi/service/provider/HelloService.java
index 725a220..fc0a357 100644
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceListener.java
+++ b/karaf-boot-samples/karaf-boot-sample-service-provider-osgi/src/main/java/sample/osgi/service/provider/HelloService.java
@@ -14,15 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.karaf.boot;
+package sample.osgi.service.provider;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+/**
+ * Simple hello service contract.
+ */
+public interface HelloService {
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ReferenceListener {
- String ref() default "";
+ public String hello(String message);
+
}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceListener.java b/karaf-boot-samples/karaf-boot-sample-service-provider-osgi/src/main/java/sample/osgi/service/provider/HelloServiceImpl.java
similarity index 71%
rename from karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceListener.java
rename to karaf-boot-samples/karaf-boot-sample-service-provider-osgi/src/main/java/sample/osgi/service/provider/HelloServiceImpl.java
index 725a220..c212205 100644
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceListener.java
+++ b/karaf-boot-samples/karaf-boot-sample-service-provider-osgi/src/main/java/sample/osgi/service/provider/HelloServiceImpl.java
@@ -14,15 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.karaf.boot;
+package sample.osgi.service.provider;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+/**
+ * Simple implementation of the hello service..
+ */
+public class HelloServiceImpl implements HelloService {
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ReferenceListener {
- String ref() default "";
+ public String hello(String message) {
+ return "Hello " + message + " !";
+ }
+
}
diff --git a/karaf-boot-samples/karaf-boot-sample-simple/src/main/java/org/apache/karaf/boot/sample/simple/SimpleBean.java b/karaf-boot-samples/karaf-boot-sample-simple/src/main/java/org/apache/karaf/boot/sample/simple/SimpleBean.java
deleted file mode 100644
index b89f733..0000000
--- a/karaf-boot-samples/karaf-boot-sample-simple/src/main/java/org/apache/karaf/boot/sample/simple/SimpleBean.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.apache.karaf.boot.sample.simple;
-
-import org.apache.karaf.boot.Bean;
-import org.apache.karaf.boot.Init;
-
-@Bean(id = "simple-bean")
-public class SimpleBean {
-
- @Init
- public void simple() {
- System.out.println("Hello world");
- }
-
-}
diff --git a/karaf-boot-starter/README.md b/karaf-boot-starter/README.md
deleted file mode 100644
index 43dc8e3..0000000
--- a/karaf-boot-starter/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Karaf Boot Starter
-------------------
-Karaf Boot Starter provides a convenient way to create a ready to execute artifact, embedding Karaf.
-
-You just have to extend the KarafApplication class. In the config() method, you can define:
-- the configuration
-- the bundles
-- the features
-of your embedded Karaf instance.
-
-The Karaf Boot Starter Maven plugin will create the "key turn" jar that you can execute directly, on any machine.
\ No newline at end of file
diff --git a/karaf-boot-starter/pom.xml b/karaf-boot-starters/karaf-boot-starter-ds/pom.xml
similarity index 80%
copy from karaf-boot-starter/pom.xml
copy to karaf-boot-starters/karaf-boot-starter-ds/pom.xml
index 20fd28e..9add66a 100644
--- a/karaf-boot-starter/pom.xml
+++ b/karaf-boot-starters/karaf-boot-starter-ds/pom.xml
@@ -23,12 +23,19 @@
<parent>
<groupId>org.apache.karaf.boot</groupId>
- <artifactId>karaf-boot-build</artifactId>
+ <artifactId>karaf-boot-starters</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
- <artifactId>karaf-boot-starter</artifactId>
- <packaging>pom</packaging>
+ <artifactId>karaf-boot-starter-ds</artifactId>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>5.0.0</version>
+ </dependency>
+ </dependencies>
</project>
\ No newline at end of file
diff --git a/karaf-boot-starter/pom.xml b/karaf-boot-starters/karaf-boot-starter/pom.xml
similarity index 74%
copy from karaf-boot-starter/pom.xml
copy to karaf-boot-starters/karaf-boot-starter/pom.xml
index 20fd28e..21c0d07 100644
--- a/karaf-boot-starter/pom.xml
+++ b/karaf-boot-starters/karaf-boot-starter/pom.xml
@@ -23,12 +23,24 @@
<parent>
<groupId>org.apache.karaf.boot</groupId>
- <artifactId>karaf-boot-build</artifactId>
+ <artifactId>karaf-boot-starters</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>karaf-boot-starter</artifactId>
- <packaging>pom</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>${osgi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.karaf</groupId>
+ <artifactId>org.apache.karaf.util</artifactId>
+ <version>${karaf.version}</version>
+ </dependency>
+ </dependencies>
</project>
\ No newline at end of file
diff --git a/karaf-boot-starter/pom.xml b/karaf-boot-starters/pom.xml
similarity index 89%
rename from karaf-boot-starter/pom.xml
rename to karaf-boot-starters/pom.xml
index 20fd28e..04f6ff4 100644
--- a/karaf-boot-starter/pom.xml
+++ b/karaf-boot-starters/pom.xml
@@ -28,7 +28,12 @@
<relativePath>../pom.xml</relativePath>
</parent>
- <artifactId>karaf-boot-starter</artifactId>
+ <artifactId>karaf-boot-starters</artifactId>
<packaging>pom</packaging>
+ <modules>
+ <module>karaf-boot-starter</module>
+ <module>karaf-boot-starter-ds</module>
+ </modules>
+
</project>
\ No newline at end of file
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/pom.xml b/karaf-boot-tools/karaf-boot-maven-plugin/pom.xml
index 19bb184..8897be1 100644
--- a/karaf-boot-tools/karaf-boot-maven-plugin/pom.xml
+++ b/karaf-boot-tools/karaf-boot-maven-plugin/pom.xml
@@ -1,6 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <!--
+
+ 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 regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -15,63 +33,53 @@
<dependencies>
<dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <version>1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.xbean</groupId>
- <artifactId>xbean-finder-shaded</artifactId>
- <version>4.0</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>4.1.0.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-tx</artifactId>
- <version>4.1.0.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>javax.persistence</groupId>
- <artifactId>persistence-api</artifactId>
- <version>1.0.2</version>
- </dependency>
- <dependency>
- <groupId>javax.transaction</groupId>
- <artifactId>javax.transaction-api</artifactId>
- <version>1.2</version>
- </dependency>
- <dependency>
- <groupId>org.ops4j.pax.cdi</groupId>
- <artifactId>pax-cdi-api</artifactId>
- <version>0.9.0</version>
- </dependency>
- <dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-annotations</artifactId>
+ <version>3.3</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.1.1</version>
</dependency>
-
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.4</version>
- <scope>test</scope>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ <version>3.2.1</version>
</dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-plugin-plugin</artifactId>
+ <version>3.3</version>
+ <configuration>
+ <goalPrefix>karaf-boot</goalPrefix>
+ <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+ </configuration>
+ <executions>
+ <execution>
+ <id>generate-descriptor</id>
+ <goals>
+ <goal>descriptor</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>generate-helpmojo</id>
+ <goals>
+ <goal>helpmojo</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
</project>
\ No newline at end of file
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/maven/GenerateMojo.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/maven/GenerateMojo.java
new file mode 100644
index 0000000..da9414d
--- /dev/null
+++ b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/maven/GenerateMojo.java
@@ -0,0 +1,87 @@
+package org.apache.karaf.boot.maven;
+
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.BuildPluginManager;
+import org.apache.maven.plugin.MojoExecution;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.descriptor.*;
+import org.apache.maven.plugins.annotations.*;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
+
+import java.io.ByteArrayInputStream;
+
+@Mojo(name = "generate", threadSafe = true, defaultPhase = LifecyclePhase.PROCESS_CLASSES, requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME, inheritByDefault = false)
+public class GenerateMojo extends AbstractMojo {
+
+ @Parameter(defaultValue = "${project}", required = true, readonly = true)
+ private MavenProject mavenProject;
+
+ @Parameter(defaultValue = "${session}", required = true, readonly = true)
+ private MavenSession mavenSession;
+
+ @Component
+ private BuildPluginManager pluginManager;
+
+ public void execute() throws MojoExecutionException {
+ try {
+ // invoke Karaf services plugin
+ getLog().info("Invoking karaf-services-maven-plugin");
+ Plugin karafServicesPlugin = new Plugin();
+ karafServicesPlugin.setGroupId("org.apache.karaf.tooling");
+ karafServicesPlugin.setArtifactId("karaf-services-maven-plugin");
+ karafServicesPlugin.setVersion("4.0.1");
+ karafServicesPlugin.setInherited(false);
+ karafServicesPlugin.setExtensions(true);
+ Xpp3Dom configuration = Xpp3DomBuilder.build(new ByteArrayInputStream(("<configuration>" +
+ "<project>${project}</project>" +
+ "<activatorProperty>BNDExtension-Bundle-Activator</activatorProperty>" +
+ "<requirementsProperty>BNDExtension-Require-Capability</requirementsProperty>" +
+ "<capabilitiesProperty>BNDExtension-Provide-Capability</capabilitiesProperty>" +
+ "<outputDirectory>${project.build.directory}/generated/karaf-tracker</outputDirectory>" +
+ "<classLoader>project</classLoader>" +
+ "</configuration>").getBytes()), "UTF-8");
+ PluginDescriptor karafServicesPluginDescriptor = pluginManager.loadPlugin(karafServicesPlugin, mavenProject.getRemotePluginRepositories(), mavenSession.getRepositorySession());
+ MojoDescriptor karafServicesMojoDescriptor = karafServicesPluginDescriptor.getMojo("service-metadata-generate");
+ MojoExecution execution = new MojoExecution(karafServicesMojoDescriptor, configuration);
+ pluginManager.executeMojo(mavenSession, execution);
+
+ // invoke Felix bundle plugin
+ getLog().info("Invoking maven-bundle-plugin");
+ Plugin felixBundlePlugin = new Plugin();
+ felixBundlePlugin.setGroupId("org.apache.felix");
+ felixBundlePlugin.setArtifactId("maven-bundle-plugin");
+ felixBundlePlugin.setVersion("3.0.0");
+ felixBundlePlugin.setInherited(true);
+ felixBundlePlugin.setExtensions(true);
+ // TODO if jpa-start is provided as persistence.xml location
+ configuration = Xpp3DomBuilder.build(new ByteArrayInputStream(("<configuration>" +
+ "<finalName>${project.build.finalName}</finalName>" +
+ "<outputDirectory>${project.build.outputDirectory}</outputDirectory>" +
+ "<m_mavenSession>${session}</m_mavenSession>" +
+ "<project>${project}</project>" +
+ "<buildDirectory>${project.build.directory}</buildDirectory>" +
+ "<supportedProjectTypes>" +
+ "<supportedProjectType>jar</supportedProjectType>" +
+ "<supportedProjectType>bundle</supportedProjectType>" +
+ "<supportedProjectType>war</supportedProjectType>" +
+ "</supportedProjectTypes>" +
+ "<instructions>" +
+ "<Private-Package>org.apache.karaf.util.tracker</Private-Package>" +
+ "<_dsannotations>*</_dsannotations>" +
+ "</instructions>" +
+ "</configuration>").getBytes()), "UTF-8");
+ PluginDescriptor felixBundlePluginDescriptor = pluginManager.loadPlugin(felixBundlePlugin, mavenProject.getRemotePluginRepositories(), mavenSession.getRepositorySession());
+ MojoDescriptor felixBundleMojoDescriptor = felixBundlePluginDescriptor.getMojo("bundle");
+ execution = new MojoExecution(felixBundleMojoDescriptor, configuration);
+ pluginManager.executeMojo(mavenSession, execution);
+ } catch (Exception e) {
+ throw new MojoExecutionException("karaf-boot-maven-plugin failed", e);
+ }
+ }
+
+}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/FilteredClassFinder.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/FilteredClassFinder.java
deleted file mode 100644
index 7ba607b..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/FilteredClassFinder.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin;
-
-import java.lang.annotation.Annotation;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.inject.Singleton;
-
-import org.apache.xbean.finder.ClassFinder;
-import org.springframework.stereotype.Component;
-
-public class FilteredClassFinder {
-
- @SuppressWarnings("unchecked")
- public static Set<Class<?>> findClasses(ClassFinder finder, Collection<String> packageNames) {
- return findClasses(finder, packageNames, new Class[]{Singleton.class, Component.class});
- }
-
- public static Set<Class<?>> findClasses(ClassFinder finder, Collection<String> packageNames, Class<? extends Annotation>[] annotations) {
- Set<Class<?>> rawClasses = new HashSet<Class<?>>();
- for (Class<? extends Annotation> annotation : annotations) {
- rawClasses.addAll(finder.findAnnotatedClasses(annotation));
- }
- return filterByBasePackages(rawClasses, packageNames);
- }
-
- private static Set<Class<?>> filterByBasePackages(Set<Class<?>> rawClasses, Collection<String> packageNames) {
- Set<Class<?>> filteredClasses = new HashSet<Class<?>>();
- for (Class<?> clazz : rawClasses) {
- for (String packageName : packageNames) {
- if (clazz.getPackage().getName().startsWith(packageName)) {
- filteredClasses.add(clazz);
- continue;
- }
- }
- }
- //System.out.println("Raw: " + rawClasses);
- //System.out.println("Filtered: " + beanClasses);
- return filteredClasses;
- }
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/GenerateMojo.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/GenerateMojo.java
deleted file mode 100644
index 72d5f28..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/GenerateMojo.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.karaf.boot.tools.maven.plugin.model.Context;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.model.Resource;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.MavenProject;
-import org.apache.xbean.finder.ClassFinder;
-
-/**
- * Generates blueprint from spring annotations
- * @goal generate
- * @phase process-classes
- * @requiresDependencyResolution compile
- * @inheritByDefault false
- * @description Generates artifact using karaf-boot annotations and supporting spring annotations @Component, @Autowire and @Value
- */
-public class GenerateMojo extends AbstractMojo {
-
- /**
- * The maven project.
- *
- * @parameter default-value="${project}"
- * @required
- */
- protected MavenProject project;
-
- /**
- * @parameter
- * @required
- */
- protected List<String> scanPaths;
-
- /**
- * true: Purely annotated mode (needs jpa 2.1.0 and transaction-blueprint 1.1.0)
- * false: XML based mode for JPA 1.x and transaction-blueprint < 1.1.0
- * @parameter default-value="true"
- * @required
- */
- protected boolean persistenceAnnotated;
-
- public void execute() throws MojoExecutionException, MojoFailureException {
- try {
- String buildDir = project.getBuild().getDirectory();
- String generatedDir = buildDir + "/generated-resources";
- Resource resource = new Resource();
- resource.setDirectory(generatedDir);
- project.addResource(resource);
- ClassFinder finder = createProjectScopeFinder();
-
- File file = new File(generatedDir, "OSGI-INF/blueprint/autowire.xml");
- file.getParentFile().mkdirs();
- System.out.println("Generating blueprint to " + file);
- Set<Class<?>> classes = FilteredClassFinder.findClasses(finder, scanPaths);
- Context context = new Context(classes);
- context.resolve();
- new Generator(context, new FileOutputStream(file), persistenceAnnotated).generate();
- } catch (Exception e) {
- throw new MojoExecutionException("Error building commands help", e);
- }
- }
-
- private ClassFinder createProjectScopeFinder() throws MalformedURLException {
- List<URL> urls = new ArrayList<URL>();
-
- urls.add( new File(project.getBuild().getOutputDirectory()).toURI().toURL() );
- for ( Object artifactO : project.getArtifacts() ) {
- Artifact artifact = (Artifact)artifactO;
- File file = artifact.getFile();
- if ( file != null ) {
- urls.add( file.toURI().toURL() );
- }
- }
- ClassLoader loader = new URLClassLoader(urls.toArray(new URL[urls.size()]), getClass().getClassLoader());
- return new ClassFinder(loader, urls);
- }
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/Generator.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/Generator.java
deleted file mode 100644
index 8806d05..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/Generator.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin;
-
-import java.io.OutputStream;
-import java.lang.reflect.Field;
-
-import javax.persistence.PersistenceContext;
-import javax.persistence.PersistenceUnit;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-
-import org.apache.karaf.boot.tools.maven.plugin.model.Bean;
-import org.apache.karaf.boot.tools.maven.plugin.model.Context;
-import org.apache.karaf.boot.tools.maven.plugin.model.OsgiServiceRef;
-import org.apache.karaf.boot.tools.maven.plugin.model.ProducedBean;
-import org.apache.karaf.boot.tools.maven.plugin.model.Property;
-import org.apache.karaf.boot.tools.maven.plugin.model.PropertyWriter;
-import org.apache.karaf.boot.tools.maven.plugin.model.TransactionalDef;
-
-public class Generator implements PropertyWriter {
- private static final String NS_BLUEPRINT = "http://www.osgi.org/xmlns/blueprint/v1.0.0";
- private static final String NS_EXT = "http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0";
- private static final String NS_JPA = "http://aries.apache.org/xmlns/jpa/v1.1.0";
- private static final String NS_JPA2 = "http://aries.apache.org/xmlns/jpan/v1.0.0";
- private static final String NS_TX = "http://aries.apache.org/xmlns/transactions/v1.2.0";
-
- private Context context;
- private XMLStreamWriter writer;
- private boolean persistenceAnnotated;
-
- public Generator(Context context, OutputStream os, boolean persistenceAnnotated) throws XMLStreamException {
- this.context = context;
- this.persistenceAnnotated = persistenceAnnotated;
-
- XMLOutputFactory factory = XMLOutputFactory.newInstance();
- writer = factory.createXMLStreamWriter(os);
- }
-
- public void generate() {
- try {
- writer.writeStartDocument();
- writer.writeCharacters("\n");
- writeBlueprint();
-
- if (persistenceAnnotated) {
- if (isJpaUsed()) {
- writer.writeEmptyElement(NS_JPA2, "enable");
- writer.writeCharacters("\n");
- }
- writer.writeEmptyElement(NS_TX, "enable-annotations");
- writer.writeCharacters("\n");
- //if (isJtaUsed()) {
-// writer.writeEmptyElement(NS_TX, "enable-annotations");
- //}
- }
- for (Bean bean : context.getBeans()) {
- writeBeanStart(bean);
- bean.writeProperties(this);
- writer.writeEndElement();
- writer.writeCharacters("\n");
- }
-
- writeServiceRefs();
- new OsgiServiceProviderWriter(writer).write(context.getBeans());
-
- writer.writeEndElement();
- writer.writeCharacters("\n");
- writer.writeEndDocument();
- writer.writeCharacters("\n");
- writer.close();
- } catch (XMLStreamException e) {
- throw new RuntimeException(e.getMessage(), e);
- }
- }
-
- private boolean isJpaUsed() {
- boolean jpaUsed = false;
- for (Bean bean : context.getBeans()) {
- if (bean.persistenceFields.length > 0) {
- jpaUsed = true;
- }
- }
- return jpaUsed;
- }
-
- private boolean isJtaUsed() {
- boolean jtaUsed = false;
- for (Bean bean : context.getBeans()) {
- if (bean.transactionDef != null) {
- jtaUsed = true;
- }
-
- }
- return jtaUsed;
- }
-
- private void writeBlueprint() throws XMLStreamException {
- writer.writeStartElement("blueprint");
- writer.writeDefaultNamespace(NS_BLUEPRINT);
- writer.writeNamespace("ext", NS_EXT);
- if (persistenceAnnotated) {
- writer.writeNamespace("jpa", NS_JPA2);
- } else {
- writer.writeNamespace("jpa", NS_JPA);
- }
- writer.writeNamespace("tx", NS_TX);
- }
-
- public void writeBeanStart(Bean bean) throws XMLStreamException {
- writer.writeStartElement("bean");
- writer.writeAttribute("id", bean.id);
- writer.writeAttribute("class", bean.clazz.getName());
- writer.writeAttribute("ext", NS_EXT, "field-injection", "true");
- if (bean instanceof ProducedBean) {
- writeFactory((ProducedBean)bean);
- }
- if (bean.initMethod != null) {
- writer.writeAttribute("init-method", bean.initMethod);
- }
- if (bean.destroyMethod != null) {
- writer.writeAttribute("destroy-method", bean.destroyMethod);
- }
- writer.writeCharacters("\n");
-
- if (!persistenceAnnotated) {
- writeTransactional(bean.transactionDef);
- writePersistenceFields(bean.persistenceFields);
- }
- }
-
- private void writeFactory(ProducedBean bean) throws XMLStreamException {
- writer.writeAttribute("factory-ref", bean.factoryBeanId);
- writer.writeAttribute("factory-method", bean.factoryMethod);
- }
-
- private void writeTransactional(TransactionalDef transactionDef)
- throws XMLStreamException {
- if (transactionDef != null) {
- writer.writeCharacters(" ");
- writer.writeEmptyElement("tx", "transaction", NS_TX);
- writer.writeAttribute("method", transactionDef.getMethod());
- writer.writeAttribute("value", transactionDef.getType());
- writer.writeCharacters("\n");
- }
- }
-
-
- private void writePersistenceFields(Field[] fields) throws XMLStreamException {
- for (Field field : fields) {
- writePersistenceField(field);
- }
- }
-
- private void writePersistenceField(Field field) throws XMLStreamException {
- PersistenceContext persistenceContext = field.getAnnotation(PersistenceContext.class);
- if (persistenceContext != null) {
- writer.writeCharacters(" ");
- writer.writeEmptyElement("jpa", "context", NS_JPA);
- writer.writeAttribute("unitname", persistenceContext.unitName());
- writer.writeAttribute("property", field.getName());
- writer.writeCharacters("\n");
- }
- PersistenceUnit persistenceUnit = field.getAnnotation(PersistenceUnit.class);
- if (persistenceUnit != null) {
- writer.writeCharacters(" ");
- writer.writeEmptyElement("jpa", "unit", NS_JPA);
- writer.writeAttribute("unitname", persistenceUnit.unitName());
- writer.writeAttribute("property", field.getName());
- writer.writeCharacters("\n");
- }
- }
-
- private void writeServiceRefs() throws XMLStreamException {
- for (OsgiServiceRef serviceBean : context.getServiceRefs()) {
- writeServiceRef(serviceBean);
- }
- }
-
- private void writeServiceRef(OsgiServiceRef serviceBean) throws XMLStreamException {
- writer.writeEmptyElement("reference");
- writer.writeAttribute("id", serviceBean.id);
- writer.writeAttribute("interface", serviceBean.clazz.getName());
- if (serviceBean.filter != null && !"".equals(serviceBean.filter)) {
- writer.writeAttribute("filter", serviceBean.filter);
- }
- writer.writeCharacters("\n");
- }
-
- public void writeProperty(Property property) {
- try {
- writer.writeCharacters(" ");
- writer.writeEmptyElement("property");
- writer.writeAttribute("name", property.name);
- if (property.ref != null) {
- writer.writeAttribute("ref", property.ref);
- } else if (property.value != null) {
- writer.writeAttribute("value", property.value);
- }
- writer.writeCharacters("\n");
- } catch (XMLStreamException e) {
- throw new RuntimeException(e.getMessage(), e);
- }
- }
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/OsgiServiceProviderWriter.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/OsgiServiceProviderWriter.java
deleted file mode 100644
index 95d57df..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/OsgiServiceProviderWriter.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin;
-
-import java.util.Collection;
-
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-
-import org.apache.karaf.boot.tools.maven.plugin.model.Bean;
-import org.ops4j.pax.cdi.api.OsgiServiceProvider;
-import org.ops4j.pax.cdi.api.Properties;
-import org.ops4j.pax.cdi.api.Property;
-
-public class OsgiServiceProviderWriter {
- private XMLStreamWriter writer;
-
- public OsgiServiceProviderWriter(XMLStreamWriter writer) {
- this.writer = writer;
- }
-
- public void write(Collection<Bean> beans) throws XMLStreamException {
- for (Bean bean : beans) {
- write(bean);
- }
- }
-
- public void write(Bean bean) throws XMLStreamException {
- OsgiServiceProvider serviceProvider = bean.clazz.getAnnotation(OsgiServiceProvider.class);
- if (serviceProvider == null) {
- return;
- }
- if (serviceProvider.classes().length == 0) {
- throw new IllegalArgumentException("Need to provide the interface class in the @OsgiServiceProvider(classes={...}) annotation on " + bean.clazz);
- }
- Properties properties = bean.clazz.getAnnotation(Properties.class);
- if (properties == null) {
- writer.writeEmptyElement("service");
- } else {
- writer.writeStartElement("service");
- }
- writer.writeAttribute("ref", bean.id);
- Class<?> serviceIf = serviceProvider.classes()[0];
- writer.writeAttribute("interface", serviceIf.getName());
- writer.writeCharacters("\n");
- if (properties != null) {
- writeProperties(properties);
- writer.writeEndElement();
- writer.writeCharacters("\n");
- }
- }
-
- private void writeProperties(Properties properties) throws XMLStreamException {
- writer.writeCharacters(" ");
- writer.writeStartElement("service-properties");
- writer.writeCharacters("\n");
- for (Property property : properties.value()) {
- writer.writeCharacters(" ");
- writer.writeEmptyElement("entry");
- writer.writeAttribute("key", property.name());
- writer.writeAttribute("value", property.value());
- writer.writeCharacters("\n");
- }
- writer.writeCharacters(" ");
- writer.writeEndElement();
- writer.writeCharacters("\n");
- }
-
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/Bean.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/Bean.java
deleted file mode 100644
index 995649c..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/Bean.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.persistence.PersistenceContext;
-import javax.persistence.PersistenceUnit;
-
-public class Bean extends BeanRef {
- public String initMethod;
- public String destroyMethod;
- public SortedSet<Property> properties;
- public Field[] persistenceFields;
- public TransactionalDef transactionDef;
-
- public Bean(Class<?> clazz) {
- super(clazz);
-
- for (Method method : clazz.getDeclaredMethods()) {
- PostConstruct postConstruct = getEffectiveAnnotation(method, PostConstruct.class);
- if (postConstruct != null) {
- this.initMethod = method.getName();
- }
- PreDestroy preDestroy = getEffectiveAnnotation(method, PreDestroy.class);
- if (preDestroy != null) {
- this.destroyMethod = method.getName();
- }
- }
- this.persistenceFields = getPersistenceFields();
- this.transactionDef = new JavaxTransactionFactory().create(clazz);
- if (this.transactionDef == null) {
- this.transactionDef = new SpringTransactionFactory().create(clazz);
- }
- properties = new TreeSet<Property>();
- }
-
- private Field[] getPersistenceFields() {
- List<Field> persistenceFields = new ArrayList<Field>();
- Field[] fields = clazz.getDeclaredFields();
- for (Field field : fields) {
- PersistenceContext persistenceContext = field.getAnnotation(PersistenceContext.class);
- PersistenceUnit persistenceUnit = field.getAnnotation(PersistenceUnit.class);
- if (persistenceContext !=null || persistenceUnit != null) {
- persistenceFields.add(field);
- }
- }
- return persistenceFields.toArray(new Field[]{});
- }
-
- public void resolve(Matcher matcher) {
- Class<?> curClass = this.clazz;
- while (curClass != null && curClass != Object.class) {
- resolveProperties(matcher, curClass);
- curClass = curClass.getSuperclass();
- }
- }
-
- private void resolveProperties(Matcher matcher, Class<?> curClass) {
- for (Field field : curClass.getDeclaredFields()) {
- Property prop = Property.create(matcher, field);
- if (prop != null) {
- properties.add(prop);
- }
- }
- }
-
- private static <T extends Annotation> T getEffectiveAnnotation(Method method, Class<T> annotationClass) {
- final Class<?> methodClass = method.getDeclaringClass();
- final String name = method.getName();
- final Class<?>[] params = method.getParameterTypes();
-
- // 1. Current class
- final T rootAnnotation = method.getAnnotation(annotationClass);
- if (rootAnnotation != null) {
- return rootAnnotation;
- }
-
- // 2. Superclass
- final Class<?> superclass = methodClass.getSuperclass();
- if (superclass != null) {
- final T annotation = getMethodAnnotation(superclass, name, params, annotationClass);
- if (annotation != null)
- return annotation;
- }
-
- // 3. Interfaces
- for (final Class<?> intfs : methodClass.getInterfaces()) {
- final T annotation = getMethodAnnotation(intfs, name, params, annotationClass);
- if (annotation != null)
- return annotation;
- }
-
- return null;
- }
-
- private static <T extends Annotation> T getMethodAnnotation(Class<?> searchClass, String name, Class<?>[] params,
- Class<T> annotationClass) {
- try {
- Method method = searchClass.getMethod(name, params);
- return getEffectiveAnnotation(method, annotationClass);
- } catch (NoSuchMethodException e) {
- return null;
- }
- }
-
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((clazz == null) ? 0 : clazz.getName().hashCode());
- result = prime * result + ((id == null) ? 0 : id.hashCode());
- return result;
- }
-
- @Override
- public String toString() {
- return clazz.getName();
- }
-
- public void writeProperties(PropertyWriter writer) {
- for (Property property : properties) {
- writer.writeProperty(property);
- }
- }
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/BeanRef.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/BeanRef.java
deleted file mode 100644
index ba67f33..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/BeanRef.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-import java.lang.reflect.Field;
-
-import javax.inject.Named;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Component;
-
-public class BeanRef implements Comparable<BeanRef> {
- public String id;
- public Class<?> clazz;
-
- /**
- *
- * @param clazz interface or implementation class
- */
- public BeanRef(Class<?> clazz) {
- this.clazz = clazz;
- this.id = getBeanName(clazz);
- }
-
- public BeanRef(Class<?> type, String id) {
- this.clazz = type;
- this.id = id;
- }
-
- public BeanRef(Field field) {
- this(field.getType(), getDestinationId(field));
- }
-
- private static String getDestinationId(Field field) {
- Named named = field.getAnnotation(Named.class);
- if (named != null) {
- return named.value();
- }
- Qualifier qualifier = field.getAnnotation(Qualifier.class);
- if (qualifier != null) {
- return qualifier.value();
- }
- return null;
- }
-
- public static String getBeanName(Class<?> clazz) {
- Component component = clazz.getAnnotation(Component.class);
- Named named = clazz.getAnnotation(Named.class);
- if (component != null && !"".equals(component.value())) {
- return component.value();
- } else if (named != null && !"".equals(named.value())) {
- return named.value();
- } else {
- String name = clazz.getSimpleName();
- return getBeanNameFromSimpleName(name);
- }
- }
-
- private static String getBeanNameFromSimpleName(String name) {
- return name.substring(0, 1).toLowerCase() + name.substring(1, name.length());
- }
-
- public boolean matches(BeanRef template) {
- boolean assignable = template.clazz.isAssignableFrom(this.clazz);
- return assignable && ((template.id == null) || id.equals(template.id));
- }
-
- public int compareTo(BeanRef other) {
- return this.id.compareTo(other.id);
- }
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/Context.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/Context.java
deleted file mode 100644
index 442bc6e..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/Context.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import javax.enterprise.inject.Produces;
-
-import org.ops4j.pax.cdi.api.OsgiService;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.blueprint.container.BlueprintContainer;
-import org.osgi.service.blueprint.container.Converter;
-
-public class Context implements Matcher {
-
- SortedSet<Bean> beans;
- SortedSet<OsgiServiceRef> serviceRefs;
-
- public Context(Class<?>... beanClasses) {
- this(Arrays.asList(beanClasses));
- }
-
- public Context(Collection<Class<?>> beanClasses) {
- this.beans = new TreeSet<Bean>();
- this.serviceRefs = new TreeSet<OsgiServiceRef>();
- addBeans(beanClasses);
- }
-
- private void addBeans(Collection<Class<?>> beanClasses) {
- for (Class<?> clazz : beanClasses) {
- Bean bean = new Bean(clazz);
- beans.add(bean);
- addServiceRefs(clazz);
- addProducedBeans(clazz, bean.id);
- }
- }
-
- private void addProducedBeans(Class<?> clazz, String factoryBeanId) {
- for (Method method : clazz.getMethods()) {
- Produces produces = method.getAnnotation(Produces.class);
- if (produces != null) {
- Class<?> producedClass = method.getReturnType();
- ProducedBean producedBean = new ProducedBean(producedClass, factoryBeanId, method.getName());
- beans.add(producedBean);
- }
- }
- }
-
- private void addServiceRefs(Class<?> clazz) {
- for (Field field : clazz.getDeclaredFields()) {
- OsgiService osgiService = field.getAnnotation(OsgiService.class);
- if (osgiService != null) {
- serviceRefs.add(new OsgiServiceRef(field));
- }
- }
- }
-
- public void resolve() {
- for (Bean bean : beans) {
- bean.resolve(this);
- }
- }
-
- public BeanRef getMatching(BeanRef template) {
- for (Bean bean : beans) {
- if (bean.matches(template)) {
- return bean;
- }
- }
- for (BeanRef bean : serviceRefs) {
- if (bean.matches(template)) {
- return bean;
- }
- }
- if (template.clazz == BundleContext.class) {
- return new BeanRef(BundleContext.class, "blueprintBundleContext");
- }
- if (template.clazz == Bundle.class) {
- return new BeanRef(Bundle.class, "blueprintBundle");
- }
- if (template.clazz == BlueprintContainer.class) {
- return new BeanRef(BlueprintContainer.class, "blueprintContainer");
- }
- if (template.clazz == Converter.class) {
- return new BeanRef(Converter.class, "blueprintConverter");
- }
-
- return null;
- }
-
- public SortedSet<Bean> getBeans() {
- return beans;
- }
-
- public SortedSet<OsgiServiceRef> getServiceRefs() {
- return serviceRefs;
- }
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/JavaxTransactionFactory.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/JavaxTransactionFactory.java
deleted file mode 100644
index c00a54c..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/JavaxTransactionFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-import java.util.HashMap;
-
-import javax.transaction.Transactional;
-import javax.transaction.Transactional.TxType;
-
-public class JavaxTransactionFactory {
- private static HashMap<TxType, String> txTypeNames;
-
- static {
- txTypeNames = new HashMap<TxType, String>();
- txTypeNames.put(TxType.REQUIRED, TransactionalDef.TYPE_REQUIRED);
- txTypeNames.put(TxType.REQUIRES_NEW, TransactionalDef.TYPE_REQUIRES_NEW);
- }
-
- TransactionalDef create(Class<?> clazz) {
- Transactional transactional = clazz.getAnnotation(Transactional.class);
- return transactional != null ?
- new TransactionalDef("*", txTypeNames.get(transactional.value())) : null;
- }
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/Matcher.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/Matcher.java
deleted file mode 100644
index f703ed1..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/Matcher.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-public interface Matcher {
- BeanRef getMatching(BeanRef template);
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/OsgiServiceRef.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/OsgiServiceRef.java
deleted file mode 100644
index 5069663..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/OsgiServiceRef.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-import java.lang.reflect.Field;
-
-import org.ops4j.pax.cdi.api.OsgiService;
-
-/**
- * Synthetic bean that refers to an OSGi service
- */
-public class OsgiServiceRef extends BeanRef {
-
- public String filter;
-
- public OsgiServiceRef(Field field) {
- super(field);
- if (id == null) {
- id = getBeanName(clazz);
- }
- OsgiService osgiService = field.getAnnotation(OsgiService.class);
- filter = osgiService.filter();
- }
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/ProducedBean.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/ProducedBean.java
deleted file mode 100644
index b5e8b11..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/ProducedBean.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-public class ProducedBean extends Bean {
- public String factoryMethod;
- public String factoryBeanId;
-
- public ProducedBean(Class<?> clazz, String factoryBeanId, String factoryMethod) {
- super(clazz);
- this.factoryBeanId = factoryBeanId;
- this.factoryMethod = factoryMethod;
- }
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/Property.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/Property.java
deleted file mode 100644
index 4ec7e5a..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/Property.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-import java.lang.reflect.Field;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-
-public class Property implements Comparable<Property> {
- public String name;
- public String ref;
- public String value;
-
- public Property(String name, String ref, String value) {
- this.name = name;
- this.ref = ref;
- this.value = value;
- }
-
- public static Property create(Matcher matcher, Field field) {
- Value value = field.getAnnotation(Value.class);
- if (needsInject(field)) {
- BeanRef matching = matcher.getMatching(new BeanRef(field));
- String ref = (matching == null) ? getRefName(field) : matching.id;
- return new Property(field.getName(), ref, null);
- } else if (value != null){
- return new Property(field.getName(), null, cleanValue(value.value()));
- } else {
- // Field is not a property
- return null;
- }
- }
-
- /**
- * Assume it is defined in another manually created blueprint context with default name
- * @param field
- * @return
- */
- private static String getRefName(Field field) {
- Named named = field.getAnnotation(Named.class);
- if (named != null) {
- return named.value();
- }
- Qualifier qualifier = field.getAnnotation(Qualifier.class);
- if (qualifier != null) {
- return qualifier.value();
- }
- return Bean.getBeanName(field.getType());
- }
-
- private static boolean needsInject(Field field) {
- return field.getAnnotation(Autowired.class) != null || field.getAnnotation(Inject.class) != null;
- }
-
- /**
- * Remove default value definition
- *
- * @param value
- * @return
- */
- private static String cleanValue(String value) {
- return value.replaceAll("\\:.*\\}", "}");
- }
-
- public int compareTo(Property other) {
- return name.compareTo(other.name);
- }
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/PropertyWriter.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/PropertyWriter.java
deleted file mode 100644
index e8e6bda..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/PropertyWriter.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-public interface PropertyWriter {
- void writeProperty(Property property);
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/SpringTransactionFactory.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/SpringTransactionFactory.java
deleted file mode 100644
index 4d65261..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/SpringTransactionFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-import java.util.HashMap;
-
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
-public class SpringTransactionFactory {
- private static HashMap<Propagation, String> txTypeNames;
-
- static {
- txTypeNames = new HashMap<Propagation, String>();
- txTypeNames.put(Propagation.REQUIRED, TransactionalDef.TYPE_REQUIRED);
- txTypeNames.put(Propagation.REQUIRES_NEW, TransactionalDef.TYPE_REQUIRES_NEW);
- }
-
- TransactionalDef create(Class<?> clazz) {
- Transactional transactional = clazz.getAnnotation(Transactional.class);
- return transactional != null ?
- new TransactionalDef("*", txTypeNames.get(transactional.propagation())) : null;
- }
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/TransactionalDef.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/TransactionalDef.java
deleted file mode 100644
index 7be6a67..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/java/org/apache/karaf/boot/tools/maven/plugin/model/TransactionalDef.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-public class TransactionalDef {
- public static final String TYPE_REQUIRED = "Required";
- public static final String TYPE_REQUIRES_NEW = "RequiresNew";
- private String method;
- private String type;
-
- public TransactionalDef(String method, String type) {
- this.method = method;
- this.type = type;
- }
-
- public String getMethod() {
- return method;
- }
-
- public String getType() {
- return type;
- }
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/main/resources/META-INF/plexus/components.xml b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/resources/META-INF/plexus/components.xml
new file mode 100644
index 0000000..6fa2eeb
--- /dev/null
+++ b/karaf-boot-tools/karaf-boot-maven-plugin/src/main/resources/META-INF/plexus/components.xml
@@ -0,0 +1,61 @@
+<!--
+ 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
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<component-set>
+ <components>
+ <component>
+ <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+ <role-hint>jar</role-hint>
+ <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
+ <configuration>
+ <lifecycles>
+ <lifecycle>
+ <id>default</id>
+ <phases>
+ <process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
+ <compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
+ <process-classes>org.apache.karaf.boot:karaf-boot-maven-plugin:generate</process-classes>
+ <process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
+ <test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
+ <test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
+ <install>
+ org.apache.maven.plugins:maven-install-plugin:install
+ </install>
+ <deploy>
+ org.apache.maven.plugins:maven-deploy-plugin:deploy
+ </deploy>
+ </phases>
+ </lifecycle>
+ </lifecycles>
+ </configuration>
+ </component>
+ <component>
+ <role>org.apache.maven.artifact.handler.ArtifactHandler</role>
+ <role-hint>bundle</role-hint>
+ <implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
+ <configuration>
+ <type>jar</type>
+ <includesDependencies>false</includesDependencies>
+ <language>java</language>
+ <extension>jar</extension>
+ <addedToClasspath>true</addedToClasspath>
+ <packaging>jar</packaging>
+ </configuration>
+ </component>
+ </components>
+</component-set>
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/GeneratorTest.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/GeneratorTest.java
deleted file mode 100644
index ff009b3..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/GeneratorTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin;
-
-import static java.util.Arrays.asList;
-import static org.apache.karaf.boot.tools.maven.plugin.FilteredClassFinder.findClasses;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Set;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathFactory;
-
-import org.apache.karaf.boot.tools.maven.plugin.model.Context;
-import org.apache.karaf.boot.tools.maven.plugin.test.MyBean1;
-import org.apache.commons.io.output.ByteArrayOutputStream;
-import org.apache.xbean.finder.ClassFinder;
-import org.junit.Assert;
-import org.junit.Test;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.xml.sax.SAXException;
-
-public class GeneratorTest {
-
- private XPath xpath;
- private Document document;
-
- @Test
- public void testGenerate() throws Exception {
- ClassFinder classFinder = new ClassFinder(this.getClass().getClassLoader());
- String packageName = MyBean1.class.getPackage().getName();
- Set<Class<?>> beanClasses = findClasses(classFinder, asList(packageName));
- Context context = new Context(beanClasses);
- context.resolve();
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- new Generator(context, os, false).generate();
- System.out.println(os.toString("UTF-8"));
-
- document = readToDocument(os);
- xpath = XPathFactory.newInstance().newXPath();
- //xpath.setNamespaceContext(new NameSpaces(document));
- Node bean1 = (Node) xpath.evaluate("/blueprint/bean[@id='myBean1']", document, XPathConstants.NODE);
-
- // Bean
- Assert.assertEquals(MyBean1.class.getName(), xpath.evaluate("@class", bean1));
- Assert.assertEquals("init", xpath.evaluate("@init-method", bean1));
- Assert.assertEquals("destroy", xpath.evaluate("@destroy-method", bean1));
- Assert.assertEquals("true", xpath.evaluate("@field-injection", bean1));
-
- // @Transactional
- Assert.assertEquals("*", xpath.evaluate("transaction/@method", bean1));
- Assert.assertEquals("Required", xpath.evaluate("transaction/@value", bean1));
-
- // @PersistenceContext
- Assert.assertEquals("person", xpath.evaluate("context/@unitname", bean1));
- Assert.assertEquals("em", xpath.evaluate("context/@property", bean1));
-
- // @PersistenceUnit
- Assert.assertEquals("person", xpath.evaluate("unit/@unitname", bean1));
- Assert.assertEquals("emf", xpath.evaluate("unit/@property", bean1));
-
- // @Autowired
- Assert.assertEquals("my1", xpath.evaluate("property[@name='bean2']/@ref", bean1));
-
-
- }
-
- private Document readToDocument(ByteArrayOutputStream os) throws ParserConfigurationException,
- SAXException, IOException {
- InputStream is = new ByteArrayInputStream(os.toByteArray());
- DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = builderFactory.newDocumentBuilder();
- return builder.parse(is);
- }
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/Namespaces.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/Namespaces.java
deleted file mode 100644
index c4224ce..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/Namespaces.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin;
-
-import java.util.Iterator;
-
-import javax.xml.XMLConstants;
-import javax.xml.namespace.NamespaceContext;
-
-import org.w3c.dom.Document;
-
-
-public class Namespaces implements NamespaceContext {
- private Document doc;
-
- public Namespaces(Document doc) {
- this.doc = doc;
- }
-
- @Override
- public String getNamespaceURI(String prefix) {
- if (prefix.equals(XMLConstants.DEFAULT_NS_PREFIX)) {
- return doc.lookupNamespaceURI(null);
- } else {
- return doc.lookupNamespaceURI(prefix);
- }
- }
-
- @Override
- public String getPrefix(String namespaceURI) {
- return doc.lookupPrefix(namespaceURI);
- }
-
- @Override
- public Iterator<String> getPrefixes(String namespaceURI) {
- return null;
- }
-}
\ No newline at end of file
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/model/BeanTest.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/model/BeanTest.java
deleted file mode 100644
index 9f6470f..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/model/BeanTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import javax.inject.Named;
-
-import org.apache.karaf.boot.tools.maven.plugin.test.MyBean1;
-import org.apache.karaf.boot.tools.maven.plugin.test.MyBean3;
-import org.apache.karaf.boot.tools.maven.plugin.test.MyBean4;
-import org.apache.karaf.boot.tools.maven.plugin.test.ServiceAImpl1;
-import org.junit.Assert;
-import org.junit.Test;
-
-
-public class BeanTest {
-
- @Test
- public void testParseMyBean1() {
- Bean bean = new Bean(MyBean1.class);
- bean.resolve(new Context());
- assertEquals(MyBean1.class, bean.clazz);
- assertEquals("myBean1", bean.id); // Name derived from class name
- assertEquals("init", bean.initMethod);
- assertEquals("destroy", bean.destroyMethod);
- Assert.assertEquals(2, bean.persistenceFields.length);
- assertEquals("em", bean.persistenceFields[0].getName());
- assertEquals("emf", bean.persistenceFields[1].getName());
- assertEquals("*", bean.transactionDef.getMethod());
- assertEquals("Required", bean.transactionDef.getType());
- assertEquals(1, bean.properties.size());
- Property prop = bean.properties.iterator().next();
- assertEquals("bean2", prop.name);
- assertEquals("serviceA", prop.ref);
- }
-
- @Test
- public void testParseMyBean3() {
- Bean bean = new Bean(MyBean3.class);
- bean.resolve(new Context());
- assertEquals(MyBean3.class, bean.clazz);
- assertEquals("myBean3", bean.id); // Name derived from class name
- assertNull("There should be no initMethod", bean.initMethod);
- assertNull("There should be no destroyMethod", bean.destroyMethod);
- assertEquals("There should be no persistence fields", 0, bean.persistenceFields.length);
- assertEquals("*", bean.transactionDef.getMethod());
- assertEquals("RequiresNew", bean.transactionDef.getType());
- assertEquals(5, bean.properties.size());
- }
-
- @Test
- public void testParseNamedBean() {
- Bean bean = new Bean(ServiceAImpl1.class);
- bean.resolve(new Context());
- String definedName = ServiceAImpl1.class.getAnnotation(Named.class).value();
- assertEquals("my1", definedName);
- assertEquals("Name should be defined using @Named", definedName, bean.id);
- assertNull("There should be no initMethod", bean.initMethod);
- assertNull("There should be no destroyMethod", bean.destroyMethod);
- assertEquals("There should be no persistence fields", 0, bean.persistenceFields.length);
- assertNull("There should be no transaction definition", bean.transactionDef);
- assertEquals("There should be no properties", 0, bean.properties.size());
- }
-
- @Test
- public void testBlueprintBundleContext() {
- Bean bean = new Bean(MyBean4.class);
- bean.resolve(new Context());
- Property bcProp = bean.properties.iterator().next();
- assertEquals("bundleContext", bcProp.name);
- assertEquals("blueprintBundleContext", bcProp.ref);
- }
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/model/ContextTest.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/model/ContextTest.java
deleted file mode 100644
index e9a1d12..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/model/ContextTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-import static org.junit.Assert.assertEquals;
-
-import org.apache.karaf.boot.tools.maven.plugin.test.MyBean3;
-import org.apache.karaf.boot.tools.maven.plugin.test.MyFactoryBean;
-import org.apache.karaf.boot.tools.maven.plugin.test.MyProduced;
-import org.apache.karaf.boot.tools.maven.plugin.test.ServiceB;
-import org.apache.karaf.boot.tools.maven.plugin.test.ServiceReferences;
-import org.junit.Assert;
-import org.junit.Test;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.blueprint.container.BlueprintContainer;
-import org.osgi.service.blueprint.container.Converter;
-
-public class ContextTest {
-
- @Test
- public void testLists() {
- Context context = new Context(MyBean3.class);
- Assert.assertEquals(1, context.getBeans().size());
- Assert.assertEquals(0, context.getServiceRefs().size());
- }
-
- @Test
- public void testLists2() {
- Context context = new Context(ServiceReferences.class);
- Assert.assertEquals(1, context.getBeans().size());
- Assert.assertEquals(2, context.getServiceRefs().size());
- }
-
- @Test
- public void testMatching() throws NoSuchFieldException, SecurityException {
- Context context = new Context(ServiceReferences.class);
- BeanRef matching = context.getMatching(new BeanRef(ServiceB.class));
- Assert.assertEquals(OsgiServiceRef.class, matching.getClass());
- Assert.assertEquals(ServiceB.class, matching.clazz);
- Assert.assertEquals("serviceB", matching.id);
- }
-
- private void assertSpecialRef(String expectedId, Class<?> clazz) {
- Context context = new Context();
- BeanRef ref = context.getMatching(new BeanRef(clazz));
- assertEquals(expectedId, ref.id);
- }
-
- @Test
- public void testSpecialRefs() {
- assertSpecialRef("blueprintBundleContext", BundleContext.class);
- assertSpecialRef("blueprintBundle", Bundle.class);
- assertSpecialRef("blueprintContainer", BlueprintContainer.class);
- assertSpecialRef("blueprintConverter", Converter.class);
- }
-
- @Test
- public void testProduced() throws NoSuchFieldException, SecurityException {
- Context context = new Context(MyFactoryBean.class);
-
- ProducedBean matching = (ProducedBean)context.getMatching(new BeanRef(MyProduced.class));
- Assert.assertEquals(MyProduced.class, matching.clazz);
- Assert.assertEquals("myFactoryBean", matching.factoryBeanId);
- Assert.assertEquals("create", matching.factoryMethod);
- }
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/model/PropertyTest.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/model/PropertyTest.java
deleted file mode 100644
index 772af11..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/model/PropertyTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-import java.lang.reflect.Field;
-
-import javax.xml.stream.XMLStreamException;
-
-import org.apache.karaf.boot.tools.maven.plugin.test.ServiceAImpl1;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class PropertyTest {
- @Test
- public void testRefInject() throws XMLStreamException {
- Field field = TestBeanForRef.class.getDeclaredFields()[0];
- Matcher matcher = new Matcher() {
- public Bean getMatching(BeanRef template) {
- return new Bean(ServiceAImpl1.class);
- }
- };
- Property property = Property.create(matcher, field);
- Assert.assertEquals("serviceA", property.name);
- Assert.assertNull("Value should be null", property.value);
- Assert.assertEquals("my1", property.ref);
- }
-
- @Test
- public void testRefAutowired() throws XMLStreamException {
- Field field = TestBeanForRef.class.getDeclaredFields()[1];
- Matcher matcher = new Matcher() {
- public Bean getMatching(BeanRef template) {
- return null;
- }
- };
- Property property = Property.create(matcher, field);
- Assert.assertEquals("serviceB", property.name);
- Assert.assertNull("Value should be null", property.value);
- Assert.assertEquals("Should be default name as no match is found", "serviceB", property.ref);
- }
-
- @Test
- public void testValue() throws XMLStreamException {
- Field field = TestBeanForRef.class.getDeclaredFields()[2];
- Property property = Property.create(null, field);
- Assert.assertEquals("name", property.name);
- Assert.assertEquals("${name}", property.value);
- Assert.assertNull("Ref should be null", property.ref);
- }
-
- @Test
- public void testNoProperty() throws XMLStreamException {
- Field field = TestBeanForRef.class.getDeclaredFields()[3];
- Property property = Property.create(null, field);
- Assert.assertNull("Should not be a property", property);
- }
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/model/TestBeanForRef.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/model/TestBeanForRef.java
deleted file mode 100644
index 2a96d05..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/model/TestBeanForRef.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.model;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceUnit;
-
-import org.apache.karaf.boot.tools.maven.plugin.test.ServiceA;
-import org.apache.karaf.boot.tools.maven.plugin.test.ServiceB;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-
-@Singleton
-public class TestBeanForRef {
- @Inject
- ServiceA serviceA;
- @Autowired
- ServiceB serviceB;
- @Value("${name:default}") String name;
- @PersistenceUnit(unitName="myunit") EntityManager em;
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyBean1.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyBean1.java
deleted file mode 100644
index 248578a..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyBean1.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.test;
-
-import javax.inject.Singleton;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.PersistenceUnit;
-import javax.transaction.Transactional;
-import javax.transaction.Transactional.TxType;
-
-import org.springframework.beans.factory.annotation.Autowired;
-
-@Singleton
-@Transactional(value=TxType.REQUIRED)
-public class MyBean1 extends ParentBean {
-
- @Autowired
- ServiceA bean2;
-
- @PersistenceContext(unitName="person")
- EntityManager em;
-
- @PersistenceUnit(unitName="person")
- EntityManager emf;
-
- public void init() {
- }
-
- public void destroy() {
- }
-
- public void saveData() {
-
- }
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyBean3.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyBean3.java
deleted file mode 100644
index d96f6c6..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyBean3.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.test;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
-@Singleton
-@Transactional(propagation=Propagation.REQUIRES_NEW)
-public class MyBean3 {
-
- @Inject
- @Named("my1")
- ServiceA serviceA1;
-
- @Inject
- @Qualifier("my2")
- ServiceA serviceA2;
-
- @Inject
- ServiceB serviceB;
-
- @Inject
- @Named("serviceB2Id")
- ServiceB serviceB2;
-
- @Inject
- MyProduced myProduced;
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyBean4.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyBean4.java
deleted file mode 100644
index 83a2244..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyBean4.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.apache.karaf.boot.tools.maven.plugin.test;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.osgi.framework.BundleContext;
-
-@Singleton
-public class MyBean4 {
-
- @Inject
- BundleContext bundleContext;
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyFactoryBean.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyFactoryBean.java
deleted file mode 100644
index 6442100..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyFactoryBean.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.apache.karaf.boot.tools.maven.plugin.test;
-
-import javax.enterprise.inject.Produces;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-@Singleton
-public class MyFactoryBean {
-
- @Inject
- ServiceB serviceB;
-
- @Produces
- public MyProduced create() {
- return new MyProduced("My message");
- }
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyProduced.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyProduced.java
deleted file mode 100644
index 9426aea..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/MyProduced.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.apache.karaf.boot.tools.maven.plugin.test;
-
-import javax.inject.Inject;
-
-public class MyProduced {
- private String message;
-
- @Inject
- ServiceA serviceA;
-
- public MyProduced(String message) {
- this.message = message;
- }
-
- public String getMessage() {
- return message;
- }
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ParentBean.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ParentBean.java
deleted file mode 100644
index dc8f515..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ParentBean.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.test;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-
-public class ParentBean {
-
- @PostConstruct
- public void init() {
- }
-
- @PreDestroy
- public void destroy() {
- }
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceA.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceA.java
deleted file mode 100644
index 1897163..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceA.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.test;
-
-public interface ServiceA {
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceAImpl1.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceAImpl1.java
deleted file mode 100644
index 7b6f405..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceAImpl1.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.test;
-
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-@Singleton
-@Named("my1")
-public class ServiceAImpl1 implements ServiceA {
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceAImpl2.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceAImpl2.java
deleted file mode 100644
index 5c17339..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceAImpl2.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.test;
-
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.ops4j.pax.cdi.api.OsgiServiceProvider;
-import org.springframework.beans.factory.annotation.Value;
-
-@Singleton
-@Named("my2")
-@OsgiServiceProvider(classes={ServiceA.class})
-public class ServiceAImpl2 implements ServiceA {
- @Value("${url:http://default}")
- String url;
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceB.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceB.java
deleted file mode 100644
index e931307..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceB.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.test;
-
-public interface ServiceB {
-
-}
diff --git a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceReferences.java b/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceReferences.java
deleted file mode 100644
index 4824bcb..0000000
--- a/karaf-boot-tools/karaf-boot-maven-plugin/src/test/java/org/apache/karaf/boot/tools/maven/plugin/test/ServiceReferences.java
+++ /dev/null
@@ -1,33 +0,0 @@
-
-/**
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.karaf.boot.tools.maven.plugin.test;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.ops4j.pax.cdi.api.OsgiService;
-import org.springframework.stereotype.Component;
-
-@Component
-public class ServiceReferences {
- @Inject @OsgiService ServiceB serviceB;
-
- @Named("serviceB2Id") @Inject @OsgiService ServiceB serviceB2;
-}
diff --git a/karaf-boot/README.md b/karaf-boot/README.md
deleted file mode 100644
index d428147..0000000
--- a/karaf-boot/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Karaf Boot Annotations
------------------------
-
-Karaf Boot provides annotations allowing you to focus on your business code, and let Karaf Boot deals with all the
-plumbing for you.
\ No newline at end of file
diff --git a/karaf-boot/pom.xml b/karaf-boot/pom.xml
deleted file mode 100644
index 22421fa..0000000
--- a/karaf-boot/pom.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <!--
-
- 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 regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.karaf.boot</groupId>
- <artifactId>karaf-boot-build</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>karaf-boot</artifactId>
-
-</project>
\ No newline at end of file
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/Arg.java b/karaf-boot/src/main/java/org/apache/karaf/boot/Arg.java
deleted file mode 100644
index 89e7d0f..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/Arg.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-
-/**
- * used to describe argument of the bean constructor
- * or the argument of the factory method for the bean
- *
- * this is mapped to Targument for the Tbean
- *
- */
-public @interface Arg {
-
- /**
- * the value of the argument
- */
- String value() default "";
-
- /**
- * the value of the ref attribute of the argument
- */
- String ref() default "";
-
- /**
- * the description of the argument
- */
- String description() default "";
-
- /**
- * the zero-based index into the parameter list of the factory method
- * or constructor to be invoked for this argument. This is determined by
- * specifying the <code>index</code> attribute for the bean. If not
- * explicitly set, this will return -1 and the initial ordering is defined
- * by its position in the args[] list.
- */
- int index() default -1;
-
-}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/Bean.java b/karaf-boot/src/main/java/org/apache/karaf/boot/Bean.java
deleted file mode 100644
index 0a6ebbf..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/Bean.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/*
- * To annotate a bean as a blueprint bean, use @Bean
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Bean {
-
- /**
- * id, activation, dependsOn comes from Tcomponent
- * the id property for the bean
- * should this be auto generated if none is specified?
- */
- String id();
-
- /**
- * the activation property for the bean
- * This can either be "eager" or "lazy". If not specified, it
- * defaults to default-activation attribute of the enclosing
- * <blueprint> element.
- */
- String activation() default "";
-
- /**
- * the components that the bean depends on
- */
- String[] dependsOn() default "";
-
- /**
- * the description property for the bean
- */
- String description() default "";
-
- /**
- * the scope property for the bean. value can be prototype or singleton
- */
- String scope() default "";
-
- /**
- * the reference to the factory component on which to invoke the
- * factory method for the bean.
- */
- String factoryRef() default "";
-
- /**
- * the factory method in the factoryRef referred factory component
- * @return
- */
- String factoryMethod() default "";
-
- /**
- * arguments for the bean constructor or the factory method of the bean
- * @return
- */
- Arg[] args() default {};
-
-}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/Bind.java b/karaf-boot/src/main/java/org/apache/karaf/boot/Bind.java
deleted file mode 100644
index f7a3938..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/Bind.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * used to annotation bind-method in blueprint reference listeners
- *
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Bind {
-}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/Destroy.java b/karaf-boot/src/main/java/org/apache/karaf/boot/Destroy.java
deleted file mode 100644
index a8e1258..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/Destroy.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * used to annotation destroy-method in blueprint beans
- *
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Destroy {
-}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/Element.java b/karaf-boot/src/main/java/org/apache/karaf/boot/Element.java
deleted file mode 100644
index 3259c80..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/Element.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * used to annotate the element of the list.
- *
- */
-@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Element {
- ElementType type() default ElementType.STRING;
- String value() default "";
-
- public enum ElementType {
- STRING,
- LONG,
- BYTE,
- BOOLEAN,
- INT,
- SHORT
- }
-
-}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/Init.java b/karaf-boot/src/main/java/org/apache/karaf/boot/Init.java
deleted file mode 100644
index 437ca8c..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/Init.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * used to annotation init-method in blueprint beans
- *
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Init {
-}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/Inject.java b/karaf-boot/src/main/java/org/apache/karaf/boot/Inject.java
deleted file mode 100644
index e0a0bd7..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/Inject.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Target({ElementType.FIELD, ElementType.METHOD, ElementType.CONSTRUCTOR})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Inject {
- String value() default "";
- String name() default "";
- String description() default "";
- String ref() default "";
- String[] values() default {};
-}
\ No newline at end of file
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/List.java b/karaf-boot/src/main/java/org/apache/karaf/boot/List.java
deleted file mode 100644
index f171908..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/List.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * used to annotate list value in property
- * I am not convinced that we want to support this via annotation
- *
- */
-@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface List {
-
- // the element of the list
- public Element[] value();
-
-}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/Reference.java b/karaf-boot/src/main/java/org/apache/karaf/boot/Reference.java
deleted file mode 100644
index ee8d474..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/Reference.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Target(ElementType.FIELD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Reference
-{
- /**
- * the description property of the service reference
- */
- String description() default "";
-
- /**
- * the interface type that a matching service must support.
- */
- Class<?> serviceInterface() default Object.class;
-
- /**
- * the filter expression that a matching service must match.
- */
- String filter() default "";
-
- /**
- * the <code>component-name</code> attribute of the service reference.
- */
- String componentName() default "";
-
- /**
- * whether or not a matching service is required at all times. either optional or mandatory.
- */
- String availability() default "";
-
- /**
- * the reference listeners for the service reference, to receive bind and unbind events.
- */
- ReferenceListener[] referenceListeners() default {};
-
- /**
- * the timeout property. If the timeout is not specified,
- * the default-timeout value is inherited from the encapsulating
- * <code><blueprint></code> definition.
- */
- int timeout() default 0;
-
- /**
- * the id for the reference
- */
- String id() default "";
-}
\ No newline at end of file
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceList.java b/karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceList.java
deleted file mode 100644
index 9c1378a..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/ReferenceList.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Target(ElementType.FIELD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ReferenceList
-{
- /**
- * the description property of the service reference
- */
- String description() default "";
-
- /**
- * the interface type that a matching service must support.
- */
- Class<?> serviceInterface() default Object.class;
-
- /**
- * the filter expression that a matching service must match.
- */
- String filter() default "";
-
- /**
- * the <code>component-name</code> attribute of the service reference.
- */
- String componentName() default "";
-
- /**
- * whether or not a matching service is required at all times. either optional or mandatory.
- */
- String availability() default "";
-
- /**
- * the reference listeners for the service reference, to receive bind and unbind events.
- */
- ReferenceListener[] referenceListeners() default {};
-
- /**
- * the value of the memberType property.
- */
- String memberType() default "service-object";
-
- /**
- * the id for the referencelist
- */
- String id() default "";
-}
\ No newline at end of file
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/Register.java b/karaf-boot/src/main/java/org/apache/karaf/boot/Register.java
deleted file mode 100644
index 41bb50d..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/Register.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * used to annotation register-method in blueprint registration listeners
- *
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Register {
-}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/RegistrationListener.java b/karaf-boot/src/main/java/org/apache/karaf/boot/RegistrationListener.java
deleted file mode 100644
index 793e2dd..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/RegistrationListener.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface RegistrationListener {
-
- String ref() default "";
-}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/Service.java b/karaf-boot/src/main/java/org/apache/karaf/boot/Service.java
deleted file mode 100644
index 09b6293..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/Service.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Service {
-
- /**
- * the registration listeners to be notified when the service is
- * registered and unregistered with the framework.
- */
- RegistrationListener[] registerationListeners() default {};
-
- /**
- * the ranking value to use when advertising the service. If the
- * ranking value is zero, the service must be registered without a
- * <code>service.ranking</code> service property.
- */
- int ranking() default 0;
-
- /**
- * the auto-export mode for the service.
- * possible values are disabled, interfaces, class_hierarchy, all_classes
- */
- String autoExport() default "";
-
- /**
- * the interfaces that the service should be advertised as supporting.
- */
- Class<?>[] interfaces() default {};
-
- /**
- * the user declared properties to be advertised with the service.
- */
- ServiceProperty[] serviceProperties() default {};
-}
\ No newline at end of file
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/ServiceProperty.java b/karaf-boot/src/main/java/org/apache/karaf/boot/ServiceProperty.java
deleted file mode 100644
index a6ca33d..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/ServiceProperty.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ServiceProperty {
- /**
- * the key of the property
- */
- String key() default "";
-
- /**
- * the value of the property
- */
- String value() default "";
-}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/Unbind.java b/karaf-boot/src/main/java/org/apache/karaf/boot/Unbind.java
deleted file mode 100644
index dbe15d1..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/Unbind.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * used to annotation unbind-method in blueprint reference listeners
- *
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Unbind {
-}
diff --git a/karaf-boot/src/main/java/org/apache/karaf/boot/Unregister.java b/karaf-boot/src/main/java/org/apache/karaf/boot/Unregister.java
deleted file mode 100644
index 04ea698..0000000
--- a/karaf-boot/src/main/java/org/apache/karaf/boot/Unregister.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * 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 regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.boot;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * used to annotation unregister-method in blueprint registration listeners
- *
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Unregister {
-}
diff --git a/pom.xml b/pom.xml
index 2c7f8ac..3650256 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,15 +29,31 @@
Apache Karaf Boot provides a simple way to create artifacts ready to be deployed in Karaf.
</description>
+ <properties>
+ <karaf.version>4.0.1</karaf.version>
+ <osgi.version>6.0.0</osgi.version>
+ </properties>
+
<modules>
- <module>karaf-boot</module>
- <module>karaf-boot-starter</module>
+ <module>karaf-boot-starters</module>
<module>karaf-boot-tools</module>
- <module>karaf-boot-parent</module>
+ <!-- TODO reuse @Services & @Reference shell annotations for generic use cases -->
<!-- Samples -->
- <module>karaf-boot-samples/karaf-boot-sample-simple</module>
+ <module>karaf-boot-samples/karaf-boot-sample-service-provider-osgi</module>
+ <module>karaf-boot-samples/karaf-boot-sample-service-consumer-osgi</module>
+ <module>karaf-boot-samples/karaf-boot-sample-service-provider-ds</module>
+ <module>karaf-boot-samples/karaf-boot-sample-service-consumer-ds</module>
+ <!-- blueprint -->
+ <!-- cdi -->
+ <!-- shell -->
+ <!-- config -->
+ <!-- jpa -->
+ <!-- servlet -->
+ <!-- test -->
+ <!-- rest & soap -->
+ <!-- camel -->
</modules>
</project>