blob: 2c225097b567e3ee28fd163adcdf20082f2d5754 [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 (version 1.7.0_75) on Tue Jun 09 23:29:43 CEST 2015 -->
<title>ServiceTrackerCustomizer</title>
<meta name="date" content="2015-06-09">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ServiceTrackerCustomizer";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><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/tracker/ServiceTracker.html" title="class in org.apache.felix.dm.tracker"><span class="strong">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/felix/dm/tracker/ServiceTrackerCustomizer.html" target="_top">Frames</a></li>
<li><a href="ServiceTrackerCustomizer.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All 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.tracker</div>
<h2 title="Interface ServiceTrackerCustomizer" class="title">Interface ServiceTrackerCustomizer</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../org/apache/felix/dm/tracker/ServiceTracker.html" title="class in org.apache.felix.dm.tracker">ServiceTracker</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="strong">ServiceTrackerCustomizer</span></pre>
<div class="block">The <code>ServiceTrackerCustomizer</code> interface allows a
<code>ServiceTracker</code> to customize the service objects that are
tracked. A <code>ServiceTrackerCustomizer</code> is called when a service is
being added to a <code>ServiceTracker</code>. The
<code>ServiceTrackerCustomizer</code> can then return an object for the
tracked service. A <code>ServiceTrackerCustomizer</code> is also called when
a tracked service is modified or has been removed from a
<code>ServiceTracker</code>.
<p>
The methods in this interface may be called as the result of a
<code>ServiceEvent</code> being received by a <code>ServiceTracker</code>.
Since <code>ServiceEvent</code>s are synchronously delivered by the
Framework, it is highly recommended that implementations of these methods do
not register (<code>BundleContext.registerService</code>), modify (
<code>ServiceRegistration.setProperties</code>) or unregister (
<code>ServiceRegistration.unregister</code>) a service while being
synchronized on any object.
<p>
The <code>ServiceTracker</code> class is thread-safe. It does not call a
<code>ServiceTrackerCustomizer</code> while holding any locks.
<code>ServiceTrackerCustomizer</code> implementations must also be
thread-safe.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/felix/dm/tracker/ServiceTrackerCustomizer.html#addedService(org.osgi.framework.ServiceReference,%20java.lang.Object)">addedService</a></strong>(org.osgi.framework.ServiceReference&nbsp;reference,
java.lang.Object&nbsp;service)</code>
<div class="block">marrs: A service has been added to the ServiceTracker.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/felix/dm/tracker/ServiceTrackerCustomizer.html#addingService(org.osgi.framework.ServiceReference)">addingService</a></strong>(org.osgi.framework.ServiceReference&nbsp;reference)</code>
<div class="block">A service is being added to the <code>ServiceTracker</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/felix/dm/tracker/ServiceTrackerCustomizer.html#modifiedService(org.osgi.framework.ServiceReference,%20java.lang.Object)">modifiedService</a></strong>(org.osgi.framework.ServiceReference&nbsp;reference,
java.lang.Object&nbsp;service)</code>
<div class="block">A service tracked by the <code>ServiceTracker</code> has been modified.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/felix/dm/tracker/ServiceTrackerCustomizer.html#removedService(org.osgi.framework.ServiceReference,%20java.lang.Object)">removedService</a></strong>(org.osgi.framework.ServiceReference&nbsp;reference,
java.lang.Object&nbsp;service)</code>
<div class="block">A service tracked by the <code>ServiceTracker</code> has been removed.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/felix/dm/tracker/ServiceTrackerCustomizer.html#swappedService(org.osgi.framework.ServiceReference,%20java.lang.Object,%20org.osgi.framework.ServiceReference,%20java.lang.Object)">swappedService</a></strong>(org.osgi.framework.ServiceReference&nbsp;reference,
java.lang.Object&nbsp;service,
org.osgi.framework.ServiceReference&nbsp;newReference,
java.lang.Object&nbsp;newService)</code>
<div class="block">A service tracked by the <code>ServiceTracker</code> has an aspect service
added or removed for a tracked service.</div>
</td>
</tr>
</table>
</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="addingService(org.osgi.framework.ServiceReference)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addingService</h4>
<pre>java.lang.Object&nbsp;addingService(org.osgi.framework.ServiceReference&nbsp;reference)</pre>
<div class="block">A service is being added to the <code>ServiceTracker</code>.
<p>
This method is called before a service which matched the search
parameters of the <code>ServiceTracker</code> is added to the
<code>ServiceTracker</code>. This method should return the service object
to be tracked for the specified <code>ServiceReference</code>. The
returned service object is stored in the <code>ServiceTracker</code> and
is available from the <code>getService</code> and
<code>getServices</code> methods.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>reference</code> - The reference to the service being added to the
<code>ServiceTracker</code>.</dd>
<dt><span class="strong">Returns:</span></dt><dd>The service object to be tracked for the specified referenced
service or <code>null</code> if the specified referenced service
should not be tracked.</dd></dl>
</li>
</ul>
<a name="addedService(org.osgi.framework.ServiceReference, java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addedService</h4>
<pre>void&nbsp;addedService(org.osgi.framework.ServiceReference&nbsp;reference,
java.lang.Object&nbsp;service)</pre>
<div class="block">marrs: A service has been added to the ServiceTracker.</div>
</li>
</ul>
<a name="modifiedService(org.osgi.framework.ServiceReference, java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>modifiedService</h4>
<pre>void&nbsp;modifiedService(org.osgi.framework.ServiceReference&nbsp;reference,
java.lang.Object&nbsp;service)</pre>
<div class="block">A service tracked by the <code>ServiceTracker</code> has been modified.
<p>
This method is called when a service being tracked by the
<code>ServiceTracker</code> has had it properties modified.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>reference</code> - The reference to the service that has been modified.</dd><dd><code>service</code> - The service object for the specified referenced service.</dd></dl>
</li>
</ul>
<a name="swappedService(org.osgi.framework.ServiceReference, java.lang.Object, org.osgi.framework.ServiceReference, java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>swappedService</h4>
<pre>void&nbsp;swappedService(org.osgi.framework.ServiceReference&nbsp;reference,
java.lang.Object&nbsp;service,
org.osgi.framework.ServiceReference&nbsp;newReference,
java.lang.Object&nbsp;newService)</pre>
<div class="block">A service tracked by the <code>ServiceTracker</code> has an aspect service
added or removed for a tracked service.
<p>
This method is called when an aspect service has been either added or removed
for a tracked service. This method will only be called when there's a new
highest ranked service as result of adding or removal of the aspect service.
In this case the previously highest ranked service is 'swapped' for the new
highest ranked service ensuring the client always gets the highest ranked
aspect.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>reference</code> - The reference for the old highest ranked service.</dd><dd><code>service</code> - The service object for the old highest ranked service.</dd><dd><code>newReference</code> - The reference to the new highest ranked service.</dd><dd><code>newService</code> - The service object for the new highest ranked service.</dd></dl>
</li>
</ul>
<a name="removedService(org.osgi.framework.ServiceReference, java.lang.Object)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>removedService</h4>
<pre>void&nbsp;removedService(org.osgi.framework.ServiceReference&nbsp;reference,
java.lang.Object&nbsp;service)</pre>
<div class="block">A service tracked by the <code>ServiceTracker</code> has been removed.
<p>
This method is called after a service is no longer being tracked by the
<code>ServiceTracker</code>.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>reference</code> - The reference to the service that has been removed.</dd><dd><code>service</code> - The service object for the specified referenced service.</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><a href="#skip-navbar_bottom" title="Skip navigation links"></a><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/tracker/ServiceTracker.html" title="class in org.apache.felix.dm.tracker"><span class="strong">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/felix/dm/tracker/ServiceTrackerCustomizer.html" target="_top">Frames</a></li>
<li><a href="ServiceTrackerCustomizer.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All 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>