Added: felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/ConfigurationDependency.html URL: http://svn.apache.org/viewvc/felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/ConfigurationDependency.html?rev=1664735&view=auto ============================================================================== --- felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/ConfigurationDependency.html (added) +++ felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/ConfigurationDependency.html Fri Mar 6 22:25:09 2015 @@ -0,0 +1,436 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- NewPage --> +<html lang="en"> +<head> +<!-- Generated by javadoc (version 1.7.0_67) on Fri Mar 06 23:14:53 CET 2015 --> +<title>ConfigurationDependency</title> +<meta name="date" content="2015-03-06"> +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style"> +</head> +<body> +<script type="text/javascript"><!-- + if (location.href.indexOf('is-external=true') == -1) { + parent.document.title="ConfigurationDependency"; + } +//--> +</script> +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<!-- ========= START OF TOP NAVBAR ======= --> +<div class="topNav"><a name="navbar_top"> +<!-- --> +</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/Composition.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/Destroy.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/ConfigurationDependency.html" target="_top">Frames</a></li> +<li><a href="ConfigurationDependency.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_top"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_top"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Required | </li> +<li><a href="#annotation_type_optional_element_summary">Optional</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#annotation_type_element_detail">Element</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.annotation.api</div> +<h2 title="Annotation Type ConfigurationDependency" class="title">Annotation Type ConfigurationDependency</h2> +</div> +<div class="contentContainer"> +<div class="description"> +<ul class="blockList"> +<li class="blockList"> +<hr> +<br> +<pre>@Retention(value=CLASS) +@Target(value=METHOD) +public @interface <span class="strong">ConfigurationDependency</span></pre> +<div class="block">Annotates a method for injecting a Configuration Dependency. A configuration dependency + is always required, and allows you to depend on the availability of a valid configuration + for your component. This dependency requires the OSGi Configuration Admin Service. + + <h3>Usage Examples</h3> + + <p> In the following example, the "Printer" component depends on a configuration + whose PID name is "sample.PrinterConfiguration". This service will initialize + its ip/port number from the provided configuration. + <p> First, we define the configuration metadata, using standard bndtools metatatype annotations + (see http://www.aqute.biz/Bnd/MetaType): + + <blockquote> + <pre> + package sample; + import aQute.bnd.annotation.metatype.Meta.AD; + import aQute.bnd.annotation.metatype.Meta.OCD; + + @OCD(description = "Declare here the Printer Configuration.") + public interface PrinterConfiguration { + @AD(description = "Enter the printer ip address") + String ipAddress(); + + @AD(description = "Enter the printer address port number.") + int portNumber(); + } + </pre> + </blockquote> + + Next, we define our Printer service which depends on the PrinterConfiguration: + + <blockquote> + <pre> + package sample; + import aQute.bnd.annotation.metatype.*; + + @Component + public class Printer { + @ConfigurationDependency(pidClass = PrinterConfiguration.class) // Will use pid "sample.PrinterConfiguration" + void updated(Dictionary props) { + // load configuration from the provided dictionary, or throw an exception of any configuration error. + PrinterConfig cnf = Configurable.createConfigurable(PrinterConfig.class, props); + String ip = cnf.ipAddress(); + int port = cnf.portNumber(); + ... + } + } + </pre> + </blockquote></div> +</li> +</ul> +</div> +<div class="summary"> +<ul class="blockList"> +<li class="blockList"> +<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== --> +<ul class="blockList"> +<li class="blockList"><a name="annotation_type_optional_element_summary"> +<!-- --> +</a> +<h3>Optional Element Summary</h3> +<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Optional Element Summary table, listing optional elements, and an explanation"> +<caption><span>Optional Elements</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Optional Element and Description</th> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/ConfigurationDependency.html#description()">description</a></strong></code> +<div class="block"><strong>Deprecated.</strong> +<div class="block"><i>use standard bndtools metatype annotations instead (see http://www.aqute.biz/Bnd/MetaType)</i></div> +</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/ConfigurationDependency.html#heading()">heading</a></strong></code> +<div class="block"><strong>Deprecated.</strong> +<div class="block"><i>use standard bndtools metatype annotations instead (see http://www.aqute.biz/Bnd/MetaType)</i></div> +</div> +</td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code><a href="../../../../../../org/apache/felix/dm/annotation/api/PropertyMetaData.html" title="annotation in org.apache.felix.dm.annotation.api">PropertyMetaData</a>[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/ConfigurationDependency.html#metadata()">metadata</a></strong></code> +<div class="block"><strong>Deprecated.</strong> +<div class="block"><i>use standard bndtools metatype annotations instead (see http://www.aqute.biz/Bnd/MetaType)</i></div> +</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/ConfigurationDependency.html#name()">name</a></strong></code> +<div class="block">The name for this configuration dependency.</div> +</td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/ConfigurationDependency.html#pid()">pid</a></strong></code> +<div class="block">Returns the pid for a given service (by default, the pid is the service class name).</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>java.lang.Class<?></code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/ConfigurationDependency.html#pidClass()">pidClass</a></strong></code> +<div class="block">Returns the pid from a class name.</div> +</td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>boolean</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/ConfigurationDependency.html#propagate()">propagate</a></strong></code> +<div class="block">Returns true if the configuration properties must be published along with the service.</div> +</td> +</tr> +</table> +</li> +</ul> +</li> +</ul> +</div> +<div class="details"> +<ul class="blockList"> +<li class="blockList"> +<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== --> +<ul class="blockList"> +<li class="blockList"><a name="annotation_type_element_detail"> +<!-- --> +</a> +<h3>Element Detail</h3> +<a name="pid()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>pid</h4> +<pre>public abstract java.lang.String pid</pre> +<div class="block">Returns the pid for a given service (by default, the pid is the service class name).</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>the pid for a given service (default = Service class name)</dd></dl> +<dl> +<dt>Default:</dt> +<dd>""</dd> +</dl> +</li> +</ul> +<a name="pidClass()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>pidClass</h4> +<pre>public abstract java.lang.Class<?> pidClass</pre> +<div class="block">Returns the pid from a class name. The full class name will be used as the configuration PID. + You can use this method when you use an interface annoted with standard bndtols metatype annotations. + (see http://www.aqute.biz/Bnd/MetaType).</div> +<dl> +<dt>Default:</dt> +<dd>java.lang.Object.class</dd> +</dl> +</li> +</ul> +<a name="propagate()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>propagate</h4> +<pre>public abstract boolean propagate</pre> +<div class="block">Returns true if the configuration properties must be published along with the service. + Any additional service properties specified directly are merged with these.</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>true if configuration must be published along with the service, false if not.</dd></dl> +<dl> +<dt>Default:</dt> +<dd>false</dd> +</dl> +</li> +</ul> +<a name="name()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>name</h4> +<pre>public abstract java.lang.String name</pre> +<div class="block">The name for this configuration dependency. When you give a name a dependency, it won't be evaluated + immediately, but after the component's init method has been called, and from the init method, you can then return + a map in order to dynamically configure the configuration dependency (the map has to contain a "pid" and/or "propagate" + flag, prefixed with the dependency name). Then the dependency will be evaluated after the component init method, and will + be injected before the start method. + + <p> Usage example of a Configuration dependency whose pid and propagate flag is configured dynamically from init method: + + <blockquote><pre> + /** + * A Service that dynamically defines an extra dynamic configuration dependency from its init method. + */ + @Component + class X { + private Dictionary m_config; + + // Inject initial Configuration (injected before any other required dependencies) + @ConfigurationDependency + void componentConfiguration(Dictionary config) { + // you must throw an exception if the configuration is not valid + m_config = config; + } + + /** + * All unnamed dependencies are injected: we can now configure our dynamic configuration whose dependency name is "global". + */ + @Init + Map init() { + return new HashMap() {{ + put("global.pid", m_config.get("globalConfig.pid")); + put("global.propagate", m_config.get("globalConfig.propagate")); + }}; + } + + // Injected after init, and dynamically configured by the init method. + @ConfigurationDependency(name="global") + void globalConfiguration(Dictionary globalConfig) { + // you must throw an exception if the configuration is not valid + } + + /** + * All dependencies are injected and our service is now ready to be published. + */ + @Start + void start() { + } + } + </pre></blockquote></div> +<dl> +<dt>Default:</dt> +<dd>""</dd> +</dl> +</li> +</ul> +<a name="heading()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>heading</h4> +<pre>public abstract java.lang.String heading</pre> +<div class="block"><span class="strong">Deprecated.</span> <i>use standard bndtools metatype annotations instead (see http://www.aqute.biz/Bnd/MetaType)</i></div> +<div class="block">The label used to display the tab name (or section) where the properties are displayed. Example: "Printer Service".</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>The label used to display the tab name where the properties are displayed.</dd></dl> +<dl> +<dt>Default:</dt> +<dd>""</dd> +</dl> +</li> +</ul> +<a name="description()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>description</h4> +<pre>public abstract java.lang.String description</pre> +<div class="block"><span class="strong">Deprecated.</span> <i>use standard bndtools metatype annotations instead (see http://www.aqute.biz/Bnd/MetaType)</i></div> +<div class="block">A human readable description of the PID this annotation is associated with. Example: "Configuration for the PrinterService bundle".</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>A human readable description of the PID this annotation is associated with.</dd></dl> +<dl> +<dt>Default:</dt> +<dd>""</dd> +</dl> +</li> +</ul> +<a name="metadata()"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>metadata</h4> +<pre>public abstract <a href="../../../../../../org/apache/felix/dm/annotation/api/PropertyMetaData.html" title="annotation in org.apache.felix.dm.annotation.api">PropertyMetaData</a>[] metadata</pre> +<div class="block"><span class="strong">Deprecated.</span> <i>use standard bndtools metatype annotations instead (see http://www.aqute.biz/Bnd/MetaType)</i></div> +<div class="block">The list of properties types used to expose properties in web console.</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>The list of properties types used to expose properties in web console.</dd></dl> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +</div> +<!-- ========= END OF CLASS DATA ========= --> +<!-- ======= START OF BOTTOM NAVBAR ====== --> +<div class="bottomNav"><a name="navbar_bottom"> +<!-- --> +</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/Composition.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/Destroy.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/ConfigurationDependency.html" target="_top">Frames</a></li> +<li><a href="ConfigurationDependency.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_bottom"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_bottom"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Required | </li> +<li><a href="#annotation_type_optional_element_summary">Optional</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#annotation_type_element_detail">Element</a></li> +</ul> +</div> +<a name="skip-navbar_bottom"> +<!-- --> +</a></div> +<!-- ======== END OF BOTTOM NAVBAR ======= --> +</body> +</html>
Added: felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Destroy.html URL: http://svn.apache.org/viewvc/felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Destroy.html?rev=1664735&view=auto ============================================================================== --- felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Destroy.html (added) +++ felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Destroy.html Fri Mar 6 22:25:09 2015 @@ -0,0 +1,167 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- NewPage --> +<html lang="en"> +<head> +<!-- Generated by javadoc (version 1.7.0_67) on Fri Mar 06 23:14:53 CET 2015 --> +<title>Destroy</title> +<meta name="date" content="2015-03-06"> +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style"> +</head> +<body> +<script type="text/javascript"><!-- + if (location.href.indexOf('is-external=true') == -1) { + parent.document.title="Destroy"; + } +//--> +</script> +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<!-- ========= START OF TOP NAVBAR ======= --> +<div class="topNav"><a name="navbar_top"> +<!-- --> +</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/ConfigurationDependency.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/Destroy.html" target="_top">Frames</a></li> +<li><a href="Destroy.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_top"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_top"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Required | </li> +<li>Optional</li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li>Element</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.annotation.api</div> +<h2 title="Annotation Type Destroy" class="title">Annotation Type Destroy</h2> +</div> +<div class="contentContainer"> +<div class="description"> +<ul class="blockList"> +<li class="blockList"> +<hr> +<br> +<pre>@Retention(value=CLASS) +@Target(value=METHOD) +public @interface <span class="strong">Destroy</span></pre> +<div class="block">Annotates a method which is invoked when the component is destroyed. + The method is called when the component's bundle is stopped, or when one of its + required dependency is lost (unless the dependency has been defined as an "instance bound" + dependency using the Dependency Manager API). + </ul> + + <h3>Usage Examples</h3> + <blockquote> + <pre> + @Component + class MyComponent { + @ServiceDependency + private LogService logService; // Required dependency over the log service. + + @Destroy + void destroyed() {} // called if bundle is stopped or if we have lost some required dependencies. + } + </pre> + </blockquote></div> +</li> +</ul> +</div> +</div> +<!-- ========= END OF CLASS DATA ========= --> +<!-- ======= START OF BOTTOM NAVBAR ====== --> +<div class="bottomNav"><a name="navbar_bottom"> +<!-- --> +</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/ConfigurationDependency.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/Destroy.html" target="_top">Frames</a></li> +<li><a href="Destroy.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_bottom"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_bottom"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Required | </li> +<li>Optional</li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li>Element</li> +</ul> +</div> +<a name="skip-navbar_bottom"> +<!-- --> +</a></div> +<!-- ======== END OF BOTTOM NAVBAR ======= --> +</body> +</html> Added: felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html URL: http://svn.apache.org/viewvc/felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html?rev=1664735&view=auto ============================================================================== --- felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html (added) +++ felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html Fri Mar 6 22:25:09 2015 @@ -0,0 +1,455 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- NewPage --> +<html lang="en"> +<head> +<!-- Generated by javadoc (version 1.7.0_67) on Fri Mar 06 23:14:53 CET 2015 --> +<title>FactoryConfigurationAdapterService</title> +<meta name="date" content="2015-03-06"> +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style"> +</head> +<body> +<script type="text/javascript"><!-- + if (location.href.indexOf('is-external=true') == -1) { + parent.document.title="FactoryConfigurationAdapterService"; + } +//--> +</script> +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<!-- ========= START OF TOP NAVBAR ======= --> +<div class="topNav"><a name="navbar_top"> +<!-- --> +</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/Destroy.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/Init.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html" target="_top">Frames</a></li> +<li><a href="FactoryConfigurationAdapterService.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_top"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_top"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Required | </li> +<li><a href="#annotation_type_optional_element_summary">Optional</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#annotation_type_element_detail">Element</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.annotation.api</div> +<h2 title="Annotation Type FactoryConfigurationAdapterService" class="title">Annotation Type FactoryConfigurationAdapterService</h2> +</div> +<div class="contentContainer"> +<div class="description"> +<ul class="blockList"> +<li class="blockList"> +<hr> +<br> +<pre>@Retention(value=CLASS) +@Target(value=TYPE) +public @interface <span class="strong">FactoryConfigurationAdapterService</span></pre> +<div class="block">Annotates a class that acts as a Factory Configuration Adapter Service. For each new <code>Config Admin</code> + factory configuration matching the specified factoryPid, an instance of this service will be created. + The adapter will be registered with the specified interface, and with the specified adapter service properties. + Depending on the <code>propagate</code> parameter, every public factory configuration properties + (which don't start with ".") will be propagated along with the adapter service properties. <p> + + <h3>Usage Examples</h3> + Here, a "Dictionary" service instance is created for each existing "sample.DictionaryConfiguration" factory pids. + + First, we declare our factory configuration metadata using standard bndtools metatatype annotations + (see http://www.aqute.biz/Bnd/MetaType): + + <blockquote> + <pre> + package sample; + import java.util.List; + import aQute.bnd.annotation.metatype.Meta.AD; + import aQute.bnd.annotation.metatype.Meta.OCD; + + @OCD(factory = true, description = "Declare here some Dictionary instances.") + public interface DictionaryConfiguration { + @AD(description = "Describes the dictionary language.", deflt = "en") + String lang(); + + @AD(description = "Declare here the list of words supported by this dictionary.") + List<String> words(); + } + </pre> + </blockquote> + + And here is the Dictionary service: + + <blockquote> + <pre> + import java.util.List; + import aQute.bnd.annotation.metatype.Configurable; + + @FactoryConfigurationAdapterService(factoryPidClass=DictionaryConfiguration.class) + public class DictionaryImpl implements DictionaryService { + protected void updated(Dictionary<String, ?> props) { + // load configuration from the provided dictionary, or throw an exception of any configuration error. + DictionaryConfiguration cnf = Configurable.createConfigurable(DictionaryConfiguration.class, props); + + m_lang = config.lang(); + m_words.clear(); + for (String word : conf.words()) { + m_words.add(word); + } + } + ... + } + </pre> + </blockquote></div> +</li> +</ul> +</div> +<div class="summary"> +<ul class="blockList"> +<li class="blockList"> +<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== --> +<ul class="blockList"> +<li class="blockList"><a name="annotation_type_optional_element_summary"> +<!-- --> +</a> +<h3>Optional Element Summary</h3> +<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Optional Element Summary table, listing optional elements, and an explanation"> +<caption><span>Optional Elements</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Optional Element and Description</th> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html#description()">description</a></strong></code> +<div class="block"><strong>Deprecated.</strong> +<div class="block"><i>use standard bndtools metatype annotations instead (see http://www.aqute.biz/Bnd/MetaType)</i></div> +</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html#factoryMethod()">factoryMethod</a></strong></code> +<div class="block">Sets the static method used to create the adapter instance.</div> +</td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html#factoryPid()">factoryPid</a></strong></code> +<div class="block">Returns the factory pid whose configurations will instantiate the annotated service class.</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>java.lang.Class<?></code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html#factoryPidClass()">factoryPidClass</a></strong></code> +<div class="block">Returns the factory pid from a class name.</div> +</td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html#heading()">heading</a></strong></code> +<div class="block"><strong>Deprecated.</strong> +<div class="block"><i>use standard bndtools metatype annotations instead (see http://www.aqute.biz/Bnd/MetaType)</i></div> +</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code><a href="../../../../../../org/apache/felix/dm/annotation/api/PropertyMetaData.html" title="annotation in org.apache.felix.dm.annotation.api">PropertyMetaData</a>[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html#metadata()">metadata</a></strong></code> +<div class="block"><strong>Deprecated.</strong> +<div class="block"><i>use standard bndtools metatype annotations instead (see http://www.aqute.biz/Bnd/MetaType)</i></div> +</div> +</td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>boolean</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html#propagate()">propagate</a></strong></code> +<div class="block">Returns true if the configuration properties must be published along with the service.</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html" title="annotation in org.apache.felix.dm.annotation.api">Property</a>[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html#properties()">properties</a></strong></code> +<div class="block">Adapter Service properties.</div> +</td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>java.lang.Class<?>[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html#provides()">provides</a></strong></code> +<div class="block">The interface(s) to use when registering adapters.</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html#updated()">updated</a></strong></code> +<div class="block">The Update method to invoke (defaulting to "updated"), when a factory configuration is created or updated</div> +</td> +</tr> +</table> +</li> +</ul> +</li> +</ul> +</div> +<div class="details"> +<ul class="blockList"> +<li class="blockList"> +<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== --> +<ul class="blockList"> +<li class="blockList"><a name="annotation_type_element_detail"> +<!-- --> +</a> +<h3>Element Detail</h3> +<a name="provides()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>provides</h4> +<pre>public abstract java.lang.Class<?>[] provides</pre> +<div class="block">The interface(s) to use when registering adapters. By default, directly implemented + interfaces will be registered in the OSGi registry.</div> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +<a name="properties()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>properties</h4> +<pre>public abstract <a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html" title="annotation in org.apache.felix.dm.annotation.api">Property</a>[] properties</pre> +<div class="block">Adapter Service properties. Notice that public factory configuration is also registered in service properties, + (only if propagate is true). Public factory configuration properties are those which don't starts with a dot (".").</div> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +<a name="factoryPid()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>factoryPid</h4> +<pre>public abstract java.lang.String factoryPid</pre> +<div class="block">Returns the factory pid whose configurations will instantiate the annotated service class. (By default, the pid is the + service class name).</div> +<dl> +<dt>Default:</dt> +<dd>""</dd> +</dl> +</li> +</ul> +<a name="factoryPidClass()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>factoryPidClass</h4> +<pre>public abstract java.lang.Class<?> factoryPidClass</pre> +<div class="block">Returns the factory pid from a class name. The full class name will be used as the configuration PID. + You can use this method when you use an interface annoted with standard bndtols metatype annotations. + (see http://www.aqute.biz/Bnd/MetaType).</div> +<dl> +<dt>Default:</dt> +<dd>java.lang.Object.class</dd> +</dl> +</li> +</ul> +<a name="updated()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>updated</h4> +<pre>public abstract java.lang.String updated</pre> +<div class="block">The Update method to invoke (defaulting to "updated"), when a factory configuration is created or updated</div> +<dl> +<dt>Default:</dt> +<dd>"updated"</dd> +</dl> +</li> +</ul> +<a name="propagate()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>propagate</h4> +<pre>public abstract boolean propagate</pre> +<div class="block">Returns true if the configuration properties must be published along with the service. + Any additional service properties specified directly are merged with these.</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>true if configuration must be published along with the service, false if not.</dd></dl> +<dl> +<dt>Default:</dt> +<dd>false</dd> +</dl> +</li> +</ul> +<a name="heading()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>heading</h4> +<pre>public abstract java.lang.String heading</pre> +<div class="block"><span class="strong">Deprecated.</span> <i>use standard bndtools metatype annotations instead (see http://www.aqute.biz/Bnd/MetaType)</i></div> +<div class="block">The label used to display the tab name (or section) where the properties are displayed. Example: "Printer Service".</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>The label used to display the tab name where the properties are displayed.</dd></dl> +<dl> +<dt>Default:</dt> +<dd>""</dd> +</dl> +</li> +</ul> +<a name="description()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>description</h4> +<pre>public abstract java.lang.String description</pre> +<div class="block"><span class="strong">Deprecated.</span> <i>use standard bndtools metatype annotations instead (see http://www.aqute.biz/Bnd/MetaType)</i></div> +<div class="block">A human readable description of the PID this annotation is associated with. Example: "Configuration for the PrinterService bundle".</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>A human readable description of the PID this annotation is associated with.</dd></dl> +<dl> +<dt>Default:</dt> +<dd>""</dd> +</dl> +</li> +</ul> +<a name="metadata()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>metadata</h4> +<pre>public abstract <a href="../../../../../../org/apache/felix/dm/annotation/api/PropertyMetaData.html" title="annotation in org.apache.felix.dm.annotation.api">PropertyMetaData</a>[] metadata</pre> +<div class="block"><span class="strong">Deprecated.</span> <i>use standard bndtools metatype annotations instead (see http://www.aqute.biz/Bnd/MetaType)</i></div> +<div class="block">The list of properties types used to expose properties in web console.</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>The list of properties types used to expose properties in web console.</dd></dl> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +<a name="factoryMethod()"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>factoryMethod</h4> +<pre>public abstract java.lang.String factoryMethod</pre> +<div class="block">Sets the static method used to create the adapter instance.</div> +<dl> +<dt>Default:</dt> +<dd>""</dd> +</dl> +</li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +</div> +<!-- ========= END OF CLASS DATA ========= --> +<!-- ======= START OF BOTTOM NAVBAR ====== --> +<div class="bottomNav"><a name="navbar_bottom"> +<!-- --> +</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/Destroy.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/Init.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/FactoryConfigurationAdapterService.html" target="_top">Frames</a></li> +<li><a href="FactoryConfigurationAdapterService.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_bottom"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_bottom"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Required | </li> +<li><a href="#annotation_type_optional_element_summary">Optional</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#annotation_type_element_detail">Element</a></li> +</ul> +</div> +<a name="skip-navbar_bottom"> +<!-- --> +</a></div> +<!-- ======== END OF BOTTOM NAVBAR ======= --> +</body> +</html> Added: felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Init.html URL: http://svn.apache.org/viewvc/felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Init.html?rev=1664735&view=auto ============================================================================== --- felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Init.html (added) +++ felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Init.html Fri Mar 6 22:25:09 2015 @@ -0,0 +1,178 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- NewPage --> +<html lang="en"> +<head> +<!-- Generated by javadoc (version 1.7.0_67) on Fri Mar 06 23:14:53 CET 2015 --> +<title>Init</title> +<meta name="date" content="2015-03-06"> +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style"> +</head> +<body> +<script type="text/javascript"><!-- + if (location.href.indexOf('is-external=true') == -1) { + parent.document.title="Init"; + } +//--> +</script> +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<!-- ========= START OF TOP NAVBAR ======= --> +<div class="topNav"><a name="navbar_top"> +<!-- --> +</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/FactoryConfigurationAdapterService.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/Inject.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/Init.html" target="_top">Frames</a></li> +<li><a href="Init.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_top"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_top"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Required | </li> +<li>Optional</li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li>Element</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.annotation.api</div> +<h2 title="Annotation Type Init" class="title">Annotation Type Init</h2> +</div> +<div class="contentContainer"> +<div class="description"> +<ul class="blockList"> +<li class="blockList"> +<hr> +<br> +<pre>@Retention(value=CLASS) +@Target(value=METHOD) +public @interface <span class="strong">Init</span></pre> +<div class="block">Annotates a method which will be invoked when the Service is initializing. + All required dependencies are already injected before the annotated method is called, and + optional dependencies on class fields are injected with NullObjects if the optional + dependencies are not currently available.<p> + + If some dependencies are declared using a <b>named</b> @<a href="../../../../../../org/apache/felix/dm/annotation/api/ServiceDependency.html" title="annotation in org.apache.felix.dm.annotation.api"><code>ServiceDependency</code></a> annotation, + then the annotated method may optionally return a Map used to dynamically configure such + dependencies (Please refer to @<a href="../../../../../../org/apache/felix/dm/annotation/api/ServiceDependency.html#name()"><code>ServiceDependency.name()</code></a> attribute for more + information about this feature).<p> + + After the init method returns, the component is then invoked in the method annotated with + @<a href="../../../../../../org/apache/felix/dm/annotation/api/Start.html" title="annotation in org.apache.felix.dm.annotation.api"><code>Start</code></a>, in order to notify that the component is about to be registered into the OSGi + registry (if this one provides a service). However, you can take control of when the service is registered, + using the @<a href="../../../../../../org/apache/felix/dm/annotation/api/LifecycleController.html" title="annotation in org.apache.felix.dm.annotation.api"><code>LifecycleController</code></a> annotation). + + <h3>Usage Examples</h3> + Here, the "VideoPlayer" init method is called after the "log" dependency is injected. + <blockquote> + <pre> + + @Component + public class VideoPlayer { + @ServiceDependency + LogService log; + + @Init + void init() {} // initialize our service (the "log" dependency is already injected). + } + </pre> + </blockquote></div> +</li> +</ul> +</div> +</div> +<!-- ========= END OF CLASS DATA ========= --> +<!-- ======= START OF BOTTOM NAVBAR ====== --> +<div class="bottomNav"><a name="navbar_bottom"> +<!-- --> +</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/FactoryConfigurationAdapterService.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/Inject.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/Init.html" target="_top">Frames</a></li> +<li><a href="Init.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_bottom"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_bottom"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Required | </li> +<li>Optional</li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li>Element</li> +</ul> +</div> +<a name="skip-navbar_bottom"> +<!-- --> +</a></div> +<!-- ======== END OF BOTTOM NAVBAR ======= --> +</body> +</html> Added: felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Inject.html URL: http://svn.apache.org/viewvc/felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Inject.html?rev=1664735&view=auto ============================================================================== --- felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Inject.html (added) +++ felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Inject.html Fri Mar 6 22:25:09 2015 @@ -0,0 +1,194 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- NewPage --> +<html lang="en"> +<head> +<!-- Generated by javadoc (version 1.7.0_67) on Fri Mar 06 23:14:53 CET 2015 --> +<title>Inject</title> +<meta name="date" content="2015-03-06"> +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style"> +</head> +<body> +<script type="text/javascript"><!-- + if (location.href.indexOf('is-external=true') == -1) { + parent.document.title="Inject"; + } +//--> +</script> +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<!-- ========= START OF TOP NAVBAR ======= --> +<div class="topNav"><a name="navbar_top"> +<!-- --> +</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/Init.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/LifecycleController.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/Inject.html" target="_top">Frames</a></li> +<li><a href="Inject.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_top"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_top"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Required | </li> +<li>Optional</li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li>Element</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.annotation.api</div> +<h2 title="Annotation Type Inject" class="title">Annotation Type Inject</h2> +</div> +<div class="contentContainer"> +<div class="description"> +<ul class="blockList"> +<li class="blockList"> +<hr> +<br> +<pre>@Retention(value=CLASS) +@Target(value=FIELD) +public @interface <span class="strong">Inject</span></pre> +<div class="block">Inject classes in a component instance field. + The following injections are currently performed, depending on the type of the + field this annotation is applied on: + <ul> + <li>BundleContext: the bundle context of the bundle + <li>DependencyManager: the dependency manager instance + <li>Component: the component instance of the dependency manager + </ul> + + <p> + <h3>Usage Examples</h3> + <blockquote> + + <pre> + @Component + class X implements Z { + @Inject + BundleContext bundleContext; + + @Inject + Component component; + + @Inject + DependencyManager manager; + + OtherService otherService; + + @Init + void init() { + System.out.println("Bundle Context: " + bundleContext); + System.out.println("Manager: " + manager); + + // Use DM API for defining an extra service dependency + componnent.add(manager.createServiceDependency() + .setService(OtherService.class) + .setRequired(true) + .setInstanceBound(true)); + } + + @Start + void start() { + System.out.println("OtherService: " + otherService); + } + } + </pre> + </blockquote></div> +</li> +</ul> +</div> +</div> +<!-- ========= END OF CLASS DATA ========= --> +<!-- ======= START OF BOTTOM NAVBAR ====== --> +<div class="bottomNav"><a name="navbar_bottom"> +<!-- --> +</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/Init.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/LifecycleController.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/Inject.html" target="_top">Frames</a></li> +<li><a href="Inject.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_bottom"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_bottom"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Required | </li> +<li>Optional</li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li>Element</li> +</ul> +</div> +<a name="skip-navbar_bottom"> +<!-- --> +</a></div> +<!-- ======== END OF BOTTOM NAVBAR ======= --> +</body> +</html> Added: felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/LifecycleController.html URL: http://svn.apache.org/viewvc/felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/LifecycleController.html?rev=1664735&view=auto ============================================================================== --- felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/LifecycleController.html (added) +++ felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/LifecycleController.html Fri Mar 6 22:25:09 2015 @@ -0,0 +1,260 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- NewPage --> +<html lang="en"> +<head> +<!-- Generated by javadoc (version 1.7.0_67) on Fri Mar 06 23:14:53 CET 2015 --> +<title>LifecycleController</title> +<meta name="date" content="2015-03-06"> +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style"> +</head> +<body> +<script type="text/javascript"><!-- + if (location.href.indexOf('is-external=true') == -1) { + parent.document.title="LifecycleController"; + } +//--> +</script> +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<!-- ========= START OF TOP NAVBAR ======= --> +<div class="topNav"><a name="navbar_top"> +<!-- --> +</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/Inject.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/LifecycleController.html" target="_top">Frames</a></li> +<li><a href="LifecycleController.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_top"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_top"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Required | </li> +<li><a href="#annotation_type_optional_element_summary">Optional</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#annotation_type_element_detail">Element</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.annotation.api</div> +<h2 title="Annotation Type LifecycleController" class="title">Annotation Type LifecycleController</h2> +</div> +<div class="contentContainer"> +<div class="description"> +<ul class="blockList"> +<li class="blockList"> +<hr> +<br> +<pre>@Retention(value=CLASS) +@Target(value=FIELD) +public @interface <span class="strong">LifecycleController</span></pre> +<div class="block">Injects a <code>Runnable</code> object in a Service for starting/stopping it programatically. + By default, a Service is implicitly started when the service's bundle is started and when + all required dependencies are satisfied. However, it is sometimes required to programatically + take control of when the service is started or stopped. In this case, the injected <code>Runnable</code> + can be invoked in order to start/register (or stop/unregister) a Service at any time. When this annotation + is used, then the Service on which this annotation is applied is not activated by default, and you have to + call the injected Runnable yourself. + <p> + <h3>Usage Examples</h3> + <blockquote> + + <pre> + /** + * This Service will be registered programatically into the OSGi registry, using the LifecycleController annotation. + */ + @Service + class X implements Z { + @LifecycleController + Runnable starter + + @LifecycleController(start=false) + Runnable stopper + + @Init + void init() { + // At this point, all required dependencies are there, but we'll activate our service in 2 seconds ... + Thread t = new Thread() { + public void run() { + sleep(2000); + // start our "Z" service (our "start" method will be called, juste before service registration + starter.run(); + + sleep(2000); + // now, stop/unregister the "Z" service (we'll then be called in our stop() method + stopper.run(); + } + }; + t.start(); + } + + @Start + public void start() { + // This method will be called after we invoke our starter Runnable, and our service will be + // published after our method returns, as in normal case. + } + + @Stop + public void stop() { + // This method will be called after we invoke our "stop" Runnable, and our service will be + // unregistered before our method is invoked, as in normal case. Notice that the service won't + // be destroyed here, and the "starter" runnable can be re-invoked later. + } + } + </pre> + </blockquote></div> +</li> +</ul> +</div> +<div class="summary"> +<ul class="blockList"> +<li class="blockList"> +<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== --> +<ul class="blockList"> +<li class="blockList"><a name="annotation_type_optional_element_summary"> +<!-- --> +</a> +<h3>Optional Element Summary</h3> +<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Optional Element Summary table, listing optional elements, and an explanation"> +<caption><span>Optional Elements</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Optional Element and Description</th> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>boolean</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/LifecycleController.html#start()">start</a></strong></code> +<div class="block">Specifies the action to be performed when the Injected runnable is invoked.</div> +</td> +</tr> +</table> +</li> +</ul> +</li> +</ul> +</div> +<div class="details"> +<ul class="blockList"> +<li class="blockList"> +<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== --> +<ul class="blockList"> +<li class="blockList"><a name="annotation_type_element_detail"> +<!-- --> +</a> +<h3>Element Detail</h3> +<a name="start()"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>start</h4> +<pre>public abstract boolean start</pre> +<div class="block">Specifies the action to be performed when the Injected runnable is invoked. By default, the + Runnable will fire a Service Component activation, when invoked. If you specify this attribute + to false, then the Service Component will be stopped, when the runnable is invoked.</div> +<dl> +<dt>Default:</dt> +<dd>true</dd> +</dl> +</li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +</div> +<!-- ========= END OF CLASS DATA ========= --> +<!-- ======= START OF BOTTOM NAVBAR ====== --> +<div class="bottomNav"><a name="navbar_bottom"> +<!-- --> +</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/Inject.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/LifecycleController.html" target="_top">Frames</a></li> +<li><a href="LifecycleController.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_bottom"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_bottom"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Required | </li> +<li><a href="#annotation_type_optional_element_summary">Optional</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#annotation_type_element_detail">Element</a></li> +</ul> +</div> +<a name="skip-navbar_bottom"> +<!-- --> +</a></div> +<!-- ======== END OF BOTTOM NAVBAR ======= --> +</body> +</html> Added: felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Property.html URL: http://svn.apache.org/viewvc/felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Property.html?rev=1664735&view=auto ============================================================================== --- felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Property.html (added) +++ felix/site/trunk/content/apidocs/dependencymanager.annotations/4.0.0/org/apache/felix/dm/annotation/api/Property.html Fri Mar 6 22:25:09 2015 @@ -0,0 +1,487 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- NewPage --> +<html lang="en"> +<head> +<!-- Generated by javadoc (version 1.7.0_67) on Fri Mar 06 23:14:53 CET 2015 --> +<title>Property</title> +<meta name="date" content="2015-03-06"> +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style"> +</head> +<body> +<script type="text/javascript"><!-- + if (location.href.indexOf('is-external=true') == -1) { + parent.document.title="Property"; + } +//--> +</script> +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<!-- ========= START OF TOP NAVBAR ======= --> +<div class="topNav"><a name="navbar_top"> +<!-- --> +</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/LifecycleController.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/PropertyMetaData.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/Property.html" target="_top">Frames</a></li> +<li><a href="Property.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_top"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_top"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li><a href="#annotation_type_required_element_summary">Required</a> | </li> +<li><a href="#annotation_type_optional_element_summary">Optional</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#annotation_type_element_detail">Element</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.annotation.api</div> +<h2 title="Annotation Type Property" class="title">Annotation Type Property</h2> +</div> +<div class="contentContainer"> +<div class="description"> +<ul class="blockList"> +<li class="blockList"> +<hr> +<br> +<pre>@Retention(value=CLASS) +@Target(value=ANNOTATION_TYPE) +public @interface <span class="strong">Property</span></pre> +<div class="block">Annotation used to describe a property key-value(s) pair. It is used for example when + declaring <a href="../../../../../../org/apache/felix/dm/annotation/api/Component.html#properties()"><code>Component.properties()</code></a> attribute.<p> + + Property value(s) type is String by default, and the type is scalar if the value is single-valued, + or an array if the value is multi-valued. + + Eight primitive types are supported:<p> + <ul> + <li> String (default type) + <li> Long + <li> Double + <li> Float + <li> Integer + <li> Byte + <li> Boolean + <li> Short + </ul> + + You can specify the type of a property either using a combination of <code>value</code> and <code>type</code> attributes, + or using one of the <code>longValue/doubleValue/floatValue/intValue/byteValue/charValue/booleanValue/shortValue</code> attributes. + + Notice that you can also specify service properties dynamically by returning a Map from a method + annotated with <a href="../../../../../../org/apache/felix/dm/annotation/api/Start.html" title="annotation in org.apache.felix.dm.annotation.api"><code>Start</code></a>. + + <p> + <h3>Usage Examples</h3> + <blockquote> + + <pre> + @Component(properties={ + @Property(name="p1", value="v")}) // String value type (scalar) + @Property(name="p2", value={"s1", "s2")}) // Array of Strings + @Property(name="service.ranking", intValue=10) // Integer value type (scalar) + @Property(name="p3", intValue={1,2}) // Array of Integers + @Property(name="p3", value={"1"), type=Long.class}) // Long value (scalar) + class ServiceImpl implements Service { + } + </pre> + </blockquote></div> +</li> +</ul> +</div> +<div class="summary"> +<ul class="blockList"> +<li class="blockList"> +<!-- =========== ANNOTATION TYPE REQUIRED MEMBER SUMMARY =========== --> +<ul class="blockList"> +<li class="blockList"><a name="annotation_type_required_element_summary"> +<!-- --> +</a> +<h3>Required Element Summary</h3> +<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Required Element Summary table, listing required elements, and an explanation"> +<caption><span>Required Elements</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Required Element and Description</th> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#name()">name</a></strong></code> +<div class="block">Returns the property name.</div> +</td> +</tr> +</table> +</li> +</ul> +<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== --> +<ul class="blockList"> +<li class="blockList"><a name="annotation_type_optional_element_summary"> +<!-- --> +</a> +<h3>Optional Element Summary</h3> +<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Optional Element Summary table, listing optional elements, and an explanation"> +<caption><span>Optional Elements</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Optional Element and Description</th> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>boolean[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#booleanValue()">booleanValue</a></strong></code> +<div class="block">A Boolean value or an array of Boolean values.</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>byte[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#byteValue()">byteValue</a></strong></code> +<div class="block">A Byte value or an array of Byte values.</div> +</td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>char[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#charValue()">charValue</a></strong></code> +<div class="block">A Character value or an array of Character values.</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>double[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#doubleValue()">doubleValue</a></strong></code> +<div class="block">A Double value or an array of Double values.</div> +</td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>float[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#floatValue()">floatValue</a></strong></code> +<div class="block">A Float value or an array of Float values.</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>int[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#intValue()">intValue</a></strong></code> +<div class="block">An Integer value or an array of Integer values.</div> +</td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>long[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#longValue()">longValue</a></strong></code> +<div class="block">A Long value or an array of Long values.</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>short[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#shortValue()">shortValue</a></strong></code> +<div class="block">A Short value or an array of Short values.</div> +</td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>java.lang.Class<?></code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#type()">type</a></strong></code> +<div class="block">Specifies how the <a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#value()"><code>value()</code></a> or <a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#values()"><code>values()</code></a> attributes are parsed.</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>java.lang.String[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#value()">value</a></strong></code> +<div class="block">Returns the property value(s).</div> +</td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>java.lang.String[]</code></td> +<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#values()">values</a></strong></code> +<div class="block"><strong>Deprecated.</strong> +<div class="block"><i>use <a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#value()"><code>value()</code></a> attribute.</i></div> +</div> +</td> +</tr> +</table> +</li> +</ul> +</li> +</ul> +</div> +<div class="details"> +<ul class="blockList"> +<li class="blockList"> +<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== --> +<ul class="blockList"> +<li class="blockList"><a name="annotation_type_element_detail"> +<!-- --> +</a> +<h3>Element Detail</h3> +<a name="name()"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>name</h4> +<pre>public abstract java.lang.String name</pre> +<div class="block">Returns the property name.</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>this property name</dd></dl> +</li> +</ul> +<a name="value()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>value</h4> +<pre>public abstract java.lang.String[] value</pre> +<div class="block">Returns the property value(s). The property value(s) is (are) + parsed using the <code>valueOf</code> method of the class specified in the #type attribute + (which is <code>String</code> by default). When the property value is single-value, then + the value type is scalar (not an array). If the property value is multi-valued, then the value type + is an array of the type specified in the <a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#type()"><code>type()</code></a> attribute (String by default).</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>this property value(s).</dd></dl> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +<a name="type()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>type</h4> +<pre>public abstract java.lang.Class<?> type</pre> +<div class="block">Specifies how the <a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#value()"><code>value()</code></a> or <a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#values()"><code>values()</code></a> attributes are parsed.</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>the property value type (String by default) used to parse <a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#value()"><code>value()</code></a> or <a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#values()"><code>values()</code></a> + attribtues</dd></dl> +<dl> +<dt>Default:</dt> +<dd>java.lang.String.class</dd> +</dl> +</li> +</ul> +<a name="longValue()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>longValue</h4> +<pre>public abstract long[] longValue</pre> +<div class="block">A Long value or an array of Long values.</div> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +<a name="doubleValue()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>doubleValue</h4> +<pre>public abstract double[] doubleValue</pre> +<div class="block">A Double value or an array of Double values.</div> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +<a name="floatValue()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>floatValue</h4> +<pre>public abstract float[] floatValue</pre> +<div class="block">A Float value or an array of Float values.</div> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +<a name="intValue()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>intValue</h4> +<pre>public abstract int[] intValue</pre> +<div class="block">An Integer value or an array of Integer values.</div> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +<a name="byteValue()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>byteValue</h4> +<pre>public abstract byte[] byteValue</pre> +<div class="block">A Byte value or an array of Byte values.</div> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +<a name="charValue()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>charValue</h4> +<pre>public abstract char[] charValue</pre> +<div class="block">A Character value or an array of Character values.</div> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +<a name="booleanValue()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>booleanValue</h4> +<pre>public abstract boolean[] booleanValue</pre> +<div class="block">A Boolean value or an array of Boolean values.</div> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +<a name="shortValue()"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>shortValue</h4> +<pre>public abstract short[] shortValue</pre> +<div class="block">A Short value or an array of Short values.</div> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +<a name="values()"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>values</h4> +<pre>public abstract java.lang.String[] values</pre> +<div class="block"><span class="strong">Deprecated.</span> <i>use <a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html#value()"><code>value()</code></a> attribute.</i></div> +<div class="block">Returns an array of property values. + The property value are parsed using the <code>valueOf</code> method of the class specified in the #type attribute + (which is <code>String</code> by default).</div> +<dl><dt><span class="strong">Returns:</span></dt><dd>an array of property values.</dd></dl> +<dl> +<dt>Default:</dt> +<dd>{}</dd> +</dl> +</li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +</div> +<!-- ========= END OF CLASS DATA ========= --> +<!-- ======= START OF BOTTOM NAVBAR ====== --> +<div class="bottomNav"><a name="navbar_bottom"> +<!-- --> +</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/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/annotation/api/LifecycleController.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Prev Class</span></a></li> +<li><a href="../../../../../../org/apache/felix/dm/annotation/api/PropertyMetaData.html" title="annotation in org.apache.felix.dm.annotation.api"><span class="strong">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../../index.html?org/apache/felix/dm/annotation/api/Property.html" target="_top">Frames</a></li> +<li><a href="Property.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_bottom"> +<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_bottom"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li><a href="#annotation_type_required_element_summary">Required</a> | </li> +<li><a href="#annotation_type_optional_element_summary">Optional</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#annotation_type_element_detail">Element</a></li> +</ul> +</div> +<a name="skip-navbar_bottom"> +<!-- --> +</a></div> +<!-- ======== END OF BOTTOM NAVBAR ======= --> +</body> +</html>
