Author: buildbot
Date: Wed Feb 24 09:30:10 2016
New Revision: 981064
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/reference/component-factory-configuration-adapter.html
Propchange: websites/staging/felix/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Wed Feb 24 09:30:10 2016
@@ -1 +1 @@
-1732044
+1732045
Modified:
websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/component-factory-configuration-adapter.html
==============================================================================
---
websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/component-factory-configuration-adapter.html
(original)
+++
websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/component-factory-configuration-adapter.html
Wed Feb 24 09:30:10 2016
@@ -89,26 +89,53 @@ h2:hover > .headerlink, h3:hover > .head
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink,
h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink,
dt:hover > .elementid-permalink { visibility: visible }</style>
<p>A factory configuration adapter service creates an adapter for each
matching configuration in Configuration Admin. For each new factory
configuration matching the factoryPid, an adapter will be created based on the
adapter implementation class. The adapter will be registered with the specified
interface and with the specified adapter service properties. Depending on the
propagate parameter, every public factory configuration properties (which don't
start with ".") will be propagated along with the adapter service properties.
It will also inherit all dependencies.</p>
-<p>Usage Example:</p>
-<div class="codehilite"><pre><span class="n">manager</span><span
class="p">.</span><span
class="n">createFactoryConfigurationAdapterService</span><span
class="p">(</span>"<span class="n">MyFactoryPid</span>"<span
class="p">,</span> "<span class="n">update</span>"<span
class="p">,</span> <span class="n">true</span><span class="p">)</span>
- <span class="p">.</span><span class="n">setInterface</span><span
class="p">(</span><span class="n">AdapterService</span><span
class="p">.</span><span class="n">class</span><span class="p">.</span><span
class="n">getName</span><span class="p">(),</span> <span class="n">new</span>
<span class="n">Hashtable</span><span class="p">()</span> <span
class="p">)</span>
- <span class="p">.</span><span class="n">setImplementation</span><span
class="p">(</span><span class="n">AdapterServiceImpl</span><span
class="p">.</span><span class="n">class</span><span class="p">);</span>
+<h3 id="usage-examples">Usage Examples<a class="headerlink"
href="#usage-examples" title="Permanent link">¶</a></h3>
+<div class="codehilite"><pre><span class="n">manager</span><span
class="o">.</span><span
class="na">createFactoryConfigurationAdapterService</span><span
class="o">(</span><span class="s">"MyFactoryPid"</span><span
class="o">,</span> <span class="s">"update"</span><span
class="o">,</span> <span class="kc">true</span><span class="o">)</span>
+ <span class="o">.</span><span class="na">setInterface</span><span
class="o">(</span><span class="n">MyService</span><span class="o">.</span><span
class="na">class</span><span class="o">.</span><span
class="na">getName</span><span class="o">(),</span> <span class="k">new</span>
<span class="n">Hashtable</span><span class="o">()</span> <span
class="o">)</span>
+ <span class="o">.</span><span class="na">setImplementation</span><span
class="o">(</span><span class="n">MyServiceImpl</span><span
class="o">.</span><span class="na">class</span><span class="o">);</span>
+
+<span class="kd">class</span> <span class="nc">MyServiceImpl</span> <span
class="kd">implements</span> <span class="n">MyService</span> <span
class="o">{</span>
+ <span class="kt">void</span> <span class="nf">update</span><span
class="o">(</span><span class="n">Dictionary</span> <span
class="n">cnf</span><span class="o">)</span> <span class="o">{</span>
+ <span class="n">String</span> <span class="n">ip</span> <span
class="o">=</span> <span class="o">(</span><span class="n">String</span><span
class="o">)</span> <span class="n">cnf</span><span class="o">.</span><span
class="na">get</span><span class="o">(</span><span
class="s">"address"</span><span class="o">);</span>
+ <span class="kt">int</span> <span class="n">port</span> <span
class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span
class="na">valueOf</span><span class="o">(</span><span
class="n">cnf</span><span class="o">.</span><span class="na">get</span><span
class="o">(</span><span class="s">"port"</span><span
class="o">);</span>
+ <span class="o">}</span>
+ <span class="o">...</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>You an also use "<code>configuration types</code>" (<a
href="dependency-configuration.html">see configuration dependency
documentation)</a>
+This is the same example as above, using a "MyConfig" configuration type:</p>
+<div class="codehilite"><pre><span class="n">manager</span><span
class="o">.</span><span
class="na">createFactoryConfigurationAdapterService</span><span
class="o">(</span><span class="s">"MyFactoryPid"</span><span
class="o">,</span> <span class="s">"update"</span><span
class="o">,</span> <span class="kc">true</span><span class="o">,</span> <span
class="n">MyConfig</span><span class="o">.</span><span
class="na">class</span><span class="o">)</span>
+ <span class="o">.</span><span class="na">setInterface</span><span
class="o">(</span><span class="n">MyService</span><span class="o">.</span><span
class="na">class</span><span class="o">.</span><span
class="na">getName</span><span class="o">(),</span> <span class="k">new</span>
<span class="n">Hashtable</span><span class="o">()</span> <span
class="o">)</span>
+ <span class="o">.</span><span class="na">setImplementation</span><span
class="o">(</span><span class="n">MyServiceImpl</span><span
class="o">.</span><span class="na">class</span><span class="o">);</span>
+
+<span class="kd">public</span> <span class="kd">interface</span> <span
class="nc">MyConfig</span> <span class="o">{</span>
+ <span class="n">String</span> <span class="nf">getAddress</span><span
class="o">();</span>
+ <span class="kt">int</span> <span class="nf">getPort</span><span
class="o">();</span>
+<span class="o">}</span>
+
+<span class="kd">class</span> <span class="nc">MyServiceImpl</span> <span
class="kd">implements</span> <span class="n">MyService</span> <span
class="o">{</span>
+ <span class="kt">void</span> <span class="nf">update</span><span
class="o">(</span><span class="n">Dictionary</span> <span
class="n">cnf</span><span class="o">)</span> <span class="o">{</span>
+ <span class="n">String</span> <span class="n">ip</span> <span
class="o">=</span> <span class="n">cnf</span><span class="o">.</span><span
class="na">getAddress</span><span class="o">();</span>
+ <span class="kt">int</span> <span class="n">port</span> <span
class="o">=</span> <span class="n">cnf</span><span class="o">.</span><span
class="na">getPort</span><span class="o">();</span>
+ <span class="o">}</span>
+ <span class="o">...</span>
+<span class="o">}</span>
</pre></div>
<h2
id="factoryconfigurationadapterservice">@FactoryConfigurationAdapterService<a
class="headerlink" href="#factoryconfigurationadapterservice" title="Permanent
link">¶</a></h2>
<p>Annotates a class that acts as a Factory Configuration Adapter Service.
-For each new Config Admin factory configuration matching the specified
-factoryPid, an instance of this service will be created. The adapter will be
-registered with the specified interface, and with the specified adapter
-service properties. Depending on the propagate parameter, every public
-factory configuration properties (which don't start with ".") will be
-propagated along with the adapter service properties.</p>
-<p>Like in @ConfigurationDependency, you can optionally specify the meta types
of
-your configurations for Web Console GUI customization (configuration
-heading/descriptions/default values/etc ...). </p>
+Like with @ConfigurationDependency, you can optionally specify a configuration
type and (optioanlly) use bnd metatype annotations
+in order to specify configuration meta data (heading/descriptions/default
values, etc ...)</p>
<h3 id="annotation-attributes">Annotation attributes:<a class="headerlink"
href="#annotation-attributes" title="Permanent link">¶</a></h3>
<hr />
+<p><strong><code>configType</code></strong> <br />
+<em>Required</em>: False <br />
+<em>Default</em>: --
+The interface to use as the configuration type, which will be injected instead
of the actual configuration dictionary.</p>
+<hr />
<p><strong><code>provides</code></strong> <br />
<em>Required</em>: False <br />
<em>Default</em>: all directly implemented interfaces.
@@ -153,11 +180,10 @@ are merged with these. </p>
<em>Required</em>: False <br />
<em>Default</em>: --</p>
<p>Sets the static method used to create the adapter instance.</p>
-<h3 id="usage-examples">Usage Examples<a class="headerlink"
href="#usage-examples" title="Permanent link">¶</a></h3>
-<p>Here, a "Dictionary" service instance is instantiated for each existing
-factory configuration instances matching the "DictionaryServiceFactory"
-factory pid:</p>
-<div class="codehilite"><pre><span
class="nd">@FactoryConfigurationAdapterService</span><span
class="o">(</span><span class="n">factoryPid</span><span
class="o">=</span><span
class="s">"DictionaryServiceFactory"</span><span class="o">,</span>
<span class="n">updated</span><span class="o">=</span><span
class="s">"updated"</span><span class="o">)</span>
+<h3 id="usage-examples_1">Usage Examples<a class="headerlink"
href="#usage-examples_1" title="Permanent link">¶</a></h3>
+<p>Here, a "DictionaryService" service instance is instantiated for each
existing
+factory configuration instance matching the "sample.DictionaryServiceFactory"
factory pid:</p>
+<div class="codehilite"><pre><span
class="nd">@FactoryConfigurationAdapterService</span><span
class="o">(</span><span class="n">factoryPid</span><span
class="o">=</span><span
class="s">"sample.DictionaryServiceFactory"</span><span
class="o">)</span>
<span class="kd">public</span> <span class="kd">class</span> <span
class="nc">DictionaryImpl</span> <span class="kd">implements</span> <span
class="n">DictionaryService</span>
<span class="o">{</span>
<span class="cm">/**</span>
@@ -194,8 +220,8 @@ factory pid:</p>
</pre></div>
-<p>Here is the same example as above, but using meta types (the DM annotations
metatype attributes are deprecated and
-it's better to use standard bnd metatype annotations, the following example
are using bnd metatypes):</p>
+<p>Here is the same example as above, but using a configuration type as well
as meta types (the DM annotations metatype attributes are deprecated and
+it's better to use standard bnd metatype annotations):</p>
<p>First, we declare our factory configuration metadata using standard
bndtools metatype annotations (see http://www.aqute.biz/Bnd/MetaType):</p>
<div class="codehilite"><pre><span class="kn">package</span> <span
class="n">sample</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">java.util.List</span><span
class="o">;</span>
@@ -213,16 +239,13 @@ it's better to use standard bnd metatype
</pre></div>
-<p>And here is the Dictionary service, and we instantiate our
DictionaryConfiguration interface using the bndlib <em>Configurable</em> helper
class.</p>
+<p>And here is the DictionaryService:</p>
<div class="codehilite"><pre><span class="kn">import</span> <span
class="nn">java.util.List</span><span class="o">;</span>
<span class="kn">import</span> <span
class="nn">aQute.bnd.annotation.metatype.Configurable</span><span
class="o">;</span>
-<span class="nd">@FactoryConfigurationAdapterService</span><span
class="o">(</span><span class="n">factoryPidClass</span><span
class="o">=</span><span class="n">DictionaryConfiguration</span><span
class="o">.</span><span class="na">class</span><span class="o">)</span>
+<span class="nd">@FactoryConfigurationAdapterService</span><span
class="o">(</span><span class="n">configType</span><span
class="o">=</span><span class="n">DictionaryConfiguration</span><span
class="o">.</span><span class="na">class</span><span class="o">)</span>
<span class="kd">public</span> <span class="kd">class</span> <span
class="nc">DictionaryImpl</span> <span class="kd">implements</span> <span
class="n">DictionaryService</span> <span class="o">{</span>
- <span class="kd">protected</span> <span class="kt">void</span> <span
class="nf">updated</span><span class="o">(</span><span
class="n">Dictionary</span><span class="o"><</span><span
class="n">String</span><span class="o">,</span> <span class="o">?></span>
<span class="n">props</span><span class="o">)</span> <span class="o">{</span>
- <span class="c1">// load configuration from the provided dictionary,
or throw an exception of any configuration error.</span>
- <span class="n">DictionaryConfiguration</span> <span
class="n">cnf</span> <span class="o">=</span> <span
class="n">Configurable</span><span class="o">.</span><span
class="na">createConfigurable</span><span class="o">(</span><span
class="n">DictionaryConfiguration</span><span class="o">.</span><span
class="na">class</span><span class="o">,</span> <span
class="n">props</span><span class="o">);</span>
-
+ <span class="kd">protected</span> <span class="kt">void</span> <span
class="nf">updated</span><span class="o">(</span><span
class="n">DictionaryConfiguration</span> <span class="n">config</span><span
class="o">)</span> <span class="o">{</span>
<span class="n">m_lang</span> <span class="o">=</span> <span
class="n">config</span><span class="o">.</span><span
class="na">lang</span><span class="o">();</span>
<span class="n">m_words</span><span class="o">.</span><span
class="na">clear</span><span class="o">();</span>
<span class="k">for</span> <span class="o">(</span><span
class="n">String</span> <span class="n">word</span> <span class="o">:</span>
<span class="n">conf</span><span class="o">.</span><span
class="na">words</span><span class="o">())</span> <span class="o">{</span>
@@ -233,7 +256,7 @@ it's better to use standard bnd metatype
<span class="o">}</span>
</pre></div>
<div class="timestamp" style="margin-top: 30px; font-size: 80%;
text-align: right;">
- Rev. 1665812 by marrs on Wed, 11 Mar 2015 09:02:04 +0000
+ Rev. 1732045 by pderop on Wed, 24 Feb 2016 09:29:48 +0000
</div>
<div class="trademarkFooter">
Apache Felix, Felix, Apache, the Apache feather logo, and the Apache
Felix project