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