blob: 777131d0fd068836d589f6fd2d5a930cc6a224a1 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_172) on Mon Oct 22 18:34:41 CEST 2018 -->
<title>Component</title>
<meta name="date" content="2018-10-22">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Component";
}
}
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,"i18":6,"i19":6,"i20":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/BundleDependency.html" title="interface in org.apache.felix.dm"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/felix/dm/Component.ServiceScope.html" title="enum in org.apache.felix.dm"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/felix/dm/Component.html" target="_top">Frames</a></li>
<li><a href="Component.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><a href="#nested.class.summary">Nested</a>&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 Component" class="title">Interface Component&lt;T extends Component&lt;T&gt;&gt;</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="../../../../org/apache/felix/dm/AbstractComponent.html" title="interface in org.apache.felix.dm">AbstractComponent</a></dd>
</dl>
<dl>
<dt>All Known Subinterfaces:</dt>
<dd><a href="../../../../org/apache/felix/dm/AdapterComponent.html" title="interface in org.apache.felix.dm">AdapterComponent</a>, <a href="../../../../org/apache/felix/dm/AspectComponent.html" title="interface in org.apache.felix.dm">AspectComponent</a>, <a href="../../../../org/apache/felix/dm/BundleComponent.html" title="interface in org.apache.felix.dm">BundleComponent</a>, <a href="../../../../org/apache/felix/dm/context/ComponentContext.html" title="interface in org.apache.felix.dm.context">ComponentContext</a>&lt;T&gt;, <a href="../../../../org/apache/felix/dm/FactoryComponent.html" title="interface in org.apache.felix.dm">FactoryComponent</a>, <a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">Component&lt;T extends Component&lt;T&gt;&gt;</span>
extends <a href="../../../../org/apache/felix/dm/AbstractComponent.html" title="interface in org.apache.felix.dm">AbstractComponent</a></pre>
<div class="block">Component interface. Components are the main building blocks for OSGi applications.
They can publish themselves as a service, and they can have dependencies. These
dependencies will influence their life cycle as component will only be activated
when all required dependencies are available.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Interface and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.ServiceScope.html" title="enum in org.apache.felix.dm">Component.ServiceScope</a></span></code>
<div class="block">Component service scopes</div>
</td>
</tr>
</table>
</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/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#add-org.apache.felix.dm.ComponentStateListener-">add</a></span>(<a href="../../../../org/apache/felix/dm/ComponentStateListener.html" title="interface in org.apache.felix.dm">ComponentStateListener</a>&nbsp;listener)</code>
<div class="block">Adds a component state listener to this component.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#add-org.apache.felix.dm.Dependency...-">add</a></span>(<a href="../../../../org/apache/felix/dm/Dependency.html" title="interface in org.apache.felix.dm">Dependency</a>...&nbsp;dependencies)</code>
<div class="block">Adds dependency(ies) to this component, atomically.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>ServiceRegistration</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#getServiceRegistration--">getServiceRegistration</a></span>()</code>
<div class="block">Returns the service registration for this component.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#remove-org.apache.felix.dm.ComponentStateListener-">remove</a></span>(<a href="../../../../org/apache/felix/dm/ComponentStateListener.html" title="interface in org.apache.felix.dm">ComponentStateListener</a>&nbsp;listener)</code>
<div class="block">Removes a component state listener from this component.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#remove-org.apache.felix.dm.Dependency-">remove</a></span>(<a href="../../../../org/apache/felix/dm/Dependency.html" title="interface in org.apache.felix.dm">Dependency</a>&nbsp;d)</code>
<div class="block">Removes a dependency from the component.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setAutoConfig-java.lang.Class-boolean-">setAutoConfig</a></span>(java.lang.Class&lt;?&gt;&nbsp;clazz,
boolean&nbsp;autoConfig)</code>
<div class="block">Configures auto configuration of injected classes in the component instance.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setAutoConfig-java.lang.Class-java.lang.String-">setAutoConfig</a></span>(java.lang.Class&lt;?&gt;&nbsp;clazz,
java.lang.String&nbsp;instanceName)</code>
<div class="block">Configures auto configuration of injected classes in the component instance.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setCallbacks-java.lang.Object-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">setCallbacks</a></span>(java.lang.Object&nbsp;instance,
java.lang.String&nbsp;init,
java.lang.String&nbsp;start,
java.lang.String&nbsp;stop,
java.lang.String&nbsp;destroy)</code>
<div class="block">Sets the names of the methods used as callbacks.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setCallbacks-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">setCallbacks</a></span>(java.lang.String&nbsp;init,
java.lang.String&nbsp;start,
java.lang.String&nbsp;stop,
java.lang.String&nbsp;destroy)</code>
<div class="block">Sets the names of the methods used as callbacks.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setComposition-java.lang.Object-java.lang.String-">setComposition</a></span>(java.lang.Object&nbsp;instance,
java.lang.String&nbsp;getMethod)</code>
<div class="block">Sets the instance and method to invoke to get back all instances that
are part of a composition and need dependencies injected.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setComposition-java.lang.String-">setComposition</a></span>(java.lang.String&nbsp;getMethod)</code>
<div class="block">Sets the method to invoke on the service implementation to get back all
instances that are part of a composition and need dependencies injected.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setDebug-java.lang.String-">setDebug</a></span>(java.lang.String&nbsp;label)</code>
<div class="block">Activate debug for this component.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setFactory-java.lang.Object-java.lang.String-">setFactory</a></span>(java.lang.Object&nbsp;factory,
java.lang.String&nbsp;createMethod)</code>
<div class="block">Sets the factory to use to create the implementation.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setFactory-java.lang.String-">setFactory</a></span>(java.lang.String&nbsp;createMethod)</code>
<div class="block">Sets the factory to use to create the implementation.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setImplementation-java.lang.Object-">setImplementation</a></span>(java.lang.Object&nbsp;implementation)</code>
<div class="block">Sets the implementation for this component.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setInterface-java.lang.Class:A-java.util.Dictionary-">setInterface</a></span>(java.lang.Class&lt;?&gt;[]&nbsp;serviceNames,
java.util.Dictionary&lt;?,?&gt;&nbsp;properties)</code>
<div class="block">Sets the public interfaces under which this component should be registered
in the OSGi service registry.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setInterface-java.lang.Class-java.util.Dictionary-">setInterface</a></span>(java.lang.Class&lt;?&gt;&nbsp;serviceName,
java.util.Dictionary&lt;?,?&gt;&nbsp;properties)</code>
<div class="block">Sets the public interface under which this component should be registered
in the OSGi service registry.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setInterface-java.lang.String:A-java.util.Dictionary-">setInterface</a></span>(java.lang.String[]&nbsp;serviceNames,
java.util.Dictionary&lt;?,?&gt;&nbsp;properties)</code>
<div class="block">Sets the public interfaces under which this component should be registered
in the OSGi service registry.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setInterface-java.lang.String-java.util.Dictionary-">setInterface</a></span>(java.lang.String&nbsp;serviceName,
java.util.Dictionary&lt;?,?&gt;&nbsp;properties)</code>
<div class="block">Sets the public interface under which this component should be registered
in the OSGi service registry.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setScope-org.apache.felix.dm.Component.ServiceScope-">setScope</a></span>(<a href="../../../../org/apache/felix/dm/Component.ServiceScope.html" title="enum in org.apache.felix.dm">Component.ServiceScope</a>&nbsp;scope)</code>
<div class="block">Sets the component scope.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#setServiceProperties-java.util.Dictionary-">setServiceProperties</a></span>(java.util.Dictionary&lt;?,?&gt;&nbsp;serviceProperties)</code>
<div class="block">Sets the service properties associated with the component.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.felix.dm.AbstractComponent">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.felix.dm.<a href="../../../../org/apache/felix/dm/AbstractComponent.html" title="interface in org.apache.felix.dm">AbstractComponent</a></h3>
<code><a href="../../../../org/apache/felix/dm/AbstractComponent.html#getComponentDeclaration--">getComponentDeclaration</a>, <a href="../../../../org/apache/felix/dm/AbstractComponent.html#getDependencyManager--">getDependencyManager</a>, <a href="../../../../org/apache/felix/dm/AbstractComponent.html#getInstance--">getInstance</a>, <a href="../../../../org/apache/felix/dm/AbstractComponent.html#getInstances--">getInstances</a>, <a href="../../../../org/apache/felix/dm/AbstractComponent.html#getServiceProperties--">getServiceProperties</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="setScope-org.apache.felix.dm.Component.ServiceScope-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setScope</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setScope(<a href="../../../../org/apache/felix/dm/Component.ServiceScope.html" title="enum in org.apache.felix.dm">Component.ServiceScope</a>&nbsp;scope)</pre>
<div class="block">Sets the component scope.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>scope</code> - the component scope (default=SINGLETON)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
</dl>
</li>
</ul>
<a name="setImplementation-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setImplementation</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setImplementation(java.lang.Object&nbsp;implementation)</pre>
<div class="block">Sets the implementation for this component. You can actually specify
an instance you have instantiated manually, or a <code>Class</code>
that will be instantiated using its default constructor when the
required dependencies are resolved, effectively giving you a lazy
instantiation mechanism.
There are four special methods that are called when found through
reflection to give you life cycle management options:
<ol>
<li><code>init()</code> is invoked after the instance has been
created and dependencies have been resolved, and can be used to
initialize the internal state of the instance or even to add more
dependencies based on runtime state</li>
<li><code>start()</code> is invoked right before the service is
registered</li>
<li><code>stop()</code> is invoked right after the service is
unregistered</li>
<li><code>destroy()</code> is invoked after all dependencies are
removed</li>
</ol>
In short, this allows you to initialize your instance before it is
registered, perform some post-initialization and pre-destruction code
as well as final cleanup. If a method is not defined, it simply is not
called, so you can decide which one(s) you need. If you need even more
fine-grained control, you can register as a service state listener too.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>implementation</code> - the implementation</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/felix/dm/ComponentStateListener.html" title="interface in org.apache.felix.dm"><code>ComponentStateListener</code></a></dd>
</dl>
</li>
</ul>
<a name="add-org.apache.felix.dm.Dependency...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>add</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;add(<a href="../../../../org/apache/felix/dm/Dependency.html" title="interface in org.apache.felix.dm">Dependency</a>...&nbsp;dependencies)</pre>
<div class="block">Adds dependency(ies) to this component, atomically. If the component is already active or if you add
dependencies from the init method, then you should add all the dependencies in one single add method call
(using the varargs argument), because this method may trigger component activation (like
the ServiceTracker.open() method does).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>dependencies</code> - the dependencies to add.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
</dl>
</li>
</ul>
<a name="remove-org.apache.felix.dm.Dependency-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>remove</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;remove(<a href="../../../../org/apache/felix/dm/Dependency.html" title="interface in org.apache.felix.dm">Dependency</a>&nbsp;d)</pre>
<div class="block">Removes a dependency from the component.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>d</code> - the dependency to remove</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
</dl>
</li>
</ul>
<a name="add-org.apache.felix.dm.ComponentStateListener-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>add</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;add(<a href="../../../../org/apache/felix/dm/ComponentStateListener.html" title="interface in org.apache.felix.dm">ComponentStateListener</a>&nbsp;listener)</pre>
<div class="block">Adds a component state listener to this component.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>listener</code> - the state listener</dd>
</dl>
</li>
</ul>
<a name="remove-org.apache.felix.dm.ComponentStateListener-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>remove</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;remove(<a href="../../../../org/apache/felix/dm/ComponentStateListener.html" title="interface in org.apache.felix.dm">ComponentStateListener</a>&nbsp;listener)</pre>
<div class="block">Removes a component state listener from this component.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>listener</code> - the state listener</dd>
</dl>
</li>
</ul>
<a name="setInterface-java.lang.String-java.util.Dictionary-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setInterface</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setInterface(java.lang.String&nbsp;serviceName,
java.util.Dictionary&lt;?,?&gt;&nbsp;properties)</pre>
<div class="block">Sets the public interface under which this component should be registered
in the OSGi service registry.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceName</code> - the name of the service interface</dd>
<dd><code>properties</code> - the properties for this service</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
</dl>
</li>
</ul>
<a name="setInterface-java.lang.String:A-java.util.Dictionary-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setInterface</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setInterface(java.lang.String[]&nbsp;serviceNames,
java.util.Dictionary&lt;?,?&gt;&nbsp;properties)</pre>
<div class="block">Sets the public interfaces under which this component should be registered
in the OSGi service registry.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceNames</code> - the names of the service interface</dd>
<dd><code>properties</code> - the properties for these services</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
</dl>
</li>
</ul>
<a name="setInterface-java.lang.Class-java.util.Dictionary-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setInterface</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setInterface(java.lang.Class&lt;?&gt;&nbsp;serviceName,
java.util.Dictionary&lt;?,?&gt;&nbsp;properties)</pre>
<div class="block">Sets the public interface under which this component should be registered
in the OSGi service registry.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceName</code> - the name of the service interface</dd>
<dd><code>properties</code> - the properties for this service</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
</dl>
</li>
</ul>
<a name="setInterface-java.lang.Class:A-java.util.Dictionary-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setInterface</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setInterface(java.lang.Class&lt;?&gt;[]&nbsp;serviceNames,
java.util.Dictionary&lt;?,?&gt;&nbsp;properties)</pre>
<div class="block">Sets the public interfaces under which this component should be registered
in the OSGi service registry.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceNames</code> - the names of the service interface</dd>
<dd><code>properties</code> - the properties for these services</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
</dl>
</li>
</ul>
<a name="setAutoConfig-java.lang.Class-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setAutoConfig</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setAutoConfig(java.lang.Class&lt;?&gt;&nbsp;clazz,
boolean&nbsp;autoConfig)</pre>
<div class="block">Configures auto configuration of injected classes in the component instance.
The following injections are currently performed, unless you explicitly
turn them off:
<dl>
<dt>BundleContext</dt><dd>the bundle context of the bundle</dd>
<dt>ServiceRegistration</dt><dd>the service registration used to register your service</dd>
<dt>DependencyManager</dt><dd>the dependency manager instance</dd>
<dt>Component</dt><dd>the component instance of the dependency manager</dd>
</dl></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>clazz</code> - the class (from the list above)</dd>
<dd><code>autoConfig</code> - <code>false</code> to turn off auto configuration</dd>
</dl>
</li>
</ul>
<a name="setAutoConfig-java.lang.Class-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setAutoConfig</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setAutoConfig(java.lang.Class&lt;?&gt;&nbsp;clazz,
java.lang.String&nbsp;instanceName)</pre>
<div class="block">Configures auto configuration of injected classes in the component instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>clazz</code> - the class (from the list above)</dd>
<dd><code>instanceName</code> - the name of the instance to inject the class into</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/felix/dm/Component.html#setAutoConfig-java.lang.Class-boolean-"><code>setAutoConfig(Class, boolean)</code></a></dd>
</dl>
</li>
</ul>
<a name="getServiceRegistration--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getServiceRegistration</h4>
<pre>ServiceRegistration&nbsp;getServiceRegistration()</pre>
<div class="block">Returns the service registration for this component. The method
will return <code>null</code> if no service registration is
available, for example if this component is not registered as a
service at all.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the service registration</dd>
</dl>
</li>
</ul>
<a name="setServiceProperties-java.util.Dictionary-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setServiceProperties</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setServiceProperties(java.util.Dictionary&lt;?,?&gt;&nbsp;serviceProperties)</pre>
<div class="block">Sets the service properties associated with the component. If the service
was already registered, it will be updated.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceProperties</code> - the properties</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/Component.html" title="type parameter in Component">T</a>&nbsp;setCallbacks(java.lang.String&nbsp;init,
java.lang.String&nbsp;start,
java.lang.String&nbsp;stop,
java.lang.String&nbsp;destroy)</pre>
<div class="block">Sets the names of the methods used as callbacks. These methods, when found, are
invoked as part of the life cycle management of the component implementation. The
dependency manager will look for a method of this name with the following signatures,
in this order:
<ol>
<li>method(Component component)</li>
<li>method()</li>
</ol></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>init</code> - the name of the init method</dd>
<dd><code>start</code> - the name of the start method</dd>
<dd><code>stop</code> - the name of the stop method</dd>
<dd><code>destroy</code> - the name of the destroy method</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the component</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/Component.html" title="type parameter in Component">T</a>&nbsp;setCallbacks(java.lang.Object&nbsp;instance,
java.lang.String&nbsp;init,
java.lang.String&nbsp;start,
java.lang.String&nbsp;stop,
java.lang.String&nbsp;destroy)</pre>
<div class="block">Sets the names of the methods used as callbacks. These methods, when found, are
invoked on the specified instance as part of the life cycle management of the component
implementation.
<p>
See setCallbacks(String init, String start, String stop, String destroy) for more
information on the signatures. Specifying an instance means you can create a manager
that will be invoked whenever the life cycle of a component changes and this manager
can then decide how to expose this life cycle to the actual component, offering an
important indirection when developing your own component models.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
</dl>
</li>
</ul>
<a name="setFactory-java.lang.Object-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFactory</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setFactory(java.lang.Object&nbsp;factory,
java.lang.String&nbsp;createMethod)</pre>
<div class="block">Sets the factory to use to create the implementation. You can specify
both the factory class and method to invoke. The method should return
the implementation, and can use any method to create it. Actually, this
can be used together with <code>setComposition</code> to create a
composition of instances that work together to implement a component. The
factory itself can also be instantiated lazily by not specifying an
instance, but a <code>Class</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>factory</code> - the factory instance or class</dd>
<dd><code>createMethod</code> - the name of the create method</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
</dl>
</li>
</ul>
<a name="setFactory-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFactory</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setFactory(java.lang.String&nbsp;createMethod)</pre>
<div class="block">Sets the factory to use to create the implementation. You specify the
method to invoke. The method should return the implementation, and can
use any method to create it. Actually, this can be used together with
<code>setComposition</code> to create a composition of instances that
work together to implement a component.
<p>
Note that currently, there is no default for the factory, so please use
<code>setFactory(factory, createMethod)</code> instead.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>createMethod</code> - the name of the create method</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
</dl>
</li>
</ul>
<a name="setComposition-java.lang.Object-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setComposition</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setComposition(java.lang.Object&nbsp;instance,
java.lang.String&nbsp;getMethod)</pre>
<div class="block">Sets the instance and method to invoke to get back all instances that
are part of a composition and need dependencies injected. All of them
will be searched for any of the dependencies. The method that is
invoked must return an <code>Object[]</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>instance</code> - the instance that has the method</dd>
<dd><code>getMethod</code> - the method to invoke</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
</dl>
</li>
</ul>
<a name="setComposition-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setComposition</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setComposition(java.lang.String&nbsp;getMethod)</pre>
<div class="block">Sets the method to invoke on the service implementation to get back all
instances that are part of a composition and need dependencies injected.
All of them will be searched for any of the dependencies. The method that
is invoked must return an <code>Object[]</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>getMethod</code> - the method to invoke</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this component</dd>
</dl>
</li>
</ul>
<a name="setDebug-java.lang.String-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setDebug</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="type parameter in Component">T</a>&nbsp;setDebug(java.lang.String&nbsp;label)</pre>
<div class="block">Activate debug for this component. Informations related to dependency processing will be displayed
using osgi log service, our to standard output if no log service is currently available.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>label</code> - </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/BundleDependency.html" title="interface in org.apache.felix.dm"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/felix/dm/Component.ServiceScope.html" title="enum in org.apache.felix.dm"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/felix/dm/Component.html" target="_top">Frames</a></li>
<li><a href="Component.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><a href="#nested.class.summary">Nested</a>&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>