Added: 
websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/tutorials/working-with-annotations.html
==============================================================================
--- 
websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/tutorials/working-with-annotations.html
 (added)
+++ 
websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/tutorials/working-with-annotations.html
 Wed Mar  4 10:39:35 2015
@@ -0,0 +1,195 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html>
+<!--
+
+    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.
+-->
+  <head>
+    <title>Apache Felix - Apache Felix Dependency Manager - Annotations</title>
+    <link rel="icon" href="/res/favicon.ico">
+    <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
+    <link rel="stylesheet" href="/res/codehilite.css" type="text/css" 
media="all">
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </head>
+  <body>
+    <div class="title">
+      <div class="logo">
+        <a href="http://felix.apache.org/";>
+          <img border="0" alt="Apache Felix" src="/res/logo.png">
+        </a>
+      </div>
+      <div class="header">
+        <a href="http://www.apache.org/";>
+          <img border="0" alt="Apache" src="/res/apache.png">
+        </a>
+      </div>
+    </div>
+    
+    <div class="menu"> 
+      <p><a href="/news.html">news</a>  <br />
+<a href="/license.html">license</a>  <br />
+<a href="/downloads.cgi">downloads</a>  <br />
+<a href="/documentation.html">documentation</a>  <br />
+<a href="/mailinglists.html">mailing lists</a>  <br />
+<a href="/documentation/community/contributing.html">contributing</a>  <br />
+<a href="/sitemap.html">site map</a>  <br />
+<a href="http://www.apache.org/";>asf</a>  <br />
+<a href="http://www.apache.org/security/";>security</a>  <br />
+<a href="http://www.apache.org/foundation/sponsorship.html";>sponsorship</a>  
<br />
+<a href="http://www.apache.org/foundation/thanks.html";>sponsors</a>    </p>
+<iframe
+    src="http://www.apache.org/ads/button.html";
+    style="border-width:0; float: left"
+    frameborder="0"
+    scrolling="no"
+    width="135"
+    height="135">
+</iframe>
+    </div>
+    
+    <div class="main">
+      <div class="breadcrump" style="font-size: 80%;">
+        <a href="/">Home</a>&nbsp;&raquo&nbsp;<a 
href="/documentation.html">Documentation</a>&nbsp;&raquo&nbsp;<a 
href="/documentation/subprojects.html">Apache Felix Subproject 
Documentation</a>&nbsp;&raquo&nbsp;<a 
href="/documentation/subprojects/apache-felix-dependency-manager-4.html">Apache 
Felix Dependency Manager 4</a>
+      </div>
+
+      
+      
+      <h1>Apache Felix Dependency Manager - Annotations</h1>
+      <p>The Dependency Manager provides a compact and versatile Java API that 
allows you to declaratively and programmatically register, acquire, and manage 
dynamic OSGi components. This has many advantages, but also means you need to 
implement your own <code>BundleActivator</code>. In cases where your 
dependencies are not that dynamic, an alternative is to use annotations on your 
component.</p>
+<p>This tutorial outlines how to setup and use such annotations to describe 
your components and dependencies. We present a simple "Hello World" component 
defined using annotations, and also explain how to build the bundle using 
either Bnd, Ant, or Maven.</p>
+<h2 id="hello-world-component">Hello World Component</h2>
+<div class="codehilite"><pre><span class="n">package</span> <span 
class="n">org</span><span class="p">.</span><span class="n">apache</span><span 
class="p">.</span><span class="n">felix</span><span class="p">.</span><span 
class="n">dependencymanager</span><span class="p">.</span><span 
class="n">samples</span><span class="p">.</span><span 
class="n">annotation</span><span class="p">.</span><span 
class="n">hello</span><span class="p">;</span>
+
+<span class="n">import</span> <span class="n">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">felix</span><span class="p">.</span><span class="n">dm</span><span 
class="p">.</span><span class="n">annotation</span><span 
class="p">.</span><span class="n">api</span><span class="p">.</span><span 
class="n">Component</span><span class="p">;</span>
+<span class="n">import</span> <span class="n">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">felix</span><span class="p">.</span><span class="n">dm</span><span 
class="p">.</span><span class="n">annotation</span><span 
class="p">.</span><span class="n">api</span><span class="p">.</span><span 
class="n">Start</span><span class="p">;</span>
+
+<span class="p">@</span><span class="n">Component</span>
+<span class="n">public</span> <span class="n">class</span> <span 
class="n">HelloWorld</span> <span class="p">{</span>
+    <span class="p">@</span><span class="n">Start</span>
+    <span class="n">public</span> <span class="n">void</span> <span 
class="n">activate</span><span class="p">()</span> <span class="p">{</span>
+       <span class="n">System</span><span class="p">.</span><span 
class="n">out</span><span class="p">.</span><span class="n">println</span><span 
class="p">(</span>&quot;<span class="n">Hello</span> <span 
class="n">world</span> !&quot;<span class="p">);</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<h2 id="compiling-with-bnd">Compiling with Bnd:</h2>
+<p>The annotations must be processed at compilation phase and you have to use 
a special Bnd plugin (declared using the "-plugin" bnd directive):</p>
+<div class="codehilite"><pre><span class="n">Bundle</span><span 
class="o">-</span><span class="n">Name</span><span class="p">:</span> <span 
class="n">Hello</span> <span class="n">World</span> <span 
class="n">Using</span> <span class="n">Dependency</span> <span 
class="n">Manager</span> <span class="n">Annotations</span>
+<span class="n">Bundle</span><span class="o">-</span><span 
class="n">SymbolicName</span><span class="p">:</span> <span 
class="n">org</span><span class="p">.</span><span class="n">apache</span><span 
class="p">.</span><span class="n">felix</span><span class="p">.</span><span 
class="n">dependencymanager</span><span class="p">.</span><span 
class="n">samples</span><span class="p">.</span><span 
class="n">annotation</span><span class="p">.</span><span class="n">hello</span>
+<span class="n">Import</span><span class="o">-</span><span 
class="n">Package</span><span class="p">:</span> <span class="o">*</span>
+<span class="n">Private</span><span class="o">-</span><span 
class="n">Package</span><span class="p">:</span> <span 
class="n">org</span><span class="p">.</span><span class="n">apache</span><span 
class="p">.</span><span class="n">felix</span><span class="p">.</span><span 
class="n">dependencymanager</span><span class="p">.</span><span 
class="n">samples</span><span class="p">.</span><span 
class="n">annotation</span><span class="p">.</span><span class="n">hello</span>
+<span class="o">-</span><span class="n">plugin</span> <span 
class="n">org</span><span class="p">.</span><span class="n">apache</span><span 
class="p">.</span><span class="n">felix</span><span class="p">.</span><span 
class="n">dm</span><span class="p">.</span><span 
class="n">annotation</span><span class="p">.</span><span 
class="n">plugin</span><span class="p">.</span><span class="n">bnd</span><span 
class="p">.</span><span class="n">AnnotationPlugin</span><span 
class="p">;</span><span class="nb">log</span><span class="p">=</span><span 
class="n">warn</span>
+</pre></div>
+
+
+<h2 id="compiling-with-ant">Compiling with Ant:</h2>
+<p>Since Bnd provides a Ant task, you can use the bnd directives above with 
the following build.xml:
+(it is assumed that directives.bnd, bnd.jar, json-20070829.jar and 
org.apache.felix.dependencymanager.annotation.jar are in the current 
directory)</p>
+<div class="codehilite"><pre><span class="nt">&lt;project</span> <span 
class="na">name=</span><span class="s">&quot;TestDM&quot;</span> <span 
class="na">default=</span><span class="s">&quot;bnd&quot;</span><span 
class="nt">&gt;</span>
+    <span class="nt">&lt;property</span> <span class="na">name=</span><span 
class="s">&quot;bnd&quot;</span> <span class="na">value=</span><span 
class="s">&quot;bnd.jar&quot;</span> <span class="nt">/&gt;</span>
+    <span class="nt">&lt;property</span> <span class="na">name=</span><span 
class="s">&quot;json&quot;</span> <span class="na">value=</span><span 
class="s">&quot;json-20070829.jar&quot;</span> <span class="nt">/&gt;</span>
+    <span class="nt">&lt;property</span> <span class="na">name=</span><span 
class="s">&quot;dmannot&quot;</span> <span class="na">value=</span><span 
class="s">&quot;org.apache.felix.dependencymanager.annotation.jar&quot;</span> 
<span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;target</span> <span class="na">name=</span><span 
class="s">&quot;compile&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;delete</span> <span class="na">dir=</span><span 
class="s">&quot;target/classes&quot;</span> <span class="na">quiet=</span><span 
class="s">&quot;yes&quot;</span> <span class="nt">/&gt;</span>
+        <span class="nt">&lt;mkdir</span> <span class="na">dir=</span><span 
class="s">&quot;target/classes&quot;</span> <span class="nt">/&gt;</span>
+        <span class="nt">&lt;javac</span> <span class="na">srcdir=</span><span 
class="s">&quot;src/main/java&quot;</span> <span 
class="na">destdir=</span><span class="s">&quot;target/classes&quot;</span> 
<span class="na">classpath=</span><span class="s">&quot;</span><span 
class="cp">${</span><span class="n">dmannot</span><span 
class="cp">}</span><span class="s">&quot;</span> <span class="nt">/&gt;</span>
+    <span class="nt">&lt;/target&gt;</span>
+
+    <span class="nt">&lt;target</span> <span class="na">name=</span><span 
class="s">&quot;bnd&quot;</span> <span class="na">depends=</span><span 
class="s">&quot;compile&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;taskdef</span> <span 
class="na">resource=</span><span 
class="s">&quot;aQute/bnd/ant/taskdef.properties&quot;</span> <span 
class="na">classpath=</span><span class="s">&quot;</span><span 
class="cp">${</span><span class="n">dmannot</span><span 
class="cp">}</span><span class="s">:</span><span class="cp">${</span><span 
class="n">bnd</span><span class="cp">}</span><span class="s">:</span><span 
class="cp">${</span><span class="n">json</span><span class="cp">}</span><span 
class="s">&quot;</span> <span class="nt">/&gt;</span>
+        <span class="nt">&lt;bnd</span> <span 
class="na">classpath=</span><span class="s">&quot;target/classes&quot;</span> 
<span class="na">eclipse=</span><span class="s">&quot;false&quot;</span> <span 
class="na">files=</span><span class="s">&quot;directives.bnd&quot;</span> <span 
class="na">output=</span><span 
class="s">&quot;org.apache.felix.dependencymanager.samples.annotation.hello.jar&quot;</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;/target&gt;</span>
+<span class="nt">&lt;/project&gt;</span>
+</pre></div>
+
+
+<h2 id="compiling-with-maven">Compiling with Maven:</h2>
+<p>When compiling with Maven, you have to use the Dependency Manager Maven 
annotation plugin:</p>
+<div class="codehilite"><pre><span class="cp">&lt;?xml 
version=&quot;1.0&quot;?&gt;</span>
+<span class="nt">&lt;project</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://maven.apache.org/POM/4.0.0&quot;</span> <span 
class="na">xmlns:xsi=</span><span 
class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
+    <span class="na">xsi:schemaLocation=</span><span 
class="s">&quot;http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd&quot;</span><span 
class="nt">&gt;</span>
+    <span class="nt">&lt;modelVersion&gt;</span>4.0.0<span 
class="nt">&lt;/modelVersion&gt;</span>
+    <span class="nt">&lt;properties&gt;</span>
+        <span class="nt">&lt;osgi.version&gt;</span>4.2.0<span 
class="nt">&lt;/osgi.version&gt;</span>
+    <span class="nt">&lt;/properties&gt;</span>
+    <span class="nt">&lt;name&gt;</span>Hello World Using Dependency Manager 
Annotations<span class="nt">&lt;/name&gt;</span>
+    <span class="nt">&lt;groupId&gt;</span>org.apache.felix<span 
class="nt">&lt;/groupId&gt;</span>
+    <span 
class="nt">&lt;artifactId&gt;</span>org.apache.felix.dependencymanager.samples.annotation.hello<span
 class="nt">&lt;/artifactId&gt;</span>
+    <span class="nt">&lt;version&gt;</span>3.0.0-SNAPSHOT<span 
class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;packaging&gt;</span>bundle<span 
class="nt">&lt;/packaging&gt;</span>
+    <span class="nt">&lt;dependencies&gt;</span>
+        <span class="nt">&lt;dependency&gt;</span>
+            <span class="nt">&lt;groupId&gt;</span>${pom.groupId}<span 
class="nt">&lt;/groupId&gt;</span>
+            <span 
class="nt">&lt;artifactId&gt;</span>org.apache.felix.dependencymanager.annotation<span
 class="nt">&lt;/artifactId&gt;</span>
+            <span class="nt">&lt;version&gt;</span>3.0.0<span 
class="nt">&lt;/version&gt;</span>
+        <span class="nt">&lt;/dependency&gt;</span>
+    <span class="nt">&lt;/dependencies&gt;</span>
+    <span class="nt">&lt;build&gt;</span>
+        <span class="nt">&lt;plugins&gt;</span>
+            <span class="nt">&lt;plugin&gt;</span>
+                <span 
class="nt">&lt;groupId&gt;</span>org.apache.maven.plugins<span 
class="nt">&lt;/groupId&gt;</span>
+                <span 
class="nt">&lt;artifactId&gt;</span>maven-compiler-plugin<span 
class="nt">&lt;/artifactId&gt;</span>
+                <span class="nt">&lt;configuration&gt;</span>
+                    <span class="nt">&lt;source&gt;</span>1.5<span 
class="nt">&lt;/source&gt;</span>
+                    <span class="nt">&lt;target&gt;</span>1.5<span 
class="nt">&lt;/target&gt;</span>
+                <span class="nt">&lt;/configuration&gt;</span>
+            <span class="nt">&lt;/plugin&gt;</span>
+            <span class="nt">&lt;plugin&gt;</span>
+                <span class="nt">&lt;groupId&gt;</span>org.apache.felix<span 
class="nt">&lt;/groupId&gt;</span>
+                <span 
class="nt">&lt;artifactId&gt;</span>maven-bundle-plugin<span 
class="nt">&lt;/artifactId&gt;</span>
+                <span class="nt">&lt;version&gt;</span>2.3.4<span 
class="nt">&lt;/version&gt;</span>
+                <span class="nt">&lt;extensions&gt;</span>true<span 
class="nt">&lt;/extensions&gt;</span>
+                <span class="nt">&lt;configuration&gt;</span>
+                    <span class="nt">&lt;instructions&gt;</span>
+                        <span class="nt">&lt;Bundle-Name&gt;</span>Hello World 
Using Dependency Manager Annotations<span class="nt">&lt;/Bundle-Name&gt;</span>
+                        <span 
class="nt">&lt;Bundle-SymbolicName&gt;</span>org.apache.felix.dependencymanager.samples.annotation.hello<span
 class="nt">&lt;/Bundle-SymbolicName&gt;</span>
+                        <span class="nt">&lt;Import-Package&gt;</span>*<span 
class="nt">&lt;/Import-Package&gt;</span>
+                        <span 
class="nt">&lt;Private-Package&gt;</span>org.apache.felix.dependencymanager.samples.annotation.hello<span
 class="nt">&lt;/Private-Package&gt;</span>
+                    <span class="nt">&lt;/instructions&gt;</span>
+                <span class="nt">&lt;/configuration&gt;</span>
+            <span class="nt">&lt;/plugin&gt;</span>
+            <span class="nt">&lt;plugin&gt;</span>
+                <span class="nt">&lt;groupId&gt;</span>org.apache.felix<span 
class="nt">&lt;/groupId&gt;</span>
+                <span 
class="nt">&lt;artifactId&gt;</span>org.apache.felix.dependencymanager.annotation<span
 class="nt">&lt;/artifactId&gt;</span>
+                <span class="nt">&lt;version&gt;</span>3.0.0<span 
class="nt">&lt;/version&gt;</span>
+                <span class="nt">&lt;executions&gt;</span>
+                    <span class="nt">&lt;execution&gt;</span>
+                        <span class="nt">&lt;goals&gt;</span>
+                            <span class="nt">&lt;goal&gt;</span>scan<span 
class="nt">&lt;/goal&gt;</span>
+                        <span class="nt">&lt;/goals&gt;</span>
+                        <span class="nt">&lt;configuration&gt;</span>
+                            <span class="nt">&lt;log&gt;</span>info<span 
class="nt">&lt;/log&gt;</span>
+                        <span class="nt">&lt;/configuration&gt;</span>
+                    <span class="nt">&lt;/execution&gt;</span>
+                <span class="nt">&lt;/executions&gt;</span>
+            <span class="nt">&lt;/plugin&gt;</span>
+        <span class="nt">&lt;/plugins&gt;</span>
+    <span class="nt">&lt;/build&gt;</span>
+<span class="nt">&lt;/project&gt;</span>
+</pre></div>
+      <div class="timestamp" style="margin-top: 30px; font-size: 80%; 
text-align: right;">
+        Rev. 1663924 by marrs on Wed, 4 Mar 2015 10:39:19 +0000
+      </div>
+      <div class="trademarkFooter"> 
+        Apache Felix, Felix, Apache, the Apache feather logo, and the Apache 
Felix project
+        logo are trademarks of The Apache Software Foundation. All other marks 
mentioned
+        may be trademarks or registered trademarks of their respective owners.
+      </div>
+    </div>
+  </body>
+</html>


Reply via email to