You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by bu...@apache.org on 2015/03/07 22:56:16 UTC
svn commit: r942795 - in /websites/staging/felix/trunk/content: ./
documentation/subprojects/apache-felix-dependency-manager-4/reference/dependency-configuration.html
Author: buildbot
Date: Sat Mar 7 21:56:15 2015
New Revision: 942795
Log:
Staging update by buildbot for felix
Modified:
websites/staging/felix/trunk/content/ (props changed)
websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/reference/dependency-configuration.html
Propchange: websites/staging/felix/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sat Mar 7 21:56:15 2015
@@ -1 +1 @@
-1664924
+1664925
Modified: websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/reference/dependency-configuration.html
==============================================================================
--- websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/reference/dependency-configuration.html (original)
+++ websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager-4/reference/dependency-configuration.html Sat Mar 7 21:56:15 2015
@@ -75,6 +75,7 @@
<p>Annotation attributes:</p>
<ul>
<li><em>pid</em>: Returns the pid for a given service (by default, the pid is the service class name).</li>
+<li><em>pidClass</em>: Will the the name of the specified class as the the pid for a given service (by default, the pid is the service class name).</li>
<li><em>propagate</em>: Returns true if the configuration properties must be published along with the service. Any additional service properties specified directly are merged with these.</li>
<li><em>heading</em>: The label used to display the tab name (or section) where the properties are displayed. Example: "Printer Service".</li>
<li><em>description</em>: A human readable description of the PID this annotation is associated with. Example: "Configuration for the PrinterService bundle".</li>
@@ -94,36 +95,45 @@
</pre></div>
-<p>This other example shows how to specify a configuration dependency, as well as meta data used to customize the WebConsole GUI. Using these meta data, you can specify for example the default value for your configurations data, some descriptions, the cardinality of configuration values, etc ...</p>
-<div class="codehilite"><pre><span class="kn">package</span> <span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">felix</span><span class="o">.</span><span class="na">sample</span><span class="o">;</span>
+<p>This other example shows how to specify a configuration dependency, as well as meta data used to customize the
+WebConsole GUI. Using these meta data, you can specify for example the default value for your
+configurations data, some descriptions, the cardinality of configuration values, etc ...
+(we use here standard bnd metatype annotations, <a href="http://www.aqute.biz/Bnd/MetaType">see bnd metatype documentation here</a>.</p>
+<p>First, we define the configuration metadata, using standard bndtools metatatype annotations:</p>
+<div class="codehilite"><pre> <span class="p">:::</span><span class="n">java</span>
+ <span class="n">package</span> <span class="n">sample</span><span class="p">;</span>
+ <span class="n">import</span> <span class="n">aQute</span><span class="p">.</span><span class="n">bnd</span><span class="p">.</span><span class="n">annotation</span><span class="p">.</span><span class="n">metatype</span><span class="p">.</span><span class="n">Meta</span><span class="p">.</span><span class="n">AD</span><span class="p">;</span>
+ <span class="n">import</span> <span class="n">aQute</span><span class="p">.</span><span class="n">bnd</span><span class="p">.</span><span class="n">annotation</span><span class="p">.</span><span class="n">metatype</span><span class="p">.</span><span class="n">Meta</span><span class="p">.</span><span class="n">OCD</span><span class="p">;</span>
-<span class="nd">@Component</span>
-<span class="kd">public</span> <span class="kd">class</span> <span class="nc">Printer</span> <span class="o">{</span>
- <span class="nd">@ConfigurationDependency</span><span class="o">(</span>
- <span class="n">heading</span> <span class="o">=</span> <span class="s">"Printer Service"</span><span class="o">,</span>
- <span class="n">description</span> <span class="o">=</span> <span class="s">"Declare here parameters used to configure the Printer service"</span><span class="o">,</span>
- <span class="n">metadata</span> <span class="o">=</span> <span class="o">{</span>
- <span class="nd">@PropertyMetaData</span><span class="o">(</span><span class="n">heading</span> <span class="o">=</span> <span class="s">"Ip Address"</span><span class="o">,</span>
- <span class="n">description</span> <span class="o">=</span> <span class="s">"Enter the ip address for the Printer service"</span><span class="o">,</span>
- <span class="n">defaults</span> <span class="o">=</span> <span class="o">{</span> <span class="s">"127.0.0.1"</span> <span class="o">},</span>
- <span class="n">type</span> <span class="o">=</span> <span class="n">String</span><span class="o">.</span><span class="na">class</span><span class="o">,</span>
- <span class="n">id</span> <span class="o">=</span> <span class="s">"IPADDR"</span><span class="o">,</span>
- <span class="n">cardinality</span> <span class="o">=</span> <span class="mi">0</span><span class="o">),</span>
- <span class="nd">@PropertyMetaData</span><span class="o">(</span><span class="n">heading</span> <span class="o">=</span> <span class="s">"Port Number"</span><span class="o">,</span>
- <span class="n">description</span> <span class="o">=</span> <span class="s">"Enter the port number for the Printer service"</span><span class="o">,</span>
- <span class="n">defaults</span> <span class="o">=</span> <span class="o">{</span> <span class="s">"4444"</span> <span class="o">},</span>
- <span class="n">type</span> <span class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span class="na">class</span><span class="o">,</span>
- <span class="n">id</span> <span class="o">=</span> <span class="s">"PORTNUM"</span><span class="o">,</span>
- <span class="n">cardinality</span> <span class="o">=</span> <span class="mi">0</span><span class="o">)</span>
- <span class="o">}</span>
- <span class="o">)</span>
- <span class="kt">void</span> <span class="nf">updated</span><span class="o">(</span><span class="n">Dictionary</span> <span class="n">config</span><span class="o">)</span> <span class="o">{</span>
- <span class="c1">// load configuration from the provided dictionary.</span>
- <span class="o">}</span>
-<span class="o">}</span>
+ <span class="p">@</span><span class="n">OCD</span><span class="p">(</span><span class="n">description</span> <span class="p">=</span> "<span class="n">Declare</span> <span class="n">here</span> <span class="n">the</span> <span class="n">Printer</span> <span class="n">Configuration</span><span class="p">.</span>"<span class="p">)</span>
+ <span class="n">public</span> <span class="n">interface</span> <span class="n">PrinterConfiguration</span> <span class="p">{</span>
+ <span class="p">@</span><span class="n">AD</span><span class="p">(</span><span class="n">description</span> <span class="p">=</span> "<span class="n">Enter</span> <span class="n">the</span> <span class="n">printer</span> <span class="n">ip</span> <span class="n">address</span>"<span class="p">)</span>
+ <span class="n">String</span> <span class="n">ipAddress</span><span class="p">();</span>
+
+ <span class="p">@</span><span class="n">AD</span><span class="p">(</span><span class="n">description</span> <span class="p">=</span> "<span class="n">Enter</span> <span class="n">the</span> <span class="n">printer</span> <span class="n">address</span> <span class="n">port</span> <span class="n">number</span><span class="p">.</span>"<span class="p">)</span>
+ <span class="n">int</span> <span class="n">portNumber</span><span class="p">();</span>
+ <span class="p">}</span>
+</pre></div>
+
+
+<p>Next, we define our Printer service which instantiates the PrinterConfiguration using the *Configurable" bndlib helper:</p>
+<div class="codehilite"><pre> <span class="n">package</span> <span class="n">sample</span><span class="p">;</span>
+ <span class="n">import</span> <span class="n">aQute</span><span class="p">.</span><span class="n">bnd</span><span class="p">.</span><span class="n">annotation</span><span class="p">.</span><span class="n">metatype</span><span class="o">.*</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">Printer</span> <span class="p">{</span>
+ <span class="p">@</span><span class="n">ConfigurationDependency</span><span class="p">(</span><span class="n">pidClass</span> <span class="p">=</span> <span class="n">PrinterConfiguration</span><span class="p">.</span><span class="n">class</span><span class="p">)</span> <span class="o">//</span> <span class="n">Will</span> <span class="n">use</span> <span class="n">pid</span> "<span class="n">sample</span><span class="p">.</span><span class="n">PrinterConfiguration</span>"
+ <span class="n">void</span> <span class="n">updated</span><span class="p">(</span><span class="n">Dictionary</span> <span class="n">props</span><span class="p">)</span> <span class="p">{</span>
+ <span class="o">//</span> <span class="n">load</span> <span class="n">configuration</span> <span class="n">from</span> <span class="n">the</span> <span class="n">provided</span> <span class="n">dictionary</span><span class="p">,</span> <span class="n">or</span> <span class="n">throw</span> <span class="n">an</span> <span class="n">exception</span> <span class="n">of</span> <span class="n">any</span> <span class="n">configuration</span> <span class="n">error</span><span class="p">.</span>
+ <span class="n">PrinterConfig</span> <span class="n">cnf</span> <span class="p">=</span> <span class="n">Configurable</span><span class="p">.</span><span class="n">createConfigurable</span><span class="p">(</span><span class="n">PrinterConfig</span><span class="p">.</span><span class="n">class</span><span class="p">,</span> <span class="n">props</span><span class="p">);</span>
+ <span class="n">String</span> <span class="n">ip</span> <span class="p">=</span> <span class="n">cnf</span><span class="p">.</span><span class="n">ipAddress</span><span class="p">();</span>
+ <span class="n">int</span> <span class="n">port</span> <span class="p">=</span> <span class="n">cnf</span><span class="p">.</span><span class="n">portNumber</span><span class="p">();</span>
+ <span class="p">...</span>
+ <span class="p">}</span>
+ <span class="p">}</span>
</pre></div>
<div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
- Rev. 1664040 by marrs on Wed, 4 Mar 2015 15:21:58 +0000
+ Rev. 1664925 by pderop on Sat, 7 Mar 2015 21:56:01 +0000
</div>
<div class="trademarkFooter">
Apache Felix, Felix, Apache, the Apache feather logo, and the Apache Felix project