blob: 7306df0c6b0d1ce4a2cabfb7b239b6822a3396ce [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon Oct 22 18:34:41 CEST 2018 -->
<title>AdapterComponent</title>
<meta name="date" content="2018-10-22">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="AdapterComponent";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/felix/dm/AbstractComponent.html" title="interface in org.apache.felix.dm"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/felix/dm/AspectComponent.html" title="interface in org.apache.felix.dm"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/felix/dm/AdapterComponent.html" target="_top">Frames</a></li>
<li><a href="AdapterComponent.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.felix.dm</div>
<h2 title="Interface AdapterComponent" class="title">Interface AdapterComponent</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="../../../../org/apache/felix/dm/AbstractComponent.html" title="interface in org.apache.felix.dm">AbstractComponent</a>, <a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</a>&lt;<a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a>&gt;</dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">AdapterComponent</span>
extends <a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</a>&lt;<a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a>&gt;</pre>
<div class="block">Interface used to configure the various parameters needed when defining
a Dependency Manager adapter component.
Adapters, like <a href="../../../../org/apache/felix/dm/AspectComponent.html" title="interface in org.apache.felix.dm"><code>AspectComponent</code></a>, are used to "extend"
existing services, and can publish different services based on the existing one.
An example would be implementing a management interface for an existing service, etc ....
<p>When you create an adapter component, it will be applied
to any service that matches the implemented interface and filter. The adapter will be registered
with the specified interface and existing properties from the original service plus any extra
properties you supply here. If you declare the original service as a member it will be injected.
<h3>Usage Examples</h3>
Here is a sample showing a HelloServlet adapter component which creates a servlet each time a HelloService is registered in the
osgi service registry with the "foo=bar" service property.
<blockquote><pre>
<code>
public class Activator extends DependencyActivatorBase {
&amp;Override
public void init(BundleContext context, DependencyManager dm) throws Exception {
Component adapterComponent = createAdapterComponent()
.setAdaptee(HelloService.class, "(foo=bar)")
.setInterface(HttpServlet.class.getName(), null)
.setImplementation(HelloServlet.class);
dm.add(adapterComponent);
}
}
public interface HelloService {
String sayHello();
}
public class HelloServlet extends HttpServlet {
volatile HelloService adatpee; // injected
void doGet(HttpServletRequest req, HttpServletResponse resp) {
...
resp.getWriter().println(adaptee.sayHello());
}
}
</code> </pre></blockquote>
<p> When you use callbacks to get injected with the adaptee service, the "add", "change", "remove" callbacks
support the following method signatures:
<pre><code>
(Component comp, ServiceReference ref, Service service)
(Component comp, ServiceReference ref, Object service)
(Component comp, ServiceReference ref)
(Component comp, Service service)
(Component comp, Object service)
(Component comp)
(Component comp, Map properties, Service service)
(ServiceReference ref, Service service)
(ServiceReference ref, Object service)
(ServiceReference ref)
(Service service)
(Service service, Map propeerties)
(Map properties, Service, service)
(Service service, Dictionary properties)
(Dictionary properties, Service service)
(Object service)
</code></pre>
<p> For "swap" callbacks, the following method signatures are supported:
<pre><code>
(Service old, Service replace)
(Object old, Object replace)
(ServiceReference old, Service old, ServiceReference replace, Service replace)
(ServiceReference old, Object old, ServiceReference replace, Object replace)
(Component comp, Service old, Service replace)
(Component comp, Object old, Object replace)
(Component comp, ServiceReference old, Service old, ServiceReference replace, Service replace)
(Component comp, ServiceReference old, Object old, ServiceReference replace, Object replace)
(ServiceReference old, ServiceReference replace)
(Component comp, ServiceReference old, ServiceReference replace)
</code></pre></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/felix/dm/DependencyManager.html#createAdapterComponent--"><code>DependencyManager.createAdapterComponent()</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.felix.dm.Component">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.felix.dm.<a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</a></h3>
<code><a href="../../../../org/apache/felix/dm/Component.ServiceScope.html" title="enum in org.apache.felix.dm">Component.ServiceScope</a></code></li>
</ul>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/AdapterComponent.html#setAdaptee-java.lang.Class-java.lang.String-">setAdaptee</a></span>(java.lang.Class&lt;?&gt;&nbsp;service,
java.lang.String&nbsp;filter)</code>
<div class="block">Sets the service interface to apply the adapter to</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/AdapterComponent.html#setAdapteeCallbackInstance-java.lang.Object-">setAdapteeCallbackInstance</a></span>(java.lang.Object&nbsp;callbackInstance)</code>
<div class="block">Sets the instance to invoke the callbacks on (null by default, meaning the callbacks have to be invoked on the adapter itself)</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/AdapterComponent.html#setAdapteeCallbacks-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">setAdapteeCallbacks</a></span>(java.lang.String&nbsp;add,
java.lang.String&nbsp;change,
java.lang.String&nbsp;remove,
java.lang.String&nbsp;swap)</code>
<div class="block">Sets the callbacks to invoke when injecting the adaptee service into the adapter component.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/AdapterComponent.html#setAdapteeField-java.lang.String-">setAdapteeField</a></span>(java.lang.String&nbsp;autoConfig)</code>
<div class="block">Sets the name of the member to inject the service into</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/AdapterComponent.html#setPropagate-boolean-">setPropagate</a></span>(boolean&nbsp;propagate)</code>
<div class="block">Sets if the adaptee service properties should be propagated to the adapter service consumer (true by default)</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.felix.dm.Component">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.felix.dm.<a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</a></h3>
<code><a href="../../../../org/apache/felix/dm/Component.html#add-org.apache.felix.dm.ComponentStateListener-">add</a>, <a href="../../../../org/apache/felix/dm/Component.html#add-org.apache.felix.dm.Dependency...-">add</a>, <a href="../../../../org/apache/felix/dm/Component.html#getServiceRegistration--">getServiceRegistration</a>, <a href="../../../../org/apache/felix/dm/Component.html#remove-org.apache.felix.dm.ComponentStateListener-">remove</a>, <a href="../../../../org/apache/felix/dm/Component.html#remove-org.apache.felix.dm.Dependency-">remove</a>, <a href="../../../../org/apache/felix/dm/Component.html#setAutoConfig-java.lang.Class-boolean-">setAutoConfig</a>, <a href="../../../../org/apache/felix/dm/Component.html#setAutoConfig-java.lang.Class-java.lang.String-">setAutoConfig</a>, <a href="../../../../org/apache/felix/dm/Component.html#setCallbacks-java.lang.Object-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">setCallbacks</a>, <a href="../../../../org/apache/felix/dm/Component.html#setCallbacks-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">setCallbacks</a>, <a href="../../../../org/apache/felix/dm/Component.html#setComposition-java.lang.Object-java.lang.String-">setComposition</a>, <a href="../../../../org/apache/felix/dm/Component.html#setComposition-java.lang.String-">setComposition</a>, <a href="../../../../org/apache/felix/dm/Component.html#setDebug-java.lang.String-">setDebug</a>, <a href="../../../../org/apache/felix/dm/Component.html#setFactory-java.lang.Object-java.lang.String-">setFactory</a>, <a href="../../../../org/apache/felix/dm/Component.html#setFactory-java.lang.String-">setFactory</a>, <a href="../../../../org/apache/felix/dm/Component.html#setImplementation-java.lang.Object-">setImplementation</a>, <a href="../../../../org/apache/felix/dm/Component.html#setInterface-java.lang.Class:A-java.util.Dictionary-">setInterface</a>, <a href="../../../../org/apache/felix/dm/Component.html#setInterface-java.lang.Class-java.util.Dictionary-">setInterface</a>, <a href="../../../../org/apache/felix/dm/Component.html#setInterface-java.lang.String:A-java.util.Dictionary-">setInterface</a>, <a href="../../../../org/apache/felix/dm/Component.html#setInterface-java.lang.String-java.util.Dictionary-">setInterface</a>, <a href="../../../../org/apache/felix/dm/Component.html#setScope-org.apache.felix.dm.Component.ServiceScope-">setScope</a>, <a href="../../../../org/apache/felix/dm/Component.html#setServiceProperties-java.util.Dictionary-">setServiceProperties</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.felix.dm.AbstractComponent">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.felix.dm.<a href="../../../../org/apache/felix/dm/AbstractComponent.html" title="interface in org.apache.felix.dm">AbstractComponent</a></h3>
<code><a href="../../../../org/apache/felix/dm/AbstractComponent.html#getComponentDeclaration--">getComponentDeclaration</a>, <a href="../../../../org/apache/felix/dm/AbstractComponent.html#getDependencyManager--">getDependencyManager</a>, <a href="../../../../org/apache/felix/dm/AbstractComponent.html#getInstance--">getInstance</a>, <a href="../../../../org/apache/felix/dm/AbstractComponent.html#getInstances--">getInstances</a>, <a href="../../../../org/apache/felix/dm/AbstractComponent.html#getServiceProperties--">getServiceProperties</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="setAdaptee-java.lang.Class-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setAdaptee</h4>
<pre><a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a>&nbsp;setAdaptee(java.lang.Class&lt;?&gt;&nbsp;service,
java.lang.String&nbsp;filter)</pre>
<div class="block">Sets the service interface to apply the adapter to</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>service</code> - the service interface to apply the adapter to</dd>
<dd><code>filter</code> - the filter condition to use with the service interface</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this adapter parameter instance</dd>
</dl>
</li>
</ul>
<a name="setAdapteeField-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setAdapteeField</h4>
<pre><a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a>&nbsp;setAdapteeField(java.lang.String&nbsp;autoConfig)</pre>
<div class="block">Sets the name of the member to inject the service into</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>autoConfig</code> - the name of the member to inject the service into</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this adapter parameter instance</dd>
</dl>
</li>
</ul>
<a name="setAdapteeCallbacks-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setAdapteeCallbacks</h4>
<pre><a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a>&nbsp;setAdapteeCallbacks(java.lang.String&nbsp;add,
java.lang.String&nbsp;change,
java.lang.String&nbsp;remove,
java.lang.String&nbsp;swap)</pre>
<div class="block">Sets the callbacks to invoke when injecting the adaptee service into the adapter component.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>add</code> - name of the callback method to invoke on add</dd>
<dd><code>change</code> - name of the callback method to invoke on change</dd>
<dd><code>remove</code> - name of the callback method to invoke on remove</dd>
<dd><code>swap</code> - name of the callback method to invoke on swap</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this adapter parameter instance</dd>
</dl>
</li>
</ul>
<a name="setAdapteeCallbackInstance-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setAdapteeCallbackInstance</h4>
<pre><a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a>&nbsp;setAdapteeCallbackInstance(java.lang.Object&nbsp;callbackInstance)</pre>
<div class="block">Sets the instance to invoke the callbacks on (null by default, meaning the callbacks have to be invoked on the adapter itself)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>callbackInstance</code> - the instance to invoke the callbacks on (null by default, meaning the callbacks have to be invoked on the adapter itself)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this adapter parameter instance</dd>
</dl>
</li>
</ul>
<a name="setPropagate-boolean-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setPropagate</h4>
<pre><a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a>&nbsp;setPropagate(boolean&nbsp;propagate)</pre>
<div class="block">Sets if the adaptee service properties should be propagated to the adapter service consumer (true by default)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>propagate</code> - true if the adaptee service properties should be propagated to the adapter service consumers.
The provided adapter service properties take precedence over the propagated adaptee service properties.
It means an adaptee service property won't override an adapter service property having the same name.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this adapter parameter instance</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/felix/dm/AbstractComponent.html" title="interface in org.apache.felix.dm"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/felix/dm/AspectComponent.html" title="interface in org.apache.felix.dm"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/felix/dm/AdapterComponent.html" target="_top">Frames</a></li>
<li><a href="AdapterComponent.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>