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">&para;</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">&para;</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">&para;</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">-&gt;</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">-&gt;</span> <span class="s">&quot;bar&quot;</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">&quot;(Video-Path=*)&quot;</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">&para;</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">&quot;(Video-Path=*)&quot;</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">&quot;Video-Path&quot;</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