blob: e6c0115f9d7562bd547b2f06da1ff8a99fbd9c08 [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_191) on Sun Dec 23 12:06:06 CET 2018 -->
<title>ServiceDependency</title>
<meta name="date" content="2018-12-23">
<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="ServiceDependency";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":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/ResourceUtil.html" title="class in org.apache.felix.dm"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/felix/dm/ServiceDependency.html" target="_top">Frames</a></li>
<li><a href="ServiceDependency.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 ServiceDependency" class="title">Interface ServiceDependency</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/ComponentDependencyDeclaration.html" title="interface in org.apache.felix.dm">ComponentDependencyDeclaration</a>, <a href="../../../../org/apache/felix/dm/Dependency.html" title="interface in org.apache.felix.dm">Dependency</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">ServiceDependency</span>
extends <a href="../../../../org/apache/felix/dm/Dependency.html" title="interface in org.apache.felix.dm">Dependency</a>, <a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html" title="interface in org.apache.felix.dm">ComponentDependencyDeclaration</a></pre>
<div class="block">Service dependency that can track an OSGi service.
When defining dependency method callbacks; for "add", "change", "remove" callbacks, the following method signatures are supported:
<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)
(ServiceObjects 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)
(ServiceObjects old, ServiceObjects replace)
(Component comp, ServiceObjects old, ServiceObjects replace)
</code></pre></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.felix.dm.ComponentDependencyDeclaration">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;org.apache.felix.dm.<a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html" title="interface in org.apache.felix.dm">ComponentDependencyDeclaration</a></h3>
<code><a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html#STATE_AVAILABLE_OPTIONAL">STATE_AVAILABLE_OPTIONAL</a>, <a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html#STATE_AVAILABLE_REQUIRED">STATE_AVAILABLE_REQUIRED</a>, <a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html#STATE_NAMES">STATE_NAMES</a>, <a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html#STATE_OPTIONAL">STATE_OPTIONAL</a>, <a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html#STATE_REQUIRED">STATE_REQUIRED</a>, <a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html#STATE_UNAVAILABLE_OPTIONAL">STATE_UNAVAILABLE_OPTIONAL</a>, <a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html#STATE_UNAVAILABLE_REQUIRED">STATE_UNAVAILABLE_REQUIRED</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/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setAutoConfig-boolean-">setAutoConfig</a></span>(boolean&nbsp;autoConfig)</code>
<div class="block">Sets auto configuration for this service.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setAutoConfig-java.lang.String-">setAutoConfig</a></span>(java.lang.String&nbsp;instanceName)</code>
<div class="block">Sets auto configuration for this service.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setCallbacks-java.lang.Object-java.lang.String-java.lang.String-">setCallbacks</a></span>(java.lang.Object&nbsp;instance,
java.lang.String&nbsp;add,
java.lang.String&nbsp;remove)</code>
<div class="block">Sets the callbacks for this service.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setCallbacks-java.lang.Object-java.lang.String-java.lang.String-java.lang.String-">setCallbacks</a></span>(java.lang.Object&nbsp;instance,
java.lang.String&nbsp;add,
java.lang.String&nbsp;change,
java.lang.String&nbsp;remove)</code>
<div class="block">Sets the callbacks for this service.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setCallbacks-java.lang.Object-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">setCallbacks</a></span>(java.lang.Object&nbsp;instance,
java.lang.String&nbsp;added,
java.lang.String&nbsp;changed,
java.lang.String&nbsp;removed,
java.lang.String&nbsp;swapped)</code>
<div class="block">Sets the callbacks for this service.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setCallbacks-java.lang.String-java.lang.String-">setCallbacks</a></span>(java.lang.String&nbsp;add,
java.lang.String&nbsp;remove)</code>
<div class="block">Sets the callbacks for this service.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setCallbacks-java.lang.String-java.lang.String-java.lang.String-">setCallbacks</a></span>(java.lang.String&nbsp;add,
java.lang.String&nbsp;change,
java.lang.String&nbsp;remove)</code>
<div class="block">Sets the callbacks for this service.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setCallbacks-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">setCallbacks</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 for this service.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setDebug-java.lang.String-">setDebug</a></span>(java.lang.String&nbsp;debugKey)</code>
<div class="block">Enabled debug logging for this dependency instance.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setDefaultImplementation-java.lang.Object-">setDefaultImplementation</a></span>(java.lang.Object&nbsp;implementation)</code>
<div class="block">Sets the default implementation for an <code>optional</code> service dependency.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setDereference-boolean-">setDereference</a></span>(boolean&nbsp;dereferenceServiceInternally)</code>
<div class="block">Configures whether or not this dependency should internally obtain the service object for all tracked service references.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setPropagate-boolean-">setPropagate</a></span>(boolean&nbsp;propagate)</code>
<div class="block">Sets propagation of the service dependency properties to the provided service properties.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setPropagate-java.lang.Object-java.lang.String-">setPropagate</a></span>(java.lang.Object&nbsp;instance,
java.lang.String&nbsp;method)</code>
<div class="block">Sets an Object instance and a callback method used to propagate some properties to the provided service properties.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setRequired-boolean-">setRequired</a></span>(boolean&nbsp;required)</code>
<div class="block">Sets the required flag which determines if this service is required or not.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setService-java.lang.Class-">setService</a></span>(java.lang.Class&lt;?&gt;&nbsp;serviceName)</code>
<div class="block">Sets the name of the service that should be tracked.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setService-java.lang.Class-ServiceReference-">setService</a></span>(java.lang.Class&lt;?&gt;&nbsp;serviceName,
ServiceReference&nbsp;serviceReference)</code>
<div class="block">Sets the name of the service that should be tracked.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setService-java.lang.Class-java.lang.String-">setService</a></span>(java.lang.Class&lt;?&gt;&nbsp;serviceName,
java.lang.String&nbsp;serviceFilter)</code>
<div class="block">Sets the name of the service that should be tracked.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setService-java.lang.String-">setService</a></span>(java.lang.String&nbsp;serviceFilter)</code>
<div class="block">Sets the filter for the services that should be tracked.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.felix.dm.Dependency">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.felix.dm.<a href="../../../../org/apache/felix/dm/Dependency.html" title="interface in org.apache.felix.dm">Dependency</a></h3>
<code><a href="../../../../org/apache/felix/dm/Dependency.html#getAutoConfigName--">getAutoConfigName</a>, <a href="../../../../org/apache/felix/dm/Dependency.html#getProperties--">getProperties</a>, <a href="../../../../org/apache/felix/dm/Dependency.html#isAutoConfig--">isAutoConfig</a>, <a href="../../../../org/apache/felix/dm/Dependency.html#isAvailable--">isAvailable</a>, <a href="../../../../org/apache/felix/dm/Dependency.html#isPropagated--">isPropagated</a>, <a href="../../../../org/apache/felix/dm/Dependency.html#isRequired--">isRequired</a>, <a href="../../../../org/apache/felix/dm/Dependency.html#overrideServiceProperties--">overrideServiceProperties</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.felix.dm.ComponentDependencyDeclaration">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.felix.dm.<a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html" title="interface in org.apache.felix.dm">ComponentDependencyDeclaration</a></h3>
<code><a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html#getFilter--">getFilter</a>, <a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html#getName--">getName</a>, <a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html#getSimpleName--">getSimpleName</a>, <a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html#getState--">getState</a>, <a href="../../../../org/apache/felix/dm/ComponentDependencyDeclaration.html#getType--">getType</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="setCallbacks-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCallbacks</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setCallbacks(java.lang.String&nbsp;add,
java.lang.String&nbsp;remove)</pre>
<div class="block">Sets the callbacks for this service. These callbacks can be used as hooks whenever a
dependency is added or removed. When you specify callbacks, the auto configuration
feature is automatically turned off, because we're assuming you don't need it in this
case.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>add</code> - the method to call when a service was added</dd>
<dd><code>remove</code> - the method to call when a service was removed</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setCallbacks-java.lang.String-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCallbacks</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setCallbacks(java.lang.String&nbsp;add,
java.lang.String&nbsp;change,
java.lang.String&nbsp;remove)</pre>
<div class="block">Sets the callbacks for this service. These callbacks can be used as hooks whenever a
dependency is added, changed or removed. When you specify callbacks, the auto
configuration feature is automatically turned off, because we're assuming you don't
need it in this case.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>add</code> - the method to call when a service was added</dd>
<dd><code>change</code> - the method to call when a service was changed</dd>
<dd><code>remove</code> - the method to call when a service was removed</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setCallbacks-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCallbacks</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setCallbacks(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 for this service. These callbacks can be used as hooks whenever a
dependency is added, changed or removed. When you specify callbacks, the auto
configuration feature is automatically turned off, because we're assuming you don't
need it in this case.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>add</code> - the method to call when a service was added</dd>
<dd><code>change</code> - the method to call when a service was changed</dd>
<dd><code>remove</code> - the method to call when a service was removed</dd>
<dd><code>swap</code> - the method to call when the service was swapped due to addition or
removal of an aspect</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setCallbacks-java.lang.Object-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCallbacks</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setCallbacks(java.lang.Object&nbsp;instance,
java.lang.String&nbsp;add,
java.lang.String&nbsp;remove)</pre>
<div class="block">Sets the callbacks for this service. These callbacks can be used as hooks whenever a
dependency is added or removed. They are called on the instance you provide. When you
specify callbacks, the auto configuration feature is automatically turned off, because
we're assuming you don't need it in this case.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>instance</code> - the instance to call the callbacks on</dd>
<dd><code>add</code> - the method to call when a service was added</dd>
<dd><code>remove</code> - the method to call when a service was removed</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setCallbacks-java.lang.Object-java.lang.String-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCallbacks</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setCallbacks(java.lang.Object&nbsp;instance,
java.lang.String&nbsp;add,
java.lang.String&nbsp;change,
java.lang.String&nbsp;remove)</pre>
<div class="block">Sets the callbacks for this service. These callbacks can be used as hooks whenever a
dependency is added, changed or removed. They are called on the instance you provide. When you
specify callbacks, the auto configuration feature is automatically turned off, because
we're assuming you don't need it in this case.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>instance</code> - the instance to call the callbacks on</dd>
<dd><code>add</code> - the method to call when a service was added</dd>
<dd><code>change</code> - the method to call when a service was changed</dd>
<dd><code>remove</code> - the method to call when a service was removed</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setCallbacks-java.lang.Object-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCallbacks</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setCallbacks(java.lang.Object&nbsp;instance,
java.lang.String&nbsp;added,
java.lang.String&nbsp;changed,
java.lang.String&nbsp;removed,
java.lang.String&nbsp;swapped)</pre>
<div class="block">Sets the callbacks for this service. These callbacks can be used as hooks whenever a
dependency is added, changed or removed. When you specify callbacks, the auto
configuration feature is automatically turned off, because we're assuming you don't
need it in this case.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>instance</code> - the instance to call the callbacks on</dd>
<dd><code>added</code> - the method to call when a service was added</dd>
<dd><code>changed</code> - the method to call when a service was changed</dd>
<dd><code>removed</code> - the method to call when a service was removed</dd>
<dd><code>swapped</code> - the method to call when the service was swapped due to addition or
removal of an aspect</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setRequired-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setRequired</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setRequired(boolean&nbsp;required)</pre>
<div class="block">Sets the required flag which determines if this service is required or not.
A ServiceDependency is false by default.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>required</code> - the required flag</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setAutoConfig-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setAutoConfig</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setAutoConfig(boolean&nbsp;autoConfig)</pre>
<div class="block">Sets auto configuration for this service. Auto configuration allows the
dependency to fill in the attribute in the service implementation that
has the same type and instance name. Dependency services will be injected
in the following kind of fields:<p>
<ul>
<li> a field having the same type as the dependency. If the field may be accessed by anythread, then
the field should be declared volatile, in order to ensure visibility when the field is auto injected concurrently.
<li> a field which is assignable to an <code>Iterable&#60;T&#62;</code> where T must match the dependency type.
In this case, an Iterable will be injected by DependencyManager before the start callback is called.
The Iterable field may then be traversed to inspect the currently available dependency services. The Iterable
can possibly be set to a final value so you can choose the Iterable implementation of your choice
(for example, a CopyOnWrite ArrayList, or a ConcurrentLinkedQueue).
<li> a <code>Map&#60;K,V&#62;</code> where K must match the dependency type and V must exactly be equal to <code>Dictionary</code>.
In this case, a ConcurrentHashMap will be injected by DependencyManager before the start callback is called.
The Map may then be consulted to lookup current available dependency services, including the dependency service
properties (the map key holds the dependency service, and the map value holds the dependency service properties).
The Map field may be set to a final value so you can choose a Map of your choice (Typically a ConcurrentHashMap).
A ConcurrentHashMap is "weakly consistent", meaning that when traversing
the elements, you may or may not see any concurrent updates made on the map. So, take care to traverse
the map using an iterator on the map entry set, which allows to atomically lookup pairs of Dependency service/Service properties.
</ul>
<p> Here are some example using an Iterable:
<blockquote>
<pre>
public class SpellChecker {
// can be traversed to inspect currently available dependencies
final Iterable&#60;DictionaryService&#62; dictionaries = new ConcurrentLinkedQueue<>();
Or
// will be injected by DM automatically and can be traversed any time to inspect all currently available dependencies.
volatile Iterable&#60;DictionaryService&#62; dictionaries = null;
}
</pre>
</blockquote>
Here are some example using a Map:
<blockquote>
<pre>
public class SpellChecker {
// can be traversed to inspect currently available dependencies
final Map&#60;DictionaryService, Dictionary&#62; dictionaries = new ConcurrentLinkedQueue<>();
or
// will be injected by DM automatically and can be traversed to inspect currently available dependencies
volatile Map&#60;DictionaryService, Dictionary&#62; dictionaries = null;
void iterateOnAvailableServices() {
for (Map.Entry<MyService, Dictionary> entry : this.services.entrySet()) {
MyService currentService = entry.getKey();
Dictionary currentServiceProperties = entry.getValue();
// ...
}
}
}
</pre>
</blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>autoConfig</code> - the name of attribute to auto configure</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setAutoConfig-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setAutoConfig</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setAutoConfig(java.lang.String&nbsp;instanceName)</pre>
<div class="block">Sets auto configuration for this service. Auto configuration allows the
dependency to fill in the attribute in the service implementation that
has the same type and instance name.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>instanceName</code> - the name of attribute to auto config</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/felix/dm/ServiceDependency.html#setAutoConfig-boolean-"><code>setAutoConfig(boolean)</code></a></dd>
</dl>
</li>
</ul>
<a name="setService-java.lang.Class-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setService</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setService(java.lang.Class&lt;?&gt;&nbsp;serviceName)</pre>
<div class="block">Sets the name of the service that should be tracked.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceName</code> - the name of the service</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setService-java.lang.Class-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setService</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setService(java.lang.Class&lt;?&gt;&nbsp;serviceName,
java.lang.String&nbsp;serviceFilter)</pre>
<div class="block">Sets the name of the service that should be tracked. You can either specify
only the name, or the name and a filter. In the latter case, the filter is used
to track the service and should only return services of the type that was specified
in the name. To make sure of this, the filter is actually extended internally to
filter on the correct name.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceName</code> - the name of the service</dd>
<dd><code>serviceFilter</code> - the filter condition</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setService-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setService</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setService(java.lang.String&nbsp;serviceFilter)</pre>
<div class="block">Sets the filter for the services that should be tracked. Any service object
matching the filter will be returned, without any additional filter on the
class.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceFilter</code> - the filter condition</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setService-java.lang.Class-ServiceReference-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setService</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setService(java.lang.Class&lt;?&gt;&nbsp;serviceName,
ServiceReference&nbsp;serviceReference)</pre>
<div class="block">Sets the name of the service that should be tracked. You can either specify
only the name, or the name and a reference. In the latter case, the service reference
is used to track the service and should only return services of the type that was
specified in the name.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceName</code> - the name of the service</dd>
<dd><code>serviceReference</code> - the service reference to track</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setDefaultImplementation-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDefaultImplementation</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setDefaultImplementation(java.lang.Object&nbsp;implementation)</pre>
<div class="block">Sets the default implementation for an <code>optional</code> service dependency. You can use this to supply
your own implementation that will be used instead of a Null Object when the dependency is
not available. This is also convenient if the service dependency is not an interface
(which would cause the Null Object creation to fail) but a class.
Only use this attribute on an optional service dependency injected on a class field.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>implementation</code> - the instance to use or the class to instantiate if you want to lazily
instantiate this implementation</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency</dd>
</dl>
</li>
</ul>
<a name="setPropagate-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setPropagate</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setPropagate(boolean&nbsp;propagate)</pre>
<div class="block">Sets propagation of the service dependency properties to the provided service properties. Any additional
service properties specified directly are merged with these. The provided service properties take precedence over the
propagated service dependency properties. It means a service dependency property won't override a component service
property having the same name.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>propagate</code> - true if the dependency service properties should be propagated to the component service properties.</dd>
</dl>
</li>
</ul>
<a name="setPropagate-java.lang.Object-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setPropagate</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setPropagate(java.lang.Object&nbsp;instance,
java.lang.String&nbsp;method)</pre>
<div class="block">Sets an Object instance and a callback method used to propagate some properties to the provided service properties.
The method will be invoked on the specified object instance and must have one of the following signatures:<p>
<ul><li>Dictionary callback(ServiceReference, Object service)
<li>Dictionary callback(ServiceReference)
</ul></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>instance</code> - the Object instance which is used to retrieve propagated service properties</dd>
<dd><code>method</code> - the method to invoke for retrieving the properties to be propagated to the service properties.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency.</dd>
</dl>
</li>
</ul>
<a name="setDebug-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDebug</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setDebug(java.lang.String&nbsp;debugKey)</pre>
<div class="block">Enabled debug logging for this dependency instance. The logging is prefixed with the given identifier.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>debugKey</code> - a prefix log identifier</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this service dependency.</dd>
</dl>
</li>
</ul>
<a name="setDereference-boolean-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setDereference</h4>
<pre><a href="../../../../org/apache/felix/dm/ServiceDependency.html" title="interface in org.apache.felix.dm">ServiceDependency</a>&nbsp;setDereference(boolean&nbsp;dereferenceServiceInternally)</pre>
<div class="block">Configures whether or not this dependency should internally obtain the service object for all tracked service references.
By default, DM internally dereferences all discovered service references (using
<code>BundleContext.getService(ServiceReference ref)</code> methods.
However, sometimes, your callback only needs the ServiceReference, and sometimes you don't want to dereference the service.
So, in this case you can use the <code>setDereference(false)</code> method in order to tell to DM
that it should never internally dereference the service dependency internally.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>false if the service must never be dereferenced by dependency manager (internally).</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/ResourceUtil.html" title="class in org.apache.felix.dm"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/felix/dm/ServiceDependency.html" target="_top">Frames</a></li>
<li><a href="ServiceDependency.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>