<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head>


  
    <title>Apache Felix - Event Admin Handlers</title>
    <link rel="stylesheet" href="event-admin-handlers_files/site.css" type="text/css" media="all">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head><body>
    <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="event-admin-handlers_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="event-admin-handlers_files/apache.png" border="0"></a></div></div>
    <div class="menu">
<ul>
	<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
	<li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
	<li><span class="nobr"><a href="http://felix.apache.org/site/downloads.cgi" title="Visit page outside Confluence" rel="nofollow">downloads<sup><img class="rendericon" src="event-admin-handlers_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
	<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
	<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
	<li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
	<li><span class="nobr"><a href="http://www.apache.org/" title="Visit page outside Confluence" rel="nofollow">asf<sup><img class="rendericon" src="event-admin-handlers_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
	<li><span class="nobr"><a href="http://www.apache.org/foundation/sponsorship.html" title="Visit page outside Confluence" rel="nofollow">sponsorship<sup><img class="rendericon" src="event-admin-handlers_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
	<li><span class="nobr"><a href="http://www.apache.org/foundation/thanks.html" title="Visit page outside Confluence" rel="nofollow">sponsors<sup><img class="rendericon" src="event-admin-handlers_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span>
<!-- ApacheCon Ad -->
<iframe src="event-admin-handlers_files/button.html" style="border-width: 0pt; float: left;" scrolling="no" width="135" frameborder="0" height="135"></iframe>
<p style="height: 100px;">
<!-- ApacheCon Ad -->
</p></li></ul> </div>
    <div class="main">
<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr>
<td class="confluenceTd" valign="top" width="80%">

<h1><a name="EventAdminHandlers-EventAdminHandlers"></a>Event Admin Handlers</h1>

<p>The goal of the Event Admin Handlers is to allow event
communications between iPOJO component instances. The implementation of
these handlers relies on an event admin services. It enables the iPOJO
component to listen to a list of topics and to receive all related
event. It also allows components to send events in an easy way.</p>

<p><b>UPDATE</b> : the 1.1.0-SNAPSHOT version has a new namespace : <tt>org.apache.felix.ipojo.handlers.event</tt> instead of <tt>org.apache.felix.ipojo.handlers.event.EventAdminHandler</tt></p>

<p>Hereafter is presented a small example of the metadata.xml file :</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;ipojo
    <span class="code-keyword">xmlns:ev</span>=<span class="code-quote">"org.apache.felix.ipojo.handlers.event.EventAdminHandler"</span>&gt;
	<span class="code-tag">&lt;component className=<span class="code-quote">"...MyComponent"</span>&gt;</span>
		&lt;ev:subscriber
			name=<span class="code-quote">"mySubscriber"</span>
			callback=<span class="code-quote">"receive"</span>
			topics=<span class="code-quote">"foo"</span>/&gt;
		&lt;ev:publisher
			name=<span class="code-quote">"myPublisher"</span>
			field=<span class="code-quote">"m_publisher"</span>
			topics=<span class="code-quote">"bar,nuts"</span>/&gt;
	<span class="code-tag">&lt;/component&gt;</span>
	<span class="code-tag">&lt;instance component=<span class="code-quote">"...MyComponent"</span>/&gt;</span>
<span class="code-tag">&lt;/ipojo&gt;</span></pre>
</div></div>
<p>You need to specify the namespace of the Handler. You can find here
one event subscriber (named mySubscriber) and one event publisher
(named myPublisher). In these handler configurations, the name
parameter is mandatory. The topics parameter is optional as it can be
specified in the instance configuration. The callback parameter of the
mySubscriber element is mandatory and indicates the method that handles
received events. In this case, this method must have a single argument
of type org.osgi.service.event.Event. The field parameter of the
myPublisher element indicates the field (of type
org.apache.felix.ipojo.handlers.event.publisher.Publisher) that is used
by the POJO to send events on the specified topics. All type compliance
will be checked by the handler at component instantiation time.</p>

<p>Here is an example of the component implementation, compatible with the given description :</p>
<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">import</span> org.apache.felix.ipojo.handlers.event.publisher.Publisher;
<span class="code-keyword">import</span> org.osgi.service.event.Event;

<span class="code-keyword">public</span> class MyComponent ... {
    <span class="code-keyword">private</span> Publisher m_publisher;
    <span class="code-keyword">public</span> void receive(Event e) {
       <span class="code-comment">// Event received
</span>       <span class="code-comment">// Do something with the event}
</span>
    <span class="code-keyword">public</span> void doSomething() {
        Dictionary e = <span class="code-keyword">new</span> Properties();
        <span class="code-comment">//...
</span>        <span class="code-comment">// Fill out the event
</span>
        <span class="code-comment">// Send event
</span>        m_publisher.send(e);
    }
}</pre>
</div></div>

<h1><a name="EventAdminHandlers-Download"></a>Download</h1>

<p>The event admin handlers (to send and receive events) are available in the Felix trunk in the iPOJO project. See the <a href="http://felix.apache.org/site/download.html" title="Download">Download</a> page to download and compile these sources.</p>

<h1><a name="EventAdminHandlers-Howdoesitwork?"></a>How does it work?</h1>

<p>The handler will parse the description provided in the metadata, and
register for you the EventHandler in the OSGi Registry. On one hand,
your POJO will receive each event through the handler. With this
handler you can specify different callback methods for different
topics. On the other side, the handler instantiates and injects
configured Publisher references in your POJO, so you can send events
transparently through these publishers.</p>

<h1><a name="EventAdminHandlers-EventHandlerSpecification"></a>EventHandler Specification</h1>

<p>Here you can find all configuration options of the EventAdmin
handler. As seen before, the handler contains two components : the
event subscriber and the event publisher. These components can be
configured, using several attributes, as described below. Some of these
attributes can be (re)defined in the instance configuration.</p>

<p>Handler namespace : org.apache.felix.ipojo.handlers.event.EventAdminHandler</p>

<h2><a name="EventAdminHandlers-Eventsubscriberattributes"></a>Event subscriber attributes</h2>

<table class="confluenceTable"><tbody>
<tr>
<th class="confluenceTh"> Attribute name </th>
<th class="confluenceTh"> Required </th>
<th class="confluenceTh"> Description </th>
</tr>
<tr>
<td class="confluenceTd"> <em>name</em> </td>
<td class="confluenceTd"> YES </td>
<td class="confluenceTd"> The name of the event subscriber, acting as a unique 			identifier. </td>
</tr>
<tr>
<td class="confluenceTd"> <em>callback</em> </td>
<td class="confluenceTd"> YES </td>
<td class="confluenceTd"> The name of the POJO's method that will be
called each time an event is received. This method takes only one
parameter, of typeorg.osgi.service.event.Eventby default, but this type
can be overridden by defining the data-key and/or the data-type
attributes. </td>
</tr>
<tr>
<td class="confluenceTd"> <em>topics</em> </td>
<td class="confluenceTd"> YES* </td>
<td class="confluenceTd"> The comma-separated-list of the topics that
the handler will listen to. Each event sent on a topic present in this
list will be sent to the specified callback method. </td>
</tr>
<tr>
<td class="confluenceTd"> <em>data-key</em> </td>
<td class="confluenceTd"> NO </td>
<td class="confluenceTd"> The data key is used when you want to receive
data events. This attribute's value is the key corresponding to the
received data in the event's dictionary. <br clear="all">
If you use this attribute, the parameter passed to the callback method
is the the value associated to this key, not the whole event. <br clear="all">
This attribute is generally used with the <em>data-type</em> attribute to specify the received object type. <br clear="all">
If an event is received and it does not contain such a key, it 			is ignored (with a warning message). </td>
</tr>
<tr>
<td class="confluenceTd"> <em>data-type</em> </td>
<td class="confluenceTd"> NO </td>
<td class="confluenceTd"> This attribute is associated to the data-key
attribute. It specifies the type of objects (java.lang.Objectby
default) that the callback expects. It is used to determine the unique
callback method (in case of multiple methods with the same name) and to
check type compliance at event reception. <br clear="all">
Data events that are not corresponding to the specified type 			will be ignored (with a warning message). </td>
</tr>
<tr>
<td class="confluenceTd"> <em>filter</em> </td>
<td class="confluenceTd"> NO* </td>
<td class="confluenceTd"> The event filter is used to filter incoming
events before sending them to the callback. The syntax of this field is
described in the OSGi EventAdmin Specification. If you don't specify a
filter, all events sent on the listened topics will be considered. </td>
</tr>
</tbody></table>
<p>* These attributes can be (re)defined in the instance configuration.</p>

<h2><a name="EventAdminHandlers-Eventpublisherattributes"></a>Event publisher attributes</h2>

<table class="confluenceTable"><tbody>
<tr>
<th class="confluenceTh"> Attribute name </th>
<th class="confluenceTh"> Required </th>
<th class="confluenceTh"> Description </th>
</tr>
<tr>
<td class="confluenceTd"> <em>name</em> </td>
<td class="confluenceTd"> YES </td>
<td class="confluenceTd"> The name of the event publisher, acting as a unique identifier. </td>
</tr>
<tr>
<td class="confluenceTd"> <em>field</em> </td>
<td class="confluenceTd"> YES </td>
<td class="confluenceTd"> The name of the POJO's field that will be
used to send events. The field is initialized at component
instantiation time. The type of the field must be :
org.apache.felix.ipojo.handlers.event.publisher.Publisher. Despite it
creates a dependency between the component code and the handler, this
system allows hiding the whole complexity of event sending. </td>
</tr>
<tr>
<td class="confluenceTd"> <em>topics</em> </td>
<td class="confluenceTd"> YES* </td>
<td class="confluenceTd"> The comma-separated-list of the topics on which events will be sent. </td>
</tr>
<tr>
<td class="confluenceTd"> <em>data-key</em> </td>
<td class="confluenceTd"> NO </td>
<td class="confluenceTd"> The data key is used when you want to send
data events. This attribute's value is the key, in the event's
dictionary, in which sent data are stored. When you use the <em>sendData</em> method of 			the Publisher, the given object is placed in the event dictionary, 			associated with the specified data-key. <br clear="all">
The default value of this attribute is user.data. </td>
</tr>
<tr>
<td class="confluenceTd"> <em>synchronous</em> </td>
<td class="confluenceTd"> NO </td>
<td class="confluenceTd"> Determines if event sending is synchronous or
not. By default, events are sent asynchronously, but you can specify
there the desired behaviour of the Publisher. <br clear="all">
The default value of this attribute is "false". </td>
</tr>
</tbody></table>
<p>* These attributes can be (re)defined in the instance configuration.</p>

<h2><a name="EventAdminHandlers-Instanceconfiguration"></a>Instance configuration</h2>

<p>Some of the described attributes can be (re)defined in the instance
configuration section of your metadata file. Its permits to configure
event management instance by instance. The following properties are
used by the handler :</p>
<ul>
	<li><em>event.topics</em> : overrides <em>topics</em> attribute, 	available for both subscribers and publishers configuration</li>
	<li><em>event.filter</em> : overrides <em>filter</em> attribute, 	available for subscribers configuration only.</li>
</ul>


<h2><a name="EventAdminHandlers-Publisherinterface"></a>Publisher interface</h2>

<p>The Publisher interface is the link between the component code and
the handler. It permits to publish events on the topics specified in
the component's description (or instance configuration). The
implemented methods are :</p>
<ul>
	<li>public void send<font color="#000000">(Dictionary 	content);</font><br>
This method is used to send a standard event, with the specified
content. Some specific properties may be added in the content to
satisfy EventAdmin specification. (e.g., event.topic).</li>
	<li>public void sendData<font color="#000000">(Object 	o);</font><br>
This method is the easier way to send 	data. The given object is placed in the event dictionary according 	to the <em>data-key</em> attribute (or its default value). Then, this 	dictionary is sent as a normal event.</li>
</ul>


<h1><a name="EventAdminHandlers-HandlerArchitecture"></a>Handler Architecture</h1>

<p>Here is shown the global architecture of the EventHandler : the
interactions between the user components (i.e., POJO), the handler and
the OSGi runtime environment.</p>

<p><img src="event-admin-handlers_files/handler-arch.png" align="absmiddle" border="0"></p>

<h1><a name="EventAdminHandlers-EventHandlerFeatures"></a>EventHandler Features</h1>

<p>In this section, you will find some examples of the handler's features.</p>

<h2><a name="EventAdminHandlers-Instancecustomization"></a>Instance customization</h2>

<p>As described in the 'Instance configuration' section, you can
(re)define some of the subscribers or publishers attributes. You can
notice that required attributes that are not defined in the component
description must be defined in the instance configuration section.
Hereafter is an example of an instance configuration of this handler :</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;ipojo
    <span class="code-keyword">xmlns:ev</span>=<span class="code-quote">"org.apache.felix.ipojo.handlers.event.EventAdminHandler"</span>&gt;
	<span class="code-tag">&lt;component className=<span class="code-quote">"...MyComponent"</span>&gt;</span>
		&lt;ev:subscriber
			name=<span class="code-quote">"mySubscriber"</span>
			callback=<span class="code-quote">"handleEvent"</span>/&gt;
		&lt;ev:publisher
			name=<span class="code-quote">"myPublisher"</span>
			field=<span class="code-quote">"m_publisher"</span>/&gt;
	<span class="code-tag">&lt;/component&gt;</span>
	<span class="code-tag">&lt;instance component=<span class="code-quote">"...MyComponent"</span>&gt;</span>
		<span class="code-tag">&lt;property name=<span class="code-quote">"event.topics"</span>&gt;</span>
			<span class="code-tag">&lt;property name=<span class="code-quote">"mySubscriber"</span> value=<span class="code-quote">"foo"</span>/&gt;</span>
			<span class="code-tag">&lt;property name=<span class="code-quote">"myPublisher"</span> value=<span class="code-quote">"bar,nuts"</span>/&gt;</span>
		<span class="code-tag">&lt;/property&gt;</span>
		<span class="code-tag">&lt;property name=<span class="code-quote">"event.filter"</span>&gt;</span>
			&lt;property name=<span class="code-quote">"mySubscriber"</span>
				    value=<span class="code-quote">"|((arg=Minibar)(arg=Coconuts))"</span>/&gt;
		<span class="code-tag">&lt;/property&gt;</span>
	<span class="code-tag">&lt;/instance&gt;</span>
<span class="code-tag">&lt;/ipojo&gt;</span></pre>
</div></div>

<h2><a name="EventAdminHandlers-Dataevents"></a>Data events</h2>

<p>One of the most important features of the EventHandler is the
capability of sending and receiving data events. You may know that the
OSGi EventAdmin Service allows bundles to send custom objects in
events, inserting them in the event's dictionary. The EventHandler
hides the dictionary manipulation and allows iPOJO components to
receive custom objects at any time.</p>

<p>First, you have define the <em>data-key</em> attribute in the
publisher configuration. Sent objects will be contained in the event
dictionary and are accessible with the "user.data" key.</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;ipojo
    <span class="code-keyword">xmlns:ev</span>=<span class="code-quote">"org.apache.felix.ipojo.handlers.event.EventAdminHandler"</span>&gt;
    <span class="code-tag">&lt;component className=<span class="code-quote">"...DataPublisher"</span>&gt;</span>
		&lt;ev:publisher
			name=<span class="code-quote">"myPublisher"</span>
			field=<span class="code-quote">"m_publisher"</span>
			topics=<span class="code-quote">"myTopic"</span>
			data-key=<span class="code-quote">"my.data"</span>/&gt;
	<span class="code-tag">&lt;/component&gt;</span>
	<span class="code-tag">&lt;instance component=<span class="code-quote">"...DataPublisher"</span>/&gt;</span>
<span class="code-tag">&lt;/ipojo&gt;</span></pre>
</div></div>
<p>Then you can use the <em>sendData</em> method of your configured publisher.</p>
<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">import</span> org.apache.felix.ipojo.handlers.event.publisher.Publisher;
<span class="code-comment">//...
</span><span class="code-keyword">public</span> class DataPublisher ... {
    <span class="code-keyword">private</span> Publisher m_publisher;

    <span class="code-keyword">public</span> void doSomething() {
      <span class="code-comment">// MyFavoriteType <span class="code-keyword">extends</span> MyFavoriteInterface
</span>      MyFavoriteType data = <span class="code-keyword">new</span> MyFavoriteType(...);
      <span class="code-comment">//...
</span>      <span class="code-comment">// Send a data event
</span>      m_publisher.sendData(data);
    }
}</pre>
</div></div>
<p>The second step is to configure an event subscriber to receive such events. The <em>data-key</em> attribute's  value of the subscriber must be the same than the publisher's one. The <em>data-type</em>describe
the type of received data events, and thus, must be compatible with the
sent object's type (i.e., super-class or inherited interface). Then you
can finally receive the sent object in the callback method. The
parameter type of the callback must be the same than the data-type
attribute value.</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">&lt;ipojo
   <span class="code-keyword">xmlns:ev</span>=<span class="code-quote">"org.apache.felix.ipojo.handlers.event.EventAdminHandler"</span>&gt;
	<span class="code-tag">&lt;component className=<span class="code-quote">"...DataEventSubscriber"</span>&gt;</span>
		&lt;ev:subscriber
			name=<span class="code-quote">"mySubscriber"</span>
			callback=<span class="code-quote">"handleData"</span>
			topics=<span class="code-quote">"myTopic"</span>
			data-key=<span class="code-quote">"my.data"</span>
			data-type=<span class="code-quote">"my.package.MyFavoriteInterface"</span>/&gt;
	<span class="code-tag">&lt;/component&gt;</span>
	<span class="code-tag">&lt;instance component=<span class="code-quote">"...DataEventSubscriber"</span>/&gt;</span>
<span class="code-tag">&lt;/ipojo&gt;</span></pre>
</div></div>
<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">import</span> my.<span class="code-keyword">package</span>.MyFavoriteInterface;
<span class="code-comment">//...
</span><span class="code-keyword">public</span> class DataEventSubscriber ... {
  <span class="code-keyword">public</span> void handleData(MyFavoriteInterface o) {
     <span class="code-comment">// <span class="code-object">Object</span> received
</span>     <span class="code-comment">//...
</span>   }
}</pre>
</div></div>

<h2><a name="EventAdminHandlers-Noteonsynchronouseventsending"></a>Note on synchronous event sending</h2>

<p>By default, events are sent using asynchronous sending (a.k.a.<em>post</em> in OSGi EventAdmin). You can use synchronous sending by defining the <em>synchronous</em> attribute of your publisher to true.</p>

<p>The behaviour of synchronous event sending is particular when you
specify several topics in the publisher description. The event is
synchronously sent to each topic, one by one. So when you return from
this function, you can be sure that the event has been delivered to
each topic.</p>

<h2><a name="EventAdminHandlers-Publisherinstanceinformation"></a>Publisher instance information</h2>

<p>All events sent by a publisher contains the name of the component
instance that sent them. Its enables to filter received events
depending the sender instance. The instance name is accessible in the
event dictionary by the key <em>publisher.instance.name</em>. Despite it goes against MOM principles, this property is useful to trace events and especially event sources.</p>


<h2><a name="EventAdminHandlers-Configuringthehandlerwithannotations\Newin1.1.0SNAPSHOT\"></a>Configuring the handler with annotations [New in 1.1.0-SNAPSHOT]</h2>

<p>It is possible to configure the handler with a simple annotations
available in the annotation pack ('annotation' project in the iPOJO
trunk). Here is an example of usage:</p>
<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">import</span> org.apache.felix.ipojo.annotations.Component;
<span class="code-keyword">import</span> org.apache.felix.ipojo.handlers.event.Subscriber;
<span class="code-keyword">import</span> org.osgi.service.event.Event;


@Component
<span class="code-keyword">public</span> class PubSub {
    @org.apache.felix.ipojo.handlers.event.Publisher(name=<span class="code-quote">"p1"</span>, synchronous=<span class="code-keyword">true</span>)
    org.apache.felix.ipojo.handlers.event.publisher.Publisher publisher1;
    
    @org.apache.felix.ipojo.handlers.event.Publisher(name=<span class="code-quote">"p2"</span>, synchronous=<span class="code-keyword">false</span>, topics=<span class="code-quote">"foo,bar"</span>, data_key=<span class="code-quote">"data"</span>)
    org.apache.felix.ipojo.handlers.event.publisher.Publisher publisher2;
    
    @org.apache.felix.ipojo.handlers.event.Publisher(name=<span class="code-quote">"p3"</span>, synchronous=<span class="code-keyword">true</span>, topics=<span class="code-quote">"bar"</span>)
    org.apache.felix.ipojo.handlers.event.publisher.Publisher publisher3;
    
    @Subscriber(name=<span class="code-quote">"s1"</span>, data_key=<span class="code-quote">"data"</span>)
    <span class="code-keyword">public</span> void receive1(<span class="code-object">Object</span> foo) {
        <span class="code-comment">// <span class="code-object">Process</span> event
</span>    }
    
    @Subscriber(name=<span class="code-quote">"s2"</span>, topics=<span class="code-quote">"foo,bar"</span>, filter=<span class="code-quote">"(foo=<span class="code-keyword">true</span>)"</span>)
    <span class="code-keyword">public</span> void receive2(Event foo) {
        <span class="code-comment">// <span class="code-object">Process</span> event
</span>    }
    
    
    @Subscriber(name=<span class="code-quote">"s3"</span>, topics=<span class="code-quote">"foo"</span>, data_key=<span class="code-quote">"data"</span>, data_type=<span class="code-quote">"java.lang.<span class="code-object">String</span>"</span>)
    <span class="code-keyword">public</span> void receive3(<span class="code-object">String</span> foo) {
        <span class="code-comment">// <span class="code-object">Process</span> event
</span>    }
}</pre>
</div></div></td>
<td class="confluenceTd" valign="top" width="20%">
<h6><a name="EventAdminHandlers-Overview"></a><b>Overview</b></h6>
<ul>
	<li><a href="http://felix.apache.org/site/apache-felix-ipojo.html" title="Apache Felix iPOJO">Home Page</a></li>
	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-feature-overview.html" title="Apache Felix iPOJO Feature Overview">iPOJO Feature Overview</a></li>
	<li><a href="http://felix.apache.org/site/download.html" title="Download">Download &amp; Install </a></li>
</ul>


<h6><a name="EventAdminHandlers-GettingStarted"></a><b>Getting Started</b></h6>
<ul>
	<li><a href="http://felix.apache.org/site/ipojo-in-10-minutes.html" title="iPOJO in 10 minutes">iPOJO in 10 minutes</a></li>
	<li><a href="http://felix.apache.org/site/how-to-use-ipojo-annotations.html" title="How to use iPOJO Annotations">How to use iPOJO Annotations</a></li>
	<li><a href="http://felix.apache.org/site/ipojo-hello-word-maven-based-tutorial.html" title="iPOJO Hello Word (Maven-Based) tutorial">iPOJO Hello Word (Maven-Based) tutorial</a></li>
	<li><a href="http://felix.apache.org/site/ipojo-advanced-tutorial.html" title="iPOJO Advanced Tutorial">iPOJO Advanced Tutorial</a></li>
	<li><a href="http://felix.apache.org/site/ipojo-composition-tutorial.html" title="iPOJO Composition Tutorial">iPOJO Composition Tutorial</a></li>
</ul>


<h6><a name="EventAdminHandlers-UserGuide"></a><b>User Guide</b></h6>
<ul>
	<li><a href="http://felix.apache.org/site/describing-components.html" title="Describing components">Describing components (handler list) </a></li>
	<li><a href="http://felix.apache.org/site/using-xml-schemas.html" title="Using XML Schemas">Using XML Schemas</a></li>
	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-testing-components.html" title="apache-felix-ipojo-testing-components">Testing components</a></li>
	<li><a href="http://felix.apache.org/site/ipojo-advanced-topics.html" title="iPOJO Advanced Topics">Advanced Topics</a></li>
	<li><a href="http://felix.apache.org/site/ipojo-faq.html" title="iPOJO FAQ">FAQ</a></li>
	<li><a href="http://felix.apache.org/site/ipojo-reference-card.html" title="iPOJO-Reference-Card">iPOJO Reference Card</a></li>
</ul>


<h6><a name="EventAdminHandlers-Tools"></a><b>Tools</b></h6>
<ul>
	<li><a href="http://felix.apache.org/site/ipojo-eclipse-plug-in.html" title="iPOJO Eclipse Plug-in">iPOJO Eclipse Plug-in</a></li>
	<li><a href="http://felix.apache.org/site/ipojo-ant-task.html" title="iPOJO Ant Task">iPOJO Ant Task</a></li>
	<li><a href="http://felix.apache.org/site/ipojo-maven-plug-in.html" title="iPOJO Maven Plug-in">iPOJO Maven Plug-in</a></li>
	<li><a href="http://felix.apache.org/site/ipojo-arch-command.html" title="iPOJO-Arch-Command">iPOJO Arch Command</a></li>
	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-junit4osgi.html" title="apache-felix-ipojo-junit4osgi">Junit4OSGi</a></li>
	<li><a href="http://felix.apache.org/site/ipojo-concepts-overview.html" title="iPOJO Concepts Overview">iPOJO concepts overview</a></li>
</ul>


<h6><a name="EventAdminHandlers-DeveloperGuide"></a><b>Developer Guide</b></h6>
<ul>
	<li>API: <span class="nobr"><a href="http://people.apache.org/%7Eclement/ipojo/api/1.0/" title="Visit page outside Confluence" rel="nofollow">1.0<sup><img class="rendericon" src="event-admin-handlers_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
	<li><a href="http://felix.apache.org/site/how-to-write-your-own-handler.html" title="How to write your own handler">How to write your own handler</a></li>
	<li><a href="http://felix.apache.org/site/how-to-use-ipojo-manipulation-metadata.html" title="How to use iPOJO Manipulation Metadata">How to use iPOJO Manipulation Metadata</a></li>
	<li><a href="http://felix.apache.org/site/dive-into-the-ipojo-manipulation-depths.html" title="Dive into the iPOJO Manipulation depths">Dive into the iPOJO Manipulation depths</a></li>
</ul>


<h6><a name="EventAdminHandlers-Misc&amp;Contact"></a><b>Misc &amp; Contact</b></h6>
<ul>
	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-issuestracker.html" title="apache-felix-ipojo-issuestracker">Issues Tracker</a></li>
	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-supportedvms.html" title="apache-felix-ipojo-supportedVMs">Supported JVMs</a></li>
	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-supportedosgi.html" title="apache-felix-ipojo-supportedOSGi">Supported OSGi Implementations</a></li>
	<li><span class="nobr"><a href="http://ipojo-dark-side.blogspot.com/" title="Visit page outside Confluence" rel="nofollow">iPOJO's Dark Side Blog<sup><img class="rendericon" src="event-admin-handlers_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
	<li><a href="http://felix.apache.org/site/future-ideas.html" title="Future Ideas">Future Ideas</a></li>
	<li><a href="http://felix.apache.org/site/contact.html" title="Contact">Contact</a></li>
	<li><a href="http://felix.apache.org/site/related-works.html" title="Related Works">Related Works</a></li>
	<li><a href="http://felix.apache.org/site/article-presentations.html" title="Article &amp; Presentations">Article &amp; Presentations</a></li>
</ul>


<hr>
<div class="" align="center">
<p><span class="nobr"><a href="http://cwiki.apache.org/confluence/createrssfeed.action?types=blogpost&amp;statuses=created&amp;statuses=modified&amp;spaces=FELIX&amp;labelString=iPOJO&amp;rssType=atom&amp;maxResults=10&amp;timeSpan=5&amp;publicFeed=true&amp;title=iPOJO%20Atom%20Feed" title="Stay tuned!" rel="nofollow"><img src="event-admin-handlers_files/feed-icon-32x32.png" align="absmiddle" border="0"><sup><img class="rendericon" src="event-admin-handlers_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></p></div>

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script><script src="event-admin-handlers_files/ga.js" type="text/javascript"></script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-1518442-4");
pageTracker._trackPageview();
</script>
</td></tr></tbody></table>
    </div>
  </body></html>