blob: 9f0fa7ee86216f4af99fe78c9da2c6d00076ff21 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (version 1.7.0_67) on Tue Mar 24 21:21:23 CET 2015 -->
<title>AspectService</title>
<meta name="date" content="2015-03-24">
<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="AspectService";
}
//-->
</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/AdapterService.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/BundleAdapterService.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/AspectService.html" target="_top">Frames</a></li>
<li><a href="AspectService.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#annotation_type_required_element_summary">Required</a>&nbsp;|&nbsp;</li>
<li><a href="#annotation_type_optional_element_summary">Optional</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</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 AspectService" class="title">Annotation Type AspectService</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">AspectService</span></pre>
<div class="block">Annotates an Aspect service. Aspects allow you to define an interceptor, or chain of interceptors
for a service (to add features like caching or logging, etc ...). The dependency manager intercepts
the original service, and allows you to execute some code before invoking the original service ...
The aspect will be applied to any service that matches the specified interface and filter and
will be registered with the same interface and properties as the original service, 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.<p>
<h3>Usage Examples</h3>
<p> Here, the AspectService is registered into the OSGI registry each time an InterceptedService
is found from the registry. The AspectService class intercepts the InterceptedService, and decorates
its "doWork()" method. This aspect uses a rank with value "10", meaning that it will intercept some
other eventual aspects with lower ranks. The Aspect also uses a service property (param=value), and
include eventual service properties found from the InterceptedService:<p>
<blockquote>
<pre>
&#64;AspectService(ranking=10), properties={&#64;Property(name="param", value="value")})
class AspectService implements InterceptedService {
// The service we are intercepting (injected by reflection)
protected InterceptedService intercepted;
public void doWork() {
intercepted.doWork();
}
}
</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">&nbsp;</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>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/AspectService.html#ranking()">ranking</a></strong></code>
<div class="block">Sets the ranking of this aspect.</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">&nbsp;</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/AspectService.html#added()">added</a></strong></code>
<div class="block">The callback method to be invoked when the original service is available.</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/AspectService.html#changed()">changed</a></strong></code>
<div class="block">The callback method to be invoked when the original service properties have changed.</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/AspectService.html#factoryMethod()">factoryMethod</a></strong></code>
<div class="block">Sets the static method used to create the AspectService implementation instance.</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/AspectService.html#field()">field</a></strong></code>
<div class="block">Sets the field name where to inject the original service.</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/AspectService.html#filter()">filter</a></strong></code>
<div class="block">Sets the filter condition to use with the service interface this aspect is applying to.</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/AspectService.html#properties()">properties</a></strong></code>
<div class="block">Sets Additional properties to use with the aspect service registration</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/AspectService.html#removed()">removed</a></strong></code>
<div class="block">The callback method to invoke when the service is lost.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.Class&lt;?&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/felix/dm/annotation/api/AspectService.html#service()">service</a></strong></code>
<div class="block">Sets the service interface to apply the aspect to.</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/AspectService.html#swap()">swap</a></strong></code>
<div class="block">name of the callback method to invoke on swap.</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="ranking()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ranking</h4>
<pre>public abstract&nbsp;int&nbsp;ranking</pre>
<div class="block">Sets the ranking of this aspect. Since aspects are chained, the ranking defines the order in which they are chained.
Chain ranking is implemented as a service ranking so service lookups automatically retrieve the top of the
chain.</div>
</li>
</ul>
<a name="service()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>service</h4>
<pre>public abstract&nbsp;java.lang.Class&lt;?&gt;&nbsp;service</pre>
<div class="block">Sets the service interface to apply the aspect to. By default, the directly implemented interface is used.</div>
<dl>
<dt>Default:</dt>
<dd>java.lang.Object.class</dd>
</dl>
</li>
</ul>
<a name="filter()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>filter</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;filter</pre>
<div class="block">Sets the filter condition to use with the service interface this aspect is applying to.</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&nbsp;<a href="../../../../../../org/apache/felix/dm/annotation/api/Property.html" title="annotation in org.apache.felix.dm.annotation.api">Property</a>[]&nbsp;properties</pre>
<div class="block">Sets Additional properties to use with the aspect service registration</div>
<dl>
<dt>Default:</dt>
<dd>{}</dd>
</dl>
</li>
</ul>
<a name="field()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>field</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;field</pre>
<div class="block">Sets the field name where to inject the original service. By default, the original service is injected
in any attributes in the aspect implementation that are of the same type as the aspect interface.</div>
<dl>
<dt>Default:</dt>
<dd>""</dd>
</dl>
</li>
</ul>
<a name="added()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>added</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;added</pre>
<div class="block">The callback method to be invoked when the original service is available. This attribute can't be mixed with
the field attribute.</div>
<dl>
<dt>Default:</dt>
<dd>""</dd>
</dl>
</li>
</ul>
<a name="changed()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>changed</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;changed</pre>
<div class="block">The callback method to be invoked when the original service properties have changed. When this attribute is used,
then the added attribute must also be used.</div>
<dl>
<dt>Default:</dt>
<dd>""</dd>
</dl>
</li>
</ul>
<a name="removed()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removed</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;removed</pre>
<div class="block">The callback method to invoke when the service is lost. When this attribute is used, then the added attribute
must also be used.</div>
<dl>
<dt>Default:</dt>
<dd>""</dd>
</dl>
</li>
</ul>
<a name="swap()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>swap</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;swap</pre>
<div class="block">name of the callback method to invoke on swap.</div>
<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&nbsp;java.lang.String&nbsp;factoryMethod</pre>
<div class="block">Sets the static method used to create the AspectService implementation instance. The
default constructor of the annotated class is used. The factoryMethod can be used to provide a specific
aspect implements, like a DynamicProxy.</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/AdapterService.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/BundleAdapterService.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/AspectService.html" target="_top">Frames</a></li>
<li><a href="AspectService.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#annotation_type_required_element_summary">Required</a>&nbsp;|&nbsp;</li>
<li><a href="#annotation_type_optional_element_summary">Optional</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</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>