blob: a96b5ea13f1cbe3ac549f06855fd70b5daca7bf7 [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>ResourceComponent</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="ResourceComponent";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":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/PropertyMetaData.html" title="interface in org.apache.felix.dm"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/felix/dm/ResourceDependency.html" title="interface 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/ResourceComponent.html" target="_top">Frames</a></li>
<li><a href="ResourceComponent.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.felix.dm</div>
<h2 title="Interface ResourceComponent" class="title">Interface ResourceComponent</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>, <a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</a>&lt;<a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a>&gt;</dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">ResourceComponent</span>
extends <a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</a>&lt;<a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a>&gt;</pre>
<div class="block">Interface used to configure the various parameters needed when defining
a Dependency Manager resource adapter component.
The resource adapter will be applied to any resource that
matches the specified filter condition. For each matching resource
an adapter will be created based on the adapter implementation class.
The adapter will be registered with the specified interface and existing properties
from the original resource plus any extra properties you supply here.
It will also inherit all dependencies, and if you declare the original
service as a member it will be injected.
<h3>Usage Examples</h3>
Here is a sample showing a VideoPlayer adapter component which plays a video found from
a bundle having a Video-Path manifest header.
<blockquote><pre>
<code>
public class Activator extends DependencyActivatorBase {
&amp;Override
public void init(BundleContext context, DependencyManager dm) throws Exception {
Component resourceComponent = dm.createResourceComponent()
.setResourceFilter("(path=/videos/*.mkv)")
.setInterface(VideoPlayer.class, null)
.setImplementation(VideoPlayerImpl.class);
dm.add(resourceComponent);
}
}
public interface VideoPlayer {
void play();
}
public class VideoPlayerImpl implements VideoPlayer {
volatile URL resource; // injected
void play() {
...
}
}
</code> </pre></blockquote>
<p> When you use callbacks to get injected with the resource, the "add", "change" callbacks
support the following method signatures:
<p>
<pre><code>
(Component, URL, Dictionary)
(Component, URL)
(Component)
(URL, Dictionary)
(URL)
(Object)
</code></pre></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/apache/felix/dm/DependencyManager.html#createBundleComponent--"><code>DependencyManager.createBundleComponent()</code></a></dd>
</dl>
</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>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.felix.dm.Component">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.felix.dm.<a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</a></h3>
<code><a href="../../../../org/apache/felix/dm/Component.ServiceScope.html" title="enum in org.apache.felix.dm">Component.ServiceScope</a></code></li>
</ul>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ResourceComponent.html#setBundleCallbackInstance-java.lang.Object-">setBundleCallbackInstance</a></span>(java.lang.Object&nbsp;callbackInstance)</code>
<div class="block">Sets the instance to invoke the callbacks on (null by default, meaning the callbacks have to be invoked on the resource adapter itself)</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ResourceComponent.html#setBundleCallbacks-java.lang.String-java.lang.String-">setBundleCallbacks</a></span>(java.lang.String&nbsp;add,
java.lang.String&nbsp;change)</code>
<div class="block">Sets the callbacks to invoke when injecting the resource into the adapter component.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ResourceComponent.html#setPropagate-boolean-">setPropagate</a></span>(boolean&nbsp;propagate)</code>
<div class="block">Sets if properties from the resource should be propagated to the resource adapter service.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ResourceComponent.html#setPropagate-java.lang.Object-java.lang.String-">setPropagate</a></span>(java.lang.Object&nbsp;propagateCbInstance,
java.lang.String&nbsp;propagateCbMethod)</code>
<div class="block">Sets the propagate callback to invoke in order to propagate the resource properties to the adapter service.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/felix/dm/ResourceComponent.html#setResourceFilter-java.lang.String-">setResourceFilter</a></span>(java.lang.String&nbsp;filter)</code>
<div class="block">Sets the resource filter used to match a given resource URL.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.felix.dm.Component">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.felix.dm.<a href="../../../../org/apache/felix/dm/Component.html" title="interface in org.apache.felix.dm">Component</a></h3>
<code><a href="../../../../org/apache/felix/dm/Component.html#add-org.apache.felix.dm.ComponentStateListener-">add</a>, <a href="../../../../org/apache/felix/dm/Component.html#add-org.apache.felix.dm.Dependency...-">add</a>, <a href="../../../../org/apache/felix/dm/Component.html#getServiceRegistration--">getServiceRegistration</a>, <a href="../../../../org/apache/felix/dm/Component.html#remove-org.apache.felix.dm.ComponentStateListener-">remove</a>, <a href="../../../../org/apache/felix/dm/Component.html#remove-org.apache.felix.dm.Dependency-">remove</a>, <a href="../../../../org/apache/felix/dm/Component.html#setAutoConfig-java.lang.Class-boolean-">setAutoConfig</a>, <a href="../../../../org/apache/felix/dm/Component.html#setAutoConfig-java.lang.Class-java.lang.String-">setAutoConfig</a>, <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>, <a href="../../../../org/apache/felix/dm/Component.html#setCallbacks-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">setCallbacks</a>, <a href="../../../../org/apache/felix/dm/Component.html#setComposition-java.lang.Object-java.lang.String-">setComposition</a>, <a href="../../../../org/apache/felix/dm/Component.html#setComposition-java.lang.String-">setComposition</a>, <a href="../../../../org/apache/felix/dm/Component.html#setDebug-java.lang.String-">setDebug</a>, <a href="../../../../org/apache/felix/dm/Component.html#setFactory-java.lang.Object-java.lang.String-">setFactory</a>, <a href="../../../../org/apache/felix/dm/Component.html#setFactory-java.lang.String-">setFactory</a>, <a href="../../../../org/apache/felix/dm/Component.html#setImplementation-java.lang.Object-">setImplementation</a>, <a href="../../../../org/apache/felix/dm/Component.html#setInterface-java.lang.Class:A-java.util.Dictionary-">setInterface</a>, <a href="../../../../org/apache/felix/dm/Component.html#setInterface-java.lang.Class-java.util.Dictionary-">setInterface</a>, <a href="../../../../org/apache/felix/dm/Component.html#setInterface-java.lang.String:A-java.util.Dictionary-">setInterface</a>, <a href="../../../../org/apache/felix/dm/Component.html#setInterface-java.lang.String-java.util.Dictionary-">setInterface</a>, <a href="../../../../org/apache/felix/dm/Component.html#setScope-org.apache.felix.dm.Component.ServiceScope-">setScope</a>, <a href="../../../../org/apache/felix/dm/Component.html#setServiceProperties-java.util.Dictionary-">setServiceProperties</a></code></li>
</ul>
<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="setResourceFilter-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setResourceFilter</h4>
<pre><a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a>&nbsp;setResourceFilter(java.lang.String&nbsp;filter)</pre>
<div class="block">Sets the resource filter used to match a given resource URL.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>filter</code> - the filter condition to use with the resource</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this ResourceComponent</dd>
</dl>
</li>
</ul>
<a name="setPropagate-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setPropagate</h4>
<pre><a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a>&nbsp;setPropagate(boolean&nbsp;propagate)</pre>
<div class="block">Sets if properties from the resource should be propagated to the resource adapter service. true by default.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>propagate</code> - true if if properties from the resource should be propagated to the resource adapter service.
true by default.
The provided resource adapter service properties take precedence over the propagated resource service properties.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this ResourceComponent</dd>
</dl>
</li>
</ul>
<a name="setPropagate-java.lang.Object-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setPropagate</h4>
<pre><a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a>&nbsp;setPropagate(java.lang.Object&nbsp;propagateCbInstance,
java.lang.String&nbsp;propagateCbMethod)</pre>
<div class="block">Sets the propagate callback to invoke in order to propagate the resource properties to the adapter service.
The provided resource adapter service properties take precedence over the propagated resource service properties.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>propagateCbInstance</code> - the object to invoke the propagate callback method on</dd>
<dd><code>propagateCbMethod</code> - the method name to invoke in order to propagate the resource properties to the adapter service.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this ResourceComponent</dd>
</dl>
</li>
</ul>
<a name="setBundleCallbacks-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBundleCallbacks</h4>
<pre><a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a>&nbsp;setBundleCallbacks(java.lang.String&nbsp;add,
java.lang.String&nbsp;change)</pre>
<div class="block">Sets the callbacks to invoke when injecting the resource into the adapter component.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>add</code> - the method to invoke when injected the resource into the adapter component</dd>
<dd><code>change</code> - the method to invoke when the resource properties have changed</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this ResourceComponent</dd>
</dl>
</li>
</ul>
<a name="setBundleCallbackInstance-java.lang.Object-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setBundleCallbackInstance</h4>
<pre><a href="../../../../org/apache/felix/dm/ResourceComponent.html" title="interface in org.apache.felix.dm">ResourceComponent</a>&nbsp;setBundleCallbackInstance(java.lang.Object&nbsp;callbackInstance)</pre>
<div class="block">Sets the instance to invoke the callbacks on (null by default, meaning the callbacks have to be invoked on the resource adapter itself)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>callbackInstance</code> - the instance to invoke the callbacks on (null by default, meaning the callbacks have to be invoked on the resource adapter itself)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this ResourceComponent</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/PropertyMetaData.html" title="interface in org.apache.felix.dm"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/felix/dm/ResourceDependency.html" title="interface 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/ResourceComponent.html" target="_top">Frames</a></li>
<li><a href="ResourceComponent.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>