You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2013/09/13 18:00:35 UTC

svn commit: r1522989 - /felix/site/trunk/content/documentation/subprojects/apache-felix-maven-scr-plugin/apache-felix-scr-bndtools-use.mdtext

Author: pderop
Date: Fri Sep 13 16:00:34 2013
New Revision: 1522989

URL: http://svn.apache.org/r1522989
Log:
Initial version for SCR annotations bnd plugin tutorial

Modified:
    felix/site/trunk/content/documentation/subprojects/apache-felix-maven-scr-plugin/apache-felix-scr-bndtools-use.mdtext

Modified: felix/site/trunk/content/documentation/subprojects/apache-felix-maven-scr-plugin/apache-felix-scr-bndtools-use.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-maven-scr-plugin/apache-felix-scr-bndtools-use.mdtext?rev=1522989&r1=1522988&r2=1522989&view=diff
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-maven-scr-plugin/apache-felix-scr-bndtools-use.mdtext (original)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-maven-scr-plugin/apache-felix-scr-bndtools-use.mdtext Fri Sep 13 16:00:34 2013
@@ -1,4 +1,97 @@
 Title: Apache Felix SCR Annotations BndTools Use
 Excerpt: Using the Apache Felix SCR Annotations Bnd plugin to generate Declarative Services and Metatype Service descriptors in BndTools.
 
-Page under construction.
+The org.apache.felix.scrplugin.bnd.SCRDescriptorBndPlugin is a bnd plugin allowing to generate SCR annotations and metatype descriptors in the Eclipse BndTools environment.
+This page describes how to install the plugin in BndTools and also provides a simple tutorial, which won't be very fascinating, but will makes it easy
+to demonstrate the use of Apache SCR annotations within BndTools.
+
+If you are not yet familiar with BndTools or if you don't have already installed it, you can take a look at [BndTools homepage](http://bndtools.org/).
+
+This tutorial has been made with Eclipse Kepler and with the latest BndTools development version.
+It is assumed that the eclipse workspace is currently set to ~/workspace/BNDTOOLS
+
+## Installing SCR Bnd plugin in BndTools
+
+**Create the cnf project**:
+
+If the BndTools "cnf" project does not already exist in your workspace, then create it:
+
+* In the Eclipse Windows menu, click on Preference -> BndTools OSGi
+* Click on "Configuration Project/Check Now". This will create the "cnf" bndtools project.
+
+**Compile the SCR annotations bnd plugin and copy it in cnf project**:
+
+Now you have to copy the SCR annotations bnd plugin into the cnf project of your current workspace ("BNDTOOLS" in this example). 
+For now, the plugin is not yet released, but you can build it yourself like this:
+
+    :::sh
+    $ svn checkout http://svn.apache.org/repos/asf/felix/trunk/scrplugin scrplugin
+    $ cd scrplugin
+    $ mvn clean install
+    $ mkdir ~/workspace/BNDTOOLS/cnf/plugins/org.apache.felix.scr.bnd/
+    $ cp scrplugin/bnd-scr-plugin/target/org.apache.felix.scr.bnd-X.Y.Z-SNAPSHOT.jar ~/workspace/BNDTOOLS/cnf/plugins/org.apache.felix.scr.bnd/
+
+**Configure the default BndTools plugin path**:
+
+In order to let BndTools load the SCR annotations bnd plugin, you can configure the default BndTools plugin path:
+
+* In BndTools menu, click on "BndTools Open ext/pluginpaths.bnd", then click on "Source"
+* And append the SCR bnd plugin (${plugin-dir}/org.apache.felix.scr.bnd/org.apache.felix.scr.bnd-X.Y.Z-SNAPSHOT.jar) to the current plugin path. 
+For example:
+
+    -pluginpath: ${plugin-dir}/biz.aQute.repository/biz.aQute.repository-2.1.0.jar, \
+                 ${plugin-dir}/org.apache.felix.scr.bnd/org.apache.felix.scr.bnd-1.0.0-SNAPSHOT.jar
+
+You have installed the SCR annotations bnd plugin in Eclipse BndTools, and you can now start using it (see the following Tutorial).
+
+## Tutorial
+
+In this tutorial, we'll create a "greeting" project, which provides a simple Greeting service with a "sayHello" method, and the
+implementation will use the Apache Felix SCR annotations:
+
+* From the File menu, select New -> Bndtools OSGi Project for creating an empty project, and call it "greeting".
+* Click on bnd.bnd file of the greeting project, then click on Source, and add the following (and then save the file)
+
+    -buildpath: ${plugin-dir}/org.apache.felix.scr.bnd/org.apache.felix.scr.bnd-1.0.0-SNAPSHOT.jar;version=file
+    -plugin: org.apache.felix.scrplugin.bnd.SCRDescriptorBndPlugin
+    Private-Package: greeting.impl
+    Export-Package: greeting.api
+
+* Create the greeting.api.Greeting interface:
+
+    :::java
+    package greeting.api;
+    
+    public interface Greeting {
+        void sayHello(String name);
+    }
+
+* Create the greeting.impl.GreetingImpl class:
+
+    :::java    
+    package greeting.impl;
+    
+    import greeting.api.Greeting;
+    
+    import org.apache.felix.scr.annotations.Activate;
+    import org.apache.felix.scr.annotations.Component;
+    import org.apache.felix.scr.annotations.Service;
+    
+    @Component(immediate=true)
+    @Service
+    public class GreetingImpl implements Greeting {
+    	@Activate
+    	private void start() {
+    		System.out.println("Starting Greeting Service");
+    	}
+    	
+    	@Override
+    	public void sayHello(String name) {
+    		System.out.println("Hello " + name);
+    	}
+    }
+
+* Now, click on bnd.bnd and rebuild the project. you have created your first bndtools project using SCR annotations. 
+* Create a Run descriptor (call it "run") with Apache Felix 4 With Gogo Shell.
+* In Run requirement, add the greeting project, as well as Apache Felix SCR from Bnd HUB.
+* Then Run the project: you should see in the console the "Starting Greeting Service" message displayed from the start() method.