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 2018/10/09 13:32:50 UTC
svn commit: r1036187 - in /websites/staging/felix/trunk/content: ./
documentation/subprojects/apache-felix-dependency-manager/reference/component-bundle-adapter.html
Author: buildbot
Date: Tue Oct 9 13:32:50 2018
New Revision: 1036187
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-bundle-adapter.html
Propchange: websites/staging/felix/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Oct 9 13:32:50 2018
@@ -1 +1 @@
-1843262
+1843263
Modified: websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/component-bundle-adapter.html
==============================================================================
--- websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/component-bundle-adapter.html (original)
+++ websites/staging/felix/trunk/content/documentation/subprojects/apache-felix-dependency-manager/reference/component-bundle-adapter.html Tue Oct 9 13:32:50 2018
@@ -89,7 +89,8 @@ 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>Bundle adapters are similar to AdapterService, but instead of adapting a
-service, they adapt a bundle with a certain set of states (STARTED|INSTALLED|...), and provide a service on top of it.</p>
+service, they adapt a bundle with a certain set of states (STARTED|INSTALLED|...),
+and provide a service on top of it.</p>
<p>The bundle adapter will be applied to any bundle that matches the specified
bundle state mask and filter conditions, which may match some of the bundle
OSGi manifest headers. For each matching bundle an adapter will be created
@@ -97,7 +98,10 @@ based on the adapter implementation clas
with the specified interface and with service properties found from the
original bundle OSGi manifest headers plus any extra properties you supply
here. If you declare the original bundle as a member it will be injected. </p>
-<h2 id="example-using-api">Example using API:<a class="headerlink" href="#example-using-api" title="Permanent link">¶</a></h2>
+<p>To define a bundle adapter component, you need to create a <a href="http://felix.staging.apache.org/apidocs/dependencymanager/r12/org/apache/felix/dm/BundleComponent.html">BundleComponent</a> component
+using the DependencyActivatorBase.createBundleComponent() or the DependencyManager.createBundleComponent() method.</p>
+<p>This interface extends the Component interface in order to add extra setters methods needed to define a bundle adapter service component.</p>
+<h2 id="example-usage">Example usage<a class="headerlink" href="#example-usage" title="Permanent link">¶</a></h2>
<p>In the following example, a "VideoPlayer" Service is registered into the OSGi registry each time an active bundle containing a "Video-Path" manifest header is detected:</p>
<div class="codehilite"><pre><span class="kd">public</span> <span class="kd">class</span> <span class="nc">Activator</span> <span class="kd">extends</span> <span class="n">DependencyManagerActivator</span> <span class="o">{</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">init</span><span class="o">(</span><span class="n">BundleContext</span> <span class="n">ctx</span><span class="o">,</span> <span class="n">DependencyManager</span> <span class="n">dm</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
@@ -109,36 +113,8 @@ here. If you declare the original bundle
<span class="o">}</span>
<span class="o">}</span>
</pre></div>
-
-
-<h2 id="example-using-dm-lambda">Example using DM Lambda:<a class="headerlink" href="#example-using-dm-lambda" title="Permanent link">¶</a></h2>
-<div class="codehilite"><pre><span class="kd">public</span> <span class="kd">class</span> <span class="nc">Activator</span> <span class="kd">extends</span> <span class="n">DependencyManagerActivator</span> <span class="o">{</span>
- <span class="kd">public</span> <span class="kt">void</span> <span class="nf">init</span><span class="o">(</span><span class="n">BundleContext</span> <span class="n">ctx</span><span class="o">,</span> <span class="n">DependencyManager</span> <span class="n">dm</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
- <span class="n">bundleAdapter</span><span class="o">(</span><span class="n">adapt</span> <span class="o">-></span> <span class="n">adapt</span>
- <span class="o">.</span><span class="na">impl</span><span class="o">(</span><span class="n">VideoPlayerImpl</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
- <span class="o">.</span><span class="na">provides</span><span class="o">(</span><span class="n">VideoPlayer</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">foo</span> <span class="o">-></span> <span class="s">"bar"</span><span class="o">)</span>
- <span class="o">.</span><span class="na">mask</span><span class="o">(</span><span class="n">Bundle</span><span class="o">.</span><span class="na">ACTIVE</span><span class="o">)</span>
- <span class="o">.</span><span class="na">filter</span><span class="o">(</span><span class="s">"(Video-Path=*)"</span><span class="o">));</span>
- <span class="o">}</span>
-<span class="o">}</span>
-</pre></div>
-
-
-<h2 id="example-using-annotations">Example using annotations:<a class="headerlink" href="#example-using-annotations" title="Permanent link">¶</a></h2>
-<div class="codehilite"><pre><span class="nd">@BundleAdapterService</span><span class="o">(</span><span class="n">filter</span> <span class="o">=</span> <span class="s">"(Video-Path=*)"</span><span class="o">,</span> <span class="n">stateMask</span> <span class="o">=</span> <span class="n">Bundle</span><span class="o">.</span><span class="na">ACTIVE</span><span class="o">)</span>
-<span class="kd">public</span> <span class="kd">class</span> <span class="nc">VideoPlayerImpl</span> <span class="kd">implements</span> <span class="n">VideoPlayer</span> <span class="o">{</span>
- <span class="kd">volatile</span> <span class="n">Bundle</span> <span class="n">bundle</span><span class="o">;</span> <span class="c1">// Injected by reflection</span>
-
- <span class="kt">void</span> <span class="nf">play</span><span class="o">()</span> <span class="o">{</span>
- <span class="n">URL</span> <span class="n">mpegFile</span> <span class="o">=</span> <span class="n">bundle</span><span class="o">.</span><span class="na">getEntry</span><span class="o">(</span><span class="n">bundle</span><span class="o">.</span><span class="na">getHeaders</span><span class="o">().</span><span class="na">get</span><span class="o">(</span><span class="s">"Video-Path"</span><span class="o">));</span>
- <span class="c1">// play the video provided by the bundle ...</span>
- <span class="o">}</span>
-
- <span class="kt">void</span> <span class="nf">stop</span><span class="o">()</span> <span class="o">{}</span>
-<span class="o">}</span>
-</pre></div>
<div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
- Rev. 1842563 by pderop on Mon, 1 Oct 2018 20:50:17 +0000
+ Rev. 1843263 by pderop on Tue, 9 Oct 2018 13:32:32 +0000
</div>
<div class="trademarkFooter">
Apache Felix, Felix, Apache, the Apache feather logo, and the Apache Felix project