blob: 599632561b1ae9799bc17bf7eaa0f26d6baa24e7 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_191) on Sun Dec 23 12:06:06 CET 2018 -->
<title>Component</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="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,"i21":6,"i22":6,"i23":6,"i24":6,"i25":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</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<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>, <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</span></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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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><a href="../../../../org/apache/felix/dm/ComponentDeclaration.html" title="interface in org.apache.felix.dm">ComponentDeclaration</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#getComponentDeclaration--">getComponentDeclaration</a></span>()</code>
<div class="block">Returns the component description (dependencies, service provided, etc ...).</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/DependencyManager.html" title="class in org.apache.felix.dm">DependencyManager</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#getDependencyManager--">getDependencyManager</a></span>()</code>
<div class="block">Returns the dependency manager associated with this component.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>&lt;U&gt;&nbsp;U</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#getInstance--">getInstance</a></span>()</code>
<div class="block">Returns the instance that make up this component.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>java.lang.Object[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#getInstances--">getInstances</a></span>()</code>
<div class="block">Returns the composition instances that make up this component, or just the
component instance if it does not have a composition, or an empty array if
the component has not even been instantiated.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>&lt;K,V&gt;&nbsp;java.util.Dictionary&lt;K,V&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/Component.html#getServiceProperties--">getServiceProperties</a></span>()</code>
<div class="block">Returns the component service properties.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<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="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i11" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i12" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i13" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i15" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i16" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i17" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i18" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i19" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i20" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i21" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i22" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i23" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i24" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="i25" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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>
</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="setServiceProperties-java.util.Dictionary-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setServiceProperties</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="interface in org.apache.felix.dm">Component</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="blockList">
<li class="blockList">
<h4>setDebug</h4>
<pre><a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</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>
<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="getInstance--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInstance</h4>
<pre>&lt;U&gt;&nbsp;U&nbsp;getInstance()</pre>
<div class="block">Returns the instance that make up this component. If the component has a composition of instances,
then the first instance of the composition is returned. Null is returned if the component has not
even been instantiated.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the component instances</dd>
</dl>
</li>
</ul>
<a name="getInstances--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInstances</h4>
<pre>java.lang.Object[]&nbsp;getInstances()</pre>
<div class="block">Returns the composition instances that make up this component, or just the
component instance if it does not have a composition, or an empty array if
the component has not even been instantiated.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the component instances</dd>
</dl>
</li>
</ul>
<a name="getServiceProperties--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getServiceProperties</h4>
<pre>&lt;K,V&gt;&nbsp;java.util.Dictionary&lt;K,V&gt;&nbsp;getServiceProperties()</pre>
<div class="block">Returns the component service properties.
The returned dictionary is either empty if no service properties were defined for this component,
or copy of the existing service properties associated with this component.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a copy of the service properties associated to this component or an empty dictionary
if no service properties were defined for this component.</dd>
</dl>
</li>
</ul>
<a name="getDependencyManager--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDependencyManager</h4>
<pre><a href="../../../../org/apache/felix/dm/DependencyManager.html" title="class in org.apache.felix.dm">DependencyManager</a>&nbsp;getDependencyManager()</pre>
<div class="block">Returns the dependency manager associated with this component.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the dependency manager associated with this component.</dd>
</dl>
</li>
</ul>
<a name="getComponentDeclaration--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getComponentDeclaration</h4>
<pre><a href="../../../../org/apache/felix/dm/ComponentDeclaration.html" title="interface in org.apache.felix.dm">ComponentDeclaration</a>&nbsp;getComponentDeclaration()</pre>
<div class="block">Returns the component description (dependencies, service provided, etc ...).</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the component description (dependencies, service provided, etc ...).</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>