<!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>
