Updates doc folders with new changelog files and update embedded documentation
Adds the ASM licence in the manipulator project
The maven-ipojo-plugin's architype targets the latest released version.
Adds a visibility test in the composite test suite.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@703957 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ipojo/handler/eventadmin/NOTICE b/ipojo/handler/eventadmin/NOTICE
index 6b1c994..ceb3d18 100644
--- a/ipojo/handler/eventadmin/NOTICE
+++ b/ipojo/handler/eventadmin/NOTICE
@@ -7,6 +7,11 @@
The Apache Software Foundation (http://www.apache.org/).
Licensed under the Apache License 2.0.
+This product includes software developed at
+The OSGi Alliance (http://www.osgi.org/).
+Copyright 2006 The OSGi Alliance.
+Licensed under the Apache License 2.0.
+
II. Used Software
This product uses software developed at
diff --git a/ipojo/handler/eventadmin/doc/changelog.txt b/ipojo/handler/eventadmin/doc/changelog.txt
new file mode 100644
index 0000000..9a1e075
--- /dev/null
+++ b/ipojo/handler/eventadmin/doc/changelog.txt
@@ -0,0 +1,3 @@
+Version 1.0.0
+-------------
+ * Initial release (XXXX-XX-XX)
\ No newline at end of file
diff --git a/ipojo/handler/eventadmin/doc/event-admin-handlers.data/handler-arch.png b/ipojo/handler/eventadmin/doc/event-admin-handlers.data/handler-arch.png
new file mode 100644
index 0000000..ebd5662
--- /dev/null
+++ b/ipojo/handler/eventadmin/doc/event-admin-handlers.data/handler-arch.png
Binary files differ
diff --git a/ipojo/handler/eventadmin/doc/event-admin-handlers.html b/ipojo/handler/eventadmin/doc/event-admin-handlers.html
new file mode 100644
index 0000000..a789ee0
--- /dev/null
+++ b/ipojo/handler/eventadmin/doc/event-admin-handlers.html
@@ -0,0 +1,365 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+
+<!-- Mirrored Site: felix.apache.org. File: /site/event-admin-handlers.html. Date: Mon, 13 Oct 2008 06:53:08 GMT -->
+<HEAD>
+ <TITLE>Apache Felix - Event Admin Handlers</TITLE>
+ <LINK rel="stylesheet" href="media.data/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="index.html"><IMG border="0" alt="Apache Felix" src="media.data/logo.png"></A></DIV><DIV class="header"><A href="http://www.apache.org/"><IMG border="0" alt="Apache" src="media.data/apache.png"></A></DIV></DIV>
+ <DIV class="menu">
+ <UL>
+ <LI><A href="news.html" title="news">news</A></LI>
+ <LI><A href="license.html" title="license">license</A></LI>
+ <LI><SPAN class="nobr"><A href="downloads.html" title="Visit page outside Confluence" rel="nofollow">downloads<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></LI>
+ <LI><A href="documentation.html" title="documentation">documentation</A></LI>
+ <LI><A href="mailinglists.html" title="mailinglists">mailing lists</A></LI>
+ <LI><A href="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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN>
+<!-- ApacheCon Ad -->
+<IFRAME src="http://www.apache.org/ads/button.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="135"></IFRAME>
+<P style="height: 100px">
+<!-- ApacheCon Ad --></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>Hereafter is presented a small example of the metadata.xml file :</P>
+<DIV class="code"><DIV class="codeContent">
+<PRE class="code-xml"><ipojo
+ <SPAN class="code-keyword">xmlns:ev</SPAN>=<SPAN class="code-quote">"org.apache.felix.ipojo.handlers.event.EventAdminHandler"</SPAN>>
+ <SPAN class="code-tag"><component className=<SPAN class="code-quote">"...MyComponent"</SPAN>></SPAN>
+ <ev:subscriber
+ name=<SPAN class="code-quote">"mySubscriber"</SPAN>
+ callback=<SPAN class="code-quote">"receive"</SPAN>
+ topics=<SPAN class="code-quote">"foo"</SPAN>/>
+ <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>/>
+ <SPAN class="code-tag"></component></SPAN>
+ <SPAN class="code-tag"><instance component=<SPAN class="code-quote">"...MyComponent"</SPAN>/></SPAN>
+<SPAN class="code-tag"></ipojo></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="download.html" title="Download">Download</A> page to download and compile these sources.</P>
+
+<H1><A name="EventAdminHandlers-Howdoesitwork%3F"></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. All subscribers that are listening to one of these topics will receive the events. </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.data/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"><ipojo
+ <SPAN class="code-keyword">xmlns:ev</SPAN>=<SPAN class="code-quote">"org.apache.felix.ipojo.handlers.event.EventAdminHandler"</SPAN>>
+ <SPAN class="code-tag"><component className=<SPAN class="code-quote">"...MyComponent"</SPAN>></SPAN>
+ <ev:subscriber
+ name=<SPAN class="code-quote">"mySubscriber"</SPAN>
+ callback=<SPAN class="code-quote">"handleEvent"</SPAN>/>
+ <ev:publisher
+ name=<SPAN class="code-quote">"myPublisher"</SPAN>
+ field=<SPAN class="code-quote">"m_publisher"</SPAN>/>
+ <SPAN class="code-tag"></component></SPAN>
+ <SPAN class="code-tag"><instance component=<SPAN class="code-quote">"...MyComponent"</SPAN>></SPAN>
+ <SPAN class="code-tag"><property name=<SPAN class="code-quote">"event.topics"</SPAN>></SPAN>
+ <SPAN class="code-tag"><property name=<SPAN class="code-quote">"mySubscriber"</SPAN> value=<SPAN class="code-quote">"foo"</SPAN>/></SPAN>
+ <SPAN class="code-tag"><property name=<SPAN class="code-quote">"myPublisher"</SPAN> value=<SPAN class="code-quote">"bar,nuts"</SPAN>/></SPAN>
+ <SPAN class="code-tag"></property></SPAN>
+ <SPAN class="code-tag"><property name=<SPAN class="code-quote">"event.filter"</SPAN>></SPAN>
+ <property name=<SPAN class="code-quote">"mySubscriber"</SPAN>
+ value=<SPAN class="code-quote">"|((arg=Minibar)(arg=Coconuts))"</SPAN>/>
+ <SPAN class="code-tag"></property></SPAN>
+ <SPAN class="code-tag"></instance></SPAN>
+<SPAN class="code-tag"></ipojo></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"><ipojo
+ <SPAN class="code-keyword">xmlns:ev</SPAN>=<SPAN class="code-quote">"org.apache.felix.ipojo.handlers.event.EventAdminHandler"</SPAN>>
+ <SPAN class="code-tag"><component className=<SPAN class="code-quote">"...DataPublisher"</SPAN>></SPAN>
+ <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>/>
+ <SPAN class="code-tag"></component></SPAN>
+ <SPAN class="code-tag"><instance component=<SPAN class="code-quote">"...DataPublisher"</SPAN>/></SPAN>
+<SPAN class="code-tag"></ipojo></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"><ipojo
+ <SPAN class="code-keyword">xmlns:ev</SPAN>=<SPAN class="code-quote">"org.apache.felix.ipojo.handlers.event.EventAdminHandler"</SPAN>>
+ <SPAN class="code-tag"><component className=<SPAN class="code-quote">"...DataEventSubscriber"</SPAN>></SPAN>
+ <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>/>
+ <SPAN class="code-tag"></component></SPAN>
+ <SPAN class="code-tag"><instance component=<SPAN class="code-quote">"...DataEventSubscriber"</SPAN>/></SPAN>
+<SPAN class="code-tag"></ipojo></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></TD>
+<TD class="confluenceTd" valign="top" width="20%">
+<H6><A name="EventAdminHandlers-Overview"></A><B>Overview</B></H6>
+<UL>
+ <LI><A href="apache-felix-ipojo.html" title="Apache Felix iPOJO">Home Page</A></LI>
+ <LI><A href="apache-felix-ipojo-feature-overview.html" title="Apache Felix iPOJO Feature Overview">iPOJO Feature Overview</A></LI>
+ <LI><A href="download.html" title="Download">Download & Install </A></LI>
+</UL>
+
+
+<H6><A name="EventAdminHandlers-GettingStarted"></A><B>Getting Started</B></H6>
+<UL>
+ <LI><A href="ipojo-in-10-minutes.html" title="iPOJO in 10 minutes">iPOJO in 10 minutes</A></LI>
+ <LI><A href="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="ipojo-advanced-tutorial.html" title="iPOJO Advanced Tutorial">iPOJO Advanced Tutorial</A></LI>
+</UL>
+
+
+<H6><A name="EventAdminHandlers-UserGuide"></A><B>User Guide</B></H6>
+<UL>
+ <LI><A href="describing-components.html" title="Describing components">Describing components (handler list) </A></LI>
+ <LI><A href="how-to-use-ipojo-annotations.html" title="How to use iPOJO Annotations">How to use iPOJO Annotations</A></LI>
+ <LI><A href="using-xml-schemas.html" title="Using XML Schemas">Using XML Schemas</A></LI>
+ <LI><A href="ipojo-advanced-topics.html" title="iPOJO Advanced Topics">Advanced Topics</A></LI>
+ <LI><A href="ipojo-faq.html" title="iPOJO FAQ">FAQ</A></LI>
+</UL>
+
+
+<H6><A name="EventAdminHandlers-Tools"></A><B>Tools</B></H6>
+<UL>
+ <LI><A href="ipojo-eclipse-plug-in.html" title="iPOJO Eclipse Plug-in">iPOJO Eclipse Plug-in</A></LI>
+ <LI><A href="ipojo-ant-task.html" title="iPOJO Ant Task">iPOJO Ant Task</A></LI>
+ <LI><A href="ipojo-maven-plug-in.html" title="iPOJO Maven Plug-in">iPOJO Maven Plug-in</A></LI>
+ <LI><A href="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/~clement/ipojo/api/0.8/" title="Visit page outside Confluence" rel="nofollow">0.8<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></LI>
+ <LI><A href="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="how-to-use-ipojo-manipulation-metadata.html" title="How to use iPOJO Manipulation Metadata">How to use iPOJO Manipulation Metadata</A></LI>
+</UL>
+
+
+<H6><A name="EventAdminHandlers-Misc%26Contact"></A><B>Misc & Contact</B></H6>
+<UL>
+ <LI><A href="apache-felix-ipojo-issuestracker.html" title="apache-felix-ipojo-issuestracker">Issues Tracker</A></LI>
+ <LI><A href="apache-felix-ipojo-supportedvms.html" title="apache-felix-ipojo-supportedVMs">Supported JVMs</A></LI>
+ <LI><A href="apache-felix-ipojo-supportedosgi.html" title="apache-felix-ipojo-supportedOSGi">Supported OSGi Implementations</A></LI>
+ <LI><A href="future-ideas.html" title="Future Ideas">Future Ideas</A></LI>
+ <LI><A href="contact.html" title="Contact">Contact</A></LI>
+ <LI><A href="related-works.html" title="Related Works">Related Works</A></LI>
+ <LI><A href="article-presentations.html" title="Article & Presentations">Article & Presentations</A></LI>
+</UL>
+
+
+<HR>
+<DIV class="" align="center">
+<P><SPAN class="nobr"><A href="http://cwiki.apache.org/confluence/createrssfeed.action?types=blogpost&statuses=created&statuses=modified&spaces=FELIX&labelString=iPOJO&rssType=atom&maxResults=10&timeSpan=5&publicFeed=true&title=iPOJO%20Atom%20Feed" title="Stay tuned!" rel="nofollow"><IMG src="../../cwiki.apache.org/confluence/images/icons/feed-icon-32x32.png" align="absmiddle" border="0"><SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></P></DIV></TD></TR></TBODY></TABLE>
+ </DIV>
+ </BODY>
+
+<!-- Mirrored Site: felix.apache.org. File: /site/event-admin-handlers.html. Date: Mon, 13 Oct 2008 06:53:08 GMT -->
+</HTML>
diff --git a/ipojo/handler/eventadmin/doc/media.data/apache.png b/ipojo/handler/eventadmin/doc/media.data/apache.png
new file mode 100644
index 0000000..5132f65
--- /dev/null
+++ b/ipojo/handler/eventadmin/doc/media.data/apache.png
Binary files differ
diff --git a/ipojo/handler/eventadmin/doc/media.data/gradient.png b/ipojo/handler/eventadmin/doc/media.data/gradient.png
new file mode 100644
index 0000000..6ddc10b
--- /dev/null
+++ b/ipojo/handler/eventadmin/doc/media.data/gradient.png
Binary files differ
diff --git a/ipojo/handler/eventadmin/doc/media.data/logo.png b/ipojo/handler/eventadmin/doc/media.data/logo.png
new file mode 100644
index 0000000..dccbddc
--- /dev/null
+++ b/ipojo/handler/eventadmin/doc/media.data/logo.png
Binary files differ
diff --git a/ipojo/handler/eventadmin/doc/media.data/site.css b/ipojo/handler/eventadmin/doc/media.data/site.css
new file mode 100644
index 0000000..3c83712
--- /dev/null
+++ b/ipojo/handler/eventadmin/doc/media.data/site.css
@@ -0,0 +1,25 @@
+/* @override http://felix.apache.org/site/media.data/site.css */
+
+body { background-color: #ffffff; color: #3b3b3b; font-family: Tahoma, Arial, sans-serif; font-size: 10pt; line-height: 140% }
+h1, h2, h3, h4, h5, h6 { font-weight: normal; color: #000000; line-height: 100%; margin-top: 0px}
+h1 { font-size: 200% }
+h2 { font-size: 175% }
+h3 { font-size: 150% }
+h4 { font-size: 140% }
+h5 { font-size: 130% }
+h6 { font-size: 120% }
+a { color: #1980af }
+a:visited { color: #1980af }
+a:hover { color: #1faae9 }
+.title { position: absolute; left: 1px; right: 1px; top:25px; height: 81px; background: url(gradient.png) repeat-x; background-position: bottom; }
+.logo { position: absolute; width: 15em; height: 81px; text-align: center; }
+.header { text-align: right; margin-right: 20pt; margin-top: 30pt;}
+.menu { border-top: 10px solid #f9bb00; position: absolute; top: 107px; left: 1px; width: 15em; bottom: 0px; padding: 0px; background-color: #fcfcfc }
+.menu ul { background-color: #fdf5d9; list-style: none; padding-left: 4em; margin-top: 0px; padding-top: 2em; padding-bottom: 2em; margin-left: 0px; color: #4a4a43}
+.menu a { text-decoration: none; color: #4a4a43 }
+.main { position: absolute; border-top: 10px solid #cde0ea; top: 107px; left: 15em; right: 1px; margin-left: 2px; padding-right: 4em; padding-left: 1em; padding-top: 1em;}
+.code { background-color: #eeeeee; border: solid 1px black; padding: 0.5em }
+.code-keyword { color: #880000 }
+.code-quote { color: #008800 }
+.code-object { color: #0000dd }
+.code-java { margin: 0em }
\ No newline at end of file
diff --git a/ipojo/handler/extender/doc/changelog.txt b/ipojo/handler/extender/doc/changelog.txt
index 8ca4f32..1a2cab1 100644
--- a/ipojo/handler/extender/doc/changelog.txt
+++ b/ipojo/handler/extender/doc/changelog.txt
@@ -1,3 +1,12 @@
+Changes from 0.8.0 to 1.0.0
+---------------------------
+** Bug
+ * [FELIX-613] - Extender pattern handler issue when bundles are leaving (2008-07-03)
+
+** Improvement
+ * [FELIX-673] - Provide OBR description to iPOJO bundles (2008-08-07)
+ * [FELIX-716] - Provide XML schemas for iPOJO descriptors (2008-09-09)
+
Version 0.8.0
-------------
-* [2008-05-16] Initial release
\ No newline at end of file
+ * Initial release (2008-05-16)
\ No newline at end of file
diff --git a/ipojo/handler/extender/doc/extender-pattern-handler.data/extender.png b/ipojo/handler/extender/doc/extender-pattern-handler.data/extender.png
new file mode 100644
index 0000000..cb334c9
--- /dev/null
+++ b/ipojo/handler/extender/doc/extender-pattern-handler.data/extender.png
Binary files differ
diff --git a/ipojo/handler/extender/doc/extender-pattern-handler.html b/ipojo/handler/extender/doc/extender-pattern-handler.html
new file mode 100644
index 0000000..0900e4e
--- /dev/null
+++ b/ipojo/handler/extender/doc/extender-pattern-handler.html
@@ -0,0 +1,162 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+
+<!-- Mirrored Site: felix.apache.org. File: /site/extender-pattern-handler.html. Date: Mon, 13 Oct 2008 06:52:58 GMT -->
+<HEAD>
+ <TITLE>Apache Felix - Extender Pattern Handler</TITLE>
+ <LINK rel="stylesheet" href="media.data/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="index.html"><IMG border="0" alt="Apache Felix" src="media.data/logo.png"></A></DIV><DIV class="header"><A href="http://www.apache.org/"><IMG border="0" alt="Apache" src="media.data/apache.png"></A></DIV></DIV>
+ <DIV class="menu">
+ <UL>
+ <LI><A href="news.html" title="news">news</A></LI>
+ <LI><A href="license.html" title="license">license</A></LI>
+ <LI><SPAN class="nobr"><A href="downloads.html" title="Visit page outside Confluence" rel="nofollow">downloads<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></LI>
+ <LI><A href="documentation.html" title="documentation">documentation</A></LI>
+ <LI><A href="mailinglists.html" title="mailinglists">mailing lists</A></LI>
+ <LI><A href="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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN>
+<!-- ApacheCon Ad -->
+<IFRAME src="http://www.apache.org/ads/button.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="135"></IFRAME>
+<P style="height: 100px">
+<!-- ApacheCon Ad --></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="ExtenderPatternHandler-Theextenderpatternhandler"></A>The extender pattern handler</H1>
+<P>The objective of this handler is to simplify the development of extender-based architecture. This architecture-style is based on two different roles:</P>
+<UL>
+ <LI>The extender</LI>
+ <LI>The extension</LI>
+</UL>
+
+
+<P><IMG src="extender-pattern-handler.data/extender.png" align="absmiddle" border="0"><BR>
+The relation is basically a 1..n relation. The extender tracks extensions. The particularity of this architecture-style is that extensions are packaged in different bundles. An extension is detected by analyzing the bundle. Indeed these bundles can have a special mark in their manifest of a special file...<BR>
+Implementing an extender pattern could be complex as the extender needs to track these marks dynamically. When a bundle starts, it needs to look at the mark. Then a bundle leave, the extender must release all object created from this bundle.<BR>
+This handler tracks bundle for you based on the specified required mark. At each time a matching bundle appears or disappears, a callback is invoked. The mark is currently a header in the bundle manifest.<BR>
+Nowadays, a lot of frameworks use this pattern such as iPOJO it-self (to find both bundles containing components and bundles adding a new implementation type), Spring-DM ...</P>
+
+<H2><A name="ExtenderPatternHandler-Usingthehandler"></A>Using the handler</H2>
+<P>First of all, you need to configure the component type to use the handler such as:</P>
+<DIV class="code"><DIV class="codeContent">
+<PRE class="code-xml"><SPAN class="code-tag"><iPOJO <SPAN class="code-keyword">xmlns:extender</SPAN>=<SPAN class="code-quote">"org.apache.felix.ipojo.extender"</SPAN>></SPAN>
+ <Component
+ className=<SPAN class="code-quote">"org.apache.felix.ipojo.extender.myextender"</SPAN>>
+
+ <SPAN class="code-tag"><!—Extender Pattern handler configuration --></SPAN>
+ <extender:extender
+ extension=<SPAN class="code-quote">"My-Extension"</SPAN>
+ onArrival=<SPAN class="code-quote">"onBundleArrival"</SPAN>
+ onDeparture=<SPAN class="code-quote">"onBundleDeparture"</SPAN>
+ />
+
+ <SPAN class="code-tag"><callback transition=<SPAN class="code-quote">"invalidate"</SPAN> method=<SPAN class="code-quote">"stopping"</SPAN> /></SPAN>
+ <SPAN class="code-tag"><callback transition=<SPAN class="code-quote">"validate"</SPAN> method=<SPAN class="code-quote">"starting"</SPAN> /></SPAN>
+ <SPAN class="code-tag"><provides /></SPAN>
+ <SPAN class="code-tag"></Component></SPAN>
+<SPAN class="code-tag"></iPOJO></SPAN></PRE>
+</DIV></DIV>
+<P>Notice that, this handler is an external handler. So, it uses the "org.apache.felix.ipojo.extender" namespace.<BR>
+Once described, you can implement your component. The methods specified methods will be called when a matching bundle arrives or leaves.<BR>
+In the previous example, these methods could be: </P>
+<DIV class="code"><DIV class="codeContent">
+<PRE class="code-java">void onBundleArrival(Bundle bundle, <SPAN class="code-object">String</SPAN> header) {
+<SPAN class="code-comment">// Do something
+</SPAN>}
+
+void onBundleDeparture(Bundle bundle) {
+ <SPAN class="code-comment">// Do something
+</SPAN>}</PRE>
+</DIV></DIV>
+<P>Notice the different signatures of the methods. The arrival method is called with the arriving bundle and the matching header value (i.e. the value of the My-Extension header of the bundle manifest). The departure method just receives the leaving bundle.</P>
+<H2><A name="ExtenderPatternHandler-Configuration"></A>Configuration</H2>
+<P>The handler has only three mandatory attributes:</P>
+<UL>
+ <LI>Extension: declaring the looked manifest header.</LI>
+ <LI>onArrival: declaring the method to invoke when a matching bundle arrives</LI>
+ <LI>onDeparture: declaring the method to invoke when a matching bundle leaves</LI>
+</UL>
+
+
+<TABLE cellpadding="5" width="85%" cellspacing="8px" class="noteMacro" border="0" align="center"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="../../cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>
+<P>The implementation will be notified of arrivals and departures despite the instance is invalid. Indeed, the implementation must release all objects created from another bundle as soon it leaves.</P></TD></TR></TABLE>
+
+<H2><A name="ExtenderPatternHandler-Download"></A>Download</H2>
+<P>The handler is available on the <A href="download.html" title="Download">download</A> page.<BR>
+Sources are available on the Felix trunk at the following location: <SPAN class="nobr"><A href="http://svn.apache.org/repos/asf/felix/trunk/ipojo/handler/extender/" title="Visit page outside Confluence" rel="nofollow">http://svn.apache.org/repos/asf/felix/trunk/ipojo/handler/extender/<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></P>
+
+<H2><A name="ExtenderPatternHandler-Amorerealisticexample"></A>A more realistic example</H2>
+<P>The Junit4OSGi framework, available <SPAN class="nobr"><A href="https://svn.apache.org/repos/asf/felix/trunk/ipojo/examples/junit4osgi" title="Visit page outside Confluence" rel="nofollow">here<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN> , uses this handler to track Junit Test Suite offered by the installed bundles. The Junit4Osgi bundle has a component using this handler to be notified when a bundle with the "Test-Suite" header appears or leaves.</P>
+</TD>
+<TD class="confluenceTd" valign="top" width="20%">
+<H6><A name="ExtenderPatternHandler-Overview"></A><B>Overview</B></H6>
+<UL>
+ <LI><A href="apache-felix-ipojo.html" title="Apache Felix iPOJO">Home Page</A></LI>
+ <LI><A href="apache-felix-ipojo-feature-overview.html" title="Apache Felix iPOJO Feature Overview">iPOJO Feature Overview</A></LI>
+ <LI><A href="download.html" title="Download">Download & Install </A></LI>
+</UL>
+
+
+<H6><A name="ExtenderPatternHandler-GettingStarted"></A><B>Getting Started</B></H6>
+<UL>
+ <LI><A href="ipojo-in-10-minutes.html" title="iPOJO in 10 minutes">iPOJO in 10 minutes</A></LI>
+ <LI><A href="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="ipojo-advanced-tutorial.html" title="iPOJO Advanced Tutorial">iPOJO Advanced Tutorial</A></LI>
+</UL>
+
+
+<H6><A name="ExtenderPatternHandler-UserGuide"></A><B>User Guide</B></H6>
+<UL>
+ <LI><A href="describing-components.html" title="Describing components">Describing components (handler list) </A></LI>
+ <LI><A href="how-to-use-ipojo-annotations.html" title="How to use iPOJO Annotations">How to use iPOJO Annotations</A></LI>
+ <LI><A href="using-xml-schemas.html" title="Using XML Schemas">Using XML Schemas</A></LI>
+ <LI><A href="ipojo-advanced-topics.html" title="iPOJO Advanced Topics">Advanced Topics</A></LI>
+ <LI><A href="ipojo-faq.html" title="iPOJO FAQ">FAQ</A></LI>
+</UL>
+
+
+<H6><A name="ExtenderPatternHandler-Tools"></A><B>Tools</B></H6>
+<UL>
+ <LI><A href="ipojo-eclipse-plug-in.html" title="iPOJO Eclipse Plug-in">iPOJO Eclipse Plug-in</A></LI>
+ <LI><A href="ipojo-ant-task.html" title="iPOJO Ant Task">iPOJO Ant Task</A></LI>
+ <LI><A href="ipojo-maven-plug-in.html" title="iPOJO Maven Plug-in">iPOJO Maven Plug-in</A></LI>
+ <LI><A href="ipojo-concepts-overview.html" title="iPOJO Concepts Overview">iPOJO concepts overview</A></LI>
+</UL>
+
+
+<H6><A name="ExtenderPatternHandler-DeveloperGuide"></A><B>Developer Guide</B></H6>
+<UL>
+ <LI>API: <SPAN class="nobr"><A href="http://people.apache.org/~clement/ipojo/api/0.8/" title="Visit page outside Confluence" rel="nofollow">0.8<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></LI>
+ <LI><A href="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="how-to-use-ipojo-manipulation-metadata.html" title="How to use iPOJO Manipulation Metadata">How to use iPOJO Manipulation Metadata</A></LI>
+</UL>
+
+
+<H6><A name="ExtenderPatternHandler-Misc%26Contact"></A><B>Misc & Contact</B></H6>
+<UL>
+ <LI><A href="apache-felix-ipojo-issuestracker.html" title="apache-felix-ipojo-issuestracker">Issues Tracker</A></LI>
+ <LI><A href="apache-felix-ipojo-supportedvms.html" title="apache-felix-ipojo-supportedVMs">Supported JVMs</A></LI>
+ <LI><A href="apache-felix-ipojo-supportedosgi.html" title="apache-felix-ipojo-supportedOSGi">Supported OSGi Implementations</A></LI>
+ <LI><A href="future-ideas.html" title="Future Ideas">Future Ideas</A></LI>
+ <LI><A href="contact.html" title="Contact">Contact</A></LI>
+ <LI><A href="related-works.html" title="Related Works">Related Works</A></LI>
+ <LI><A href="article-presentations.html" title="Article & Presentations">Article & Presentations</A></LI>
+</UL>
+
+
+<HR>
+<DIV class="" align="center">
+<P><SPAN class="nobr"><A href="http://cwiki.apache.org/confluence/createrssfeed.action?types=blogpost&statuses=created&statuses=modified&spaces=FELIX&labelString=iPOJO&rssType=atom&maxResults=10&timeSpan=5&publicFeed=true&title=iPOJO%20Atom%20Feed" title="Stay tuned!" rel="nofollow"><IMG src="../../cwiki.apache.org/confluence/images/icons/feed-icon-32x32.png" align="absmiddle" border="0"><SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></P></DIV></TD></TR></TBODY></TABLE>
+ </DIV>
+ </BODY>
+
+<!-- Mirrored Site: felix.apache.org. File: /site/extender-pattern-handler.html. Date: Mon, 13 Oct 2008 06:52:58 GMT -->
+</HTML>
diff --git a/ipojo/handler/extender/doc/media.data/apache.png b/ipojo/handler/extender/doc/media.data/apache.png
new file mode 100644
index 0000000..5132f65
--- /dev/null
+++ b/ipojo/handler/extender/doc/media.data/apache.png
Binary files differ
diff --git a/ipojo/handler/extender/doc/media.data/gradient.png b/ipojo/handler/extender/doc/media.data/gradient.png
new file mode 100644
index 0000000..6ddc10b
--- /dev/null
+++ b/ipojo/handler/extender/doc/media.data/gradient.png
Binary files differ
diff --git a/ipojo/handler/extender/doc/media.data/logo.png b/ipojo/handler/extender/doc/media.data/logo.png
new file mode 100644
index 0000000..dccbddc
--- /dev/null
+++ b/ipojo/handler/extender/doc/media.data/logo.png
Binary files differ
diff --git a/ipojo/handler/extender/doc/media.data/site.css b/ipojo/handler/extender/doc/media.data/site.css
new file mode 100644
index 0000000..3c83712
--- /dev/null
+++ b/ipojo/handler/extender/doc/media.data/site.css
@@ -0,0 +1,25 @@
+/* @override http://felix.apache.org/site/media.data/site.css */
+
+body { background-color: #ffffff; color: #3b3b3b; font-family: Tahoma, Arial, sans-serif; font-size: 10pt; line-height: 140% }
+h1, h2, h3, h4, h5, h6 { font-weight: normal; color: #000000; line-height: 100%; margin-top: 0px}
+h1 { font-size: 200% }
+h2 { font-size: 175% }
+h3 { font-size: 150% }
+h4 { font-size: 140% }
+h5 { font-size: 130% }
+h6 { font-size: 120% }
+a { color: #1980af }
+a:visited { color: #1980af }
+a:hover { color: #1faae9 }
+.title { position: absolute; left: 1px; right: 1px; top:25px; height: 81px; background: url(gradient.png) repeat-x; background-position: bottom; }
+.logo { position: absolute; width: 15em; height: 81px; text-align: center; }
+.header { text-align: right; margin-right: 20pt; margin-top: 30pt;}
+.menu { border-top: 10px solid #f9bb00; position: absolute; top: 107px; left: 1px; width: 15em; bottom: 0px; padding: 0px; background-color: #fcfcfc }
+.menu ul { background-color: #fdf5d9; list-style: none; padding-left: 4em; margin-top: 0px; padding-top: 2em; padding-bottom: 2em; margin-left: 0px; color: #4a4a43}
+.menu a { text-decoration: none; color: #4a4a43 }
+.main { position: absolute; border-top: 10px solid #cde0ea; top: 107px; left: 15em; right: 1px; margin-left: 2px; padding-right: 4em; padding-left: 1em; padding-top: 1em;}
+.code { background-color: #eeeeee; border: solid 1px black; padding: 0.5em }
+.code-keyword { color: #880000 }
+.code-quote { color: #008800 }
+.code-object { color: #0000dd }
+.code-java { margin: 0em }
\ No newline at end of file
diff --git a/ipojo/handler/jmx/NOTICE b/ipojo/handler/jmx/NOTICE
index 6b1c994..aba3d8f 100644
--- a/ipojo/handler/jmx/NOTICE
+++ b/ipojo/handler/jmx/NOTICE
@@ -1,4 +1,4 @@
-Apache Felix iPOJO Event Admin Handler
+Apache Felix iPOJO JMX Handler
Copyright 2008 The Apache Software Foundation
I. Included Software
diff --git a/ipojo/handler/jmx/doc/changelog.txt b/ipojo/handler/jmx/doc/changelog.txt
new file mode 100644
index 0000000..9a1e075
--- /dev/null
+++ b/ipojo/handler/jmx/doc/changelog.txt
@@ -0,0 +1,3 @@
+Version 1.0.0
+-------------
+ * Initial release (XXXX-XX-XX)
\ No newline at end of file
diff --git a/ipojo/handler/jmx/doc/ipojo-jmx-handler.data/JMXHandler_1.png b/ipojo/handler/jmx/doc/ipojo-jmx-handler.data/JMXHandler_1.png
new file mode 100644
index 0000000..0b7e0e7
--- /dev/null
+++ b/ipojo/handler/jmx/doc/ipojo-jmx-handler.data/JMXHandler_1.png
Binary files differ
diff --git a/ipojo/handler/jmx/doc/ipojo-jmx-handler.data/JMXHandler_2.png b/ipojo/handler/jmx/doc/ipojo-jmx-handler.data/JMXHandler_2.png
new file mode 100644
index 0000000..dc296a6
--- /dev/null
+++ b/ipojo/handler/jmx/doc/ipojo-jmx-handler.data/JMXHandler_2.png
Binary files differ
diff --git a/ipojo/handler/jmx/doc/ipojo-jmx-handler.data/JMXHandler_3.png b/ipojo/handler/jmx/doc/ipojo-jmx-handler.data/JMXHandler_3.png
new file mode 100644
index 0000000..9b79470
--- /dev/null
+++ b/ipojo/handler/jmx/doc/ipojo-jmx-handler.data/JMXHandler_3.png
Binary files differ
diff --git a/ipojo/handler/jmx/doc/ipojo-jmx-handler.html b/ipojo/handler/jmx/doc/ipojo-jmx-handler.html
new file mode 100644
index 0000000..822df50
--- /dev/null
+++ b/ipojo/handler/jmx/doc/ipojo-jmx-handler.html
@@ -0,0 +1,343 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+
+<!-- Mirrored Site: felix.apache.org. File: /site/ipojo-jmx-handler.html. Date: Mon, 13 Oct 2008 06:53:08 GMT -->
+<HEAD>
+ <TITLE>Apache Felix - iPOJO JMX Handler</TITLE>
+ <LINK rel="stylesheet" href="media.data/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="index.html"><IMG border="0" alt="Apache Felix" src="media.data/logo.png"></A></DIV><DIV class="header"><A href="http://www.apache.org/"><IMG border="0" alt="Apache" src="media.data/apache.png"></A></DIV></DIV>
+ <DIV class="menu">
+
+
+
+
+
+ <UL>
+ <LI><A href="news.html" title="news">news</A></LI>
+ <LI><A href="license.html" title="license">license</A></LI>
+ <LI><SPAN class="nobr"><A href="downloads.html" title="Visit page outside Confluence" rel="nofollow">downloads<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></LI>
+ <LI><A href="documentation.html" title="documentation">documentation</A></LI>
+ <LI><A href="mailinglists.html" title="mailinglists">mailing lists</A></LI>
+ <LI><A href="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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN>
+<!-- ApacheCon Ad -->
+<IFRAME src="http://www.apache.org/ads/button.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="135"></IFRAME>
+<P style="height: 100px">
+<!-- ApacheCon Ad --></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="iPOJOJMXHandler-iPOJOJMXHandler"></A>iPOJO JMX Handler</H1>
+
+<P>This handler provides JMX management of component instance. It could be useful to manage instance remotely. As the handler exposes MBeans, you must have a MBean server running on your platform (as the platform MBean server or the MOSGi MBean Server).</P>
+
+<H2><A name="iPOJOJMXHandler-Features"></A>Features</H2>
+
+<P>The handler allows to:</P>
+<UL>
+ <LI>Expose attributes accessible via JMX (with rights management).</LI>
+ <LI>Expose methods to be called through JMX.</LI>
+ <LI>Get notifications when attributes are modified .</LI>
+</UL>
+
+
+<H2><A name="iPOJOJMXHandler-Prerequisites"></A>Prerequisites</H2>
+
+<P>To be functional this handler must register on an MBean Server,thus you obviously need it. Several servers are currently supported : the standard platform MBean server (included in the JDK), MOSGi (provided with Felix), ...<BR>
+To use MOSGi, you have to deploy at least the following three bundles of MOSGi:</P>
+<UL>
+ <LI>org.apache.felix.mosgi.jmx.agent</LI>
+ <LI>org.apache.felix.mosgi.jmx.registry</LI>
+ <LI>org.apache.felix.mosgi.jmx.rmiconnector</LI>
+</UL>
+
+
+<P>You can find MOSGi documentation on <SPAN class="nobr"><A href="http://cwiki.apache.org/FELIX/mosgi-managed-osgi-framework.html" title="Visit page outside Confluence" rel="nofollow">http://cwiki.apache.org/FELIX/mosgi-managed-osgi-framework.html<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></P>
+
+<H2><A name="iPOJOJMXHandler-Download"></A>Download</H2>
+
+<P>The JMX handler is available in the Felix trunk in the iPOJO project. See the <A href="download.html" title="Download">Download</A> page to download and compile these sources.</P>
+
+<H2><A name="iPOJOJMXHandler-Howtouseit"></A>How to use it</H2>
+
+<P>The handler needs to be added in the metadata.xml, you just add a namespace (e.g., jmx) :</P>
+<DIV class="code"><DIV class="codeContent">
+<PRE class="code-xml"><SPAN class="code-tag"><ipojo <SPAN class="code-keyword">xmlns:jmx</SPAN>=<SPAN class="code-quote">"org.apache.felix.ipojo.handlers.jmx"</SPAN>></SPAN>
+ ...
+<SPAN class="code-tag"></ipojo></SPAN></PRE>
+</DIV></DIV>
+<P>So, you could now expose in JMX properties and methods of your component. They are surrounded by the <jmx:config><BR>
+tag.</P>
+<DIV class="code"><DIV class="codeContent">
+<PRE class="code-xml"><SPAN class="code-tag"><jmx:config></SPAN>
+ <SPAN class="code-tag"><property name=<SPAN class="code-quote">"message"</SPAN> field=<SPAN class="code-quote">"m_msg"</SPAN> rights=<SPAN class="code-quote">"w"</SPAN> notification=<SPAN class="code-quote">"true"</SPAN>/></SPAN>
+ <SPAN class="code-tag"><method name=<SPAN class="code-quote">"doSomethingBad"</SPAN>/></SPAN>
+ <SPAN class="code-tag"><method name=<SPAN class="code-quote">"doSomethingGood"</SPAN>/></SPAN>
+<SPAN class="code-tag"></jmx:config></SPAN></PRE>
+</DIV></DIV>
+<P><EM>Note:</EM> Be careful that the argument and return type of methods must be serializable. In case of several methods have the same name, each of them will be exposed.</P>
+
+<H2><A name="iPOJOJMXHandler-JMXHandleroptions"></A>JMX Handler options</H2>
+
+<P>Here you can find all configuration options of the JMX handler. There are two kinds of manageable elements : properties and methods. First is described the global configuration of the handler. Then elements can be configured, using several attributes, as described below.</P>
+
+<H2><A name="iPOJOJMXHandler-Globalhandlerattributes"></A>Global handler 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">objectName</TD>
+<TD class="confluenceTd">NO</TD>
+<TD class="confluenceTd">The complete object name of the managed component. The syntax of this attribute must be compliant with the ObjectName syntax, detailed in the JMX specification.<BR>
+If neither domain nor name attributes are specified, the default value is determined by the package, the type and the instance name of the component. This attribute overrides the domain and name attributes.<BR>
+<EM>Example:</EM> "my.domain:type=myType,name=myName"</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">domain</TD>
+<TD class="confluenceTd">NO</TD>
+<TD class="confluenceTd">The domain of the managed object (i.e., the left part of the object name). This attribute must be compliant with the domain syntax, as described in the JMX specification.<BR>
+<EM>Example:</EM> "my.domain"</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">name</TD>
+<TD class="confluenceTd">NO</TD>
+<TD class="confluenceTd">The name property of the managed object. The value of this attribute must comply with the ObjectName value syntax, as described in the JMX specification.</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">usesMOSGi</TD>
+<TD class="confluenceTd">NO</TD>
+<TD class="confluenceTd">Determines if the component must be register on the MOSGi MBean server or not.</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">preRegister <BR>
+postRegister <BR>
+preDeregister<BR>
+postDeregister</TD>
+<TD class="confluenceTd">NO</TD>
+<TD class="confluenceTd">These attributes allow to specify methods to carry out operations before and after being registered or unregistered from the MBean server.</TD>
+</TR>
+</TBODY></TABLE>
+
+<H2><A name="iPOJOJMXHandler-Propertiesattributes"></A>Properties 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">field</TD>
+<TD class="confluenceTd">YES</TD>
+<TD class="confluenceTd">The name of the component's field to expose.</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">name</TD>
+<TD class="confluenceTd">NO</TD>
+<TD class="confluenceTd">The name of the property as it will appear in JMX. If unspecified, the default value is the name of the exposed field.</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">rights</TD>
+<TD class="confluenceTd">NO</TD>
+<TD class="confluenceTd">Specify the access permission of the exposed field. The accepted values are :
+<UL>
+ <LI>"r" : read-only access, the default value.</LI>
+ <LI>"w" : read and write access.</LI>
+</UL>
+</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">notification</TD>
+<TD class="confluenceTd">NO</TD>
+<TD class="confluenceTd">Enable or disable attribute change notification sending for this property. If set to "true", a notification is sent each time the value of the field changes.</TD>
+</TR>
+</TBODY></TABLE>
+
+<H2><A name="iPOJOJMXHandler-Methodsattributes"></A>Methods 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">name</TD>
+<TD class="confluenceTd">YES</TD>
+<TD class="confluenceTd">The name of the method to expose. If multiple methods have the same name, all of them are exposed.</TD>
+</TR>
+<TR>
+<TD class="confluenceTd">description</TD>
+<TD class="confluenceTd">NO</TD>
+<TD class="confluenceTd">The description of the exposed method, as it will appear in JMX.</TD>
+</TR>
+</TBODY></TABLE>
+
+
+<H2><A name="iPOJOJMXHandler-Examples"></A>Examples</H2>
+
+<P>In this part, we will give you a complete example of a component managed with JMX, using the JConsole provided by the SUN JDK.</P>
+
+<H3><A name="iPOJOJMXHandler-ExposingAttributes"></A>Exposing Attributes</H3>
+
+<P>In first time we create a simple component named MyComponent. We have add two fields named m_level (int) and m_message (String).</P>
+<DIV class="code"><DIV class="codeContent">
+<PRE class="code-java"><SPAN class="code-keyword">public</SPAN> class
+MyComponent ... {
+ <SPAN class="code-comment">// Exposed attributes
+</SPAN> <SPAN class="code-keyword">private</SPAN> <SPAN class="code-object">String</SPAN> m_message;
+ <SPAN class="code-keyword">private</SPAN> <SPAN class="code-object">int</SPAN> m_level;
+}</PRE>
+</DIV></DIV>
+<P>We expose now the attributes in the jmx:config<BR>
+tag in the metadata :</P>
+<DIV class="code"><DIV class="codeContent">
+<PRE class="code-xml"><SPAN class="code-tag"><?xml version=<SPAN class="code-quote">"1.0"</SPAN> encoding=<SPAN class="code-quote">"UTF-8"</SPAN>?></SPAN>
+<SPAN class="code-tag"><iPOJO <SPAN class="code-keyword">xmlns:jmx</SPAN>=<SPAN class="code-quote">"org.apache.felix.ipojo.handlers.jmx"</SPAN>></SPAN>
+ <component className=<SPAN class="code-quote">"...MyComponent"</SPAN>
+ architecture=<SPAN class="code-quote">"true"</SPAN>
+ immediate=<SPAN class="code-quote">"true"</SPAN>>
+
+ <SPAN class="code-tag"><provides/></SPAN>
+ <SPAN class="code-tag"><jmx:config></SPAN>
+ <SPAN class="code-tag"><SPAN class="code-comment"><!-- Exposed properties --></SPAN></SPAN>
+ <property field=<SPAN class="code-quote">"m_level"</SPAN>
+ name=<SPAN class="code-quote">"The level"</SPAN>
+ rights=<SPAN class="code-quote">"r"</SPAN>/>
+ <property field=<SPAN class="code-quote">"m_message"</SPAN>
+ name=<SPAN class="code-quote">"The message"</SPAN>
+ rights=<SPAN class="code-quote">"w"</SPAN>/>
+ <SPAN class="code-tag"></jmx:config></SPAN>
+ <SPAN class="code-tag"></component></SPAN>
+ <instance
+ component=<SPAN class="code-quote">"...MyComponent"</SPAN>/>
+<SPAN class="code-tag"></iPOJO></SPAN></PRE>
+</DIV></DIV>
+<P>Now, we could get and write the properties in the JConsole :<BR>
+<IMG src="ipojo-jmx-handler.data/JMXHandler_1.png" align="absmiddle" border="0"></P>
+
+<H3><A name="iPOJOJMXHandler-ExposingMethods"></A>Exposing Methods</H3>
+
+<P>We could now add methods in the initial class :</P>
+<DIV class="code"><DIV class="codeContent">
+<PRE class="code-java">/**
+Do something good
+*/
+<SPAN class="code-keyword">public</SPAN> void doSomethingGood() {
+ ...
+}
+
+/**
+Do something bad
+*/
+<SPAN class="code-keyword">public</SPAN> void doSomethingBad() {
+ ...
+}
+
+/**
+Do nothing
+*/
+<SPAN class="code-keyword">public</SPAN> void doNothing() {
+ ...
+}</PRE>
+</DIV></DIV>
+<P>We add corresponding tags in the metadata to expose these methods:</P>
+<DIV class="code"><DIV class="codeContent">
+<PRE class="code-xml"><SPAN class="code-tag"><SPAN class="code-comment"><!-- Exposed methods --></SPAN></SPAN>
+<method name=<SPAN class="code-quote">"doSomethingGood"</SPAN>
+ description=<SPAN class="code-quote">"Do something good."</SPAN>/>
+<method name=<SPAN class="code-quote">"doSomethingBad"</SPAN>
+ description=<SPAN class="code-quote">"Do something bad."</SPAN>/>
+<method name=<SPAN class="code-quote">"doNothing"</SPAN>
+ description=<SPAN class="code-quote">"Do absolutely nothing."</SPAN>/></PRE>
+</DIV></DIV>
+<P>Now the three methods are exposed in the operations tab of the JConsole. We can invoked these methods :</P>
+
+<P><IMG src="ipojo-jmx-handler.data/JMXHandler_2.png" align="absmiddle" border="0"></P>
+
+<H3><A name="iPOJOJMXHandler-AttributeNotifications%3A"></A>Attribute Notifications:</H3>
+
+<P>You could subscribe to attribute notification by adding the notification attribute in property tag. In our example if we want to be notified when m_level is modified, we change the property line in the metatada like this:</P>
+<DIV class="code"><DIV class="codeContent">
+<PRE class="code-xml"><property field=<SPAN class="code-quote">"m_level"</SPAN>
+ name=<SPAN class="code-quote">"The level"</SPAN>
+ rights=<SPAN class="code-quote">"r"</SPAN>
+ notification=<SPAN class="code-quote">"true"</SPAN>/></PRE>
+</DIV></DIV>
+<P>So now if we change the string through JConsole or if the POJO is modified in other way, a notification will be sent to every listener. For example, we subscribe in the notification tab, and we get notification when the message changes :</P>
+
+<P><IMG src="ipojo-jmx-handler.data/JMXHandler_3.png" align="absmiddle" border="0"></P>
+</TD>
+<TD class="confluenceTd" valign="top" width="20%">
+<H6><A name="iPOJOJMXHandler-Overview"></A><B>Overview</B></H6>
+<UL>
+ <LI><A href="apache-felix-ipojo.html" title="Apache Felix iPOJO">Home Page</A></LI>
+ <LI><A href="apache-felix-ipojo-feature-overview.html" title="Apache Felix iPOJO Feature Overview">iPOJO Feature Overview</A></LI>
+ <LI><A href="download.html" title="Download">Download & Install </A></LI>
+</UL>
+
+
+<H6><A name="iPOJOJMXHandler-GettingStarted"></A><B>Getting Started</B></H6>
+<UL>
+ <LI><A href="ipojo-in-10-minutes.html" title="iPOJO in 10 minutes">iPOJO in 10 minutes</A></LI>
+ <LI><A href="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="ipojo-advanced-tutorial.html" title="iPOJO Advanced Tutorial">iPOJO Advanced Tutorial</A></LI>
+</UL>
+
+
+<H6><A name="iPOJOJMXHandler-UserGuide"></A><B>User Guide</B></H6>
+<UL>
+ <LI><A href="describing-components.html" title="Describing components">Describing components (handler list) </A></LI>
+ <LI><A href="how-to-use-ipojo-annotations.html" title="How to use iPOJO Annotations">How to use iPOJO Annotations</A></LI>
+ <LI><A href="ipojo-advanced-topics.html" title="iPOJO Advanced Topics">Advanced Topics</A></LI>
+ <LI><A href="ipojo-faq.html" title="iPOJO FAQ">FAQ</A></LI>
+</UL>
+
+
+<H6><A name="iPOJOJMXHandler-Tools"></A><B>Tools</B></H6>
+<UL>
+ <LI><A href="ipojo-eclipse-plug-in.html" title="iPOJO Eclipse Plug-in">iPOJO Eclipse Plug-in</A></LI>
+ <LI><A href="ipojo-ant-task.html" title="iPOJO Ant Task">iPOJO Ant Task</A></LI>
+ <LI><A href="ipojo-maven-plug-in.html" title="iPOJO Maven Plug-in">iPOJO Maven Plug-in</A></LI>
+ <LI><A href="ipojo-concepts-overview.html" title="iPOJO Concepts Overview">iPOJO concepts overview</A></LI>
+</UL>
+
+
+<H6><A name="iPOJOJMXHandler-DeveloperGuide"></A><B>Developer Guide</B></H6>
+<UL>
+ <LI>API: <SPAN class="nobr"><A href="http://people.apache.org/~clement/ipojo/api/0.8/" title="Visit page outside Confluence" rel="nofollow">0.8<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></LI>
+ <LI><A href="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="how-to-use-ipojo-manipulation-metadata.html" title="How to use iPOJO Manipulation Metadata">How to use iPOJO Manipulation Metadata</A></LI>
+</UL>
+
+
+<H6><A name="iPOJOJMXHandler-Misc%26Contact"></A><B>Misc & Contact</B></H6>
+<UL>
+ <LI><A href="apache-felix-ipojo-issuestracker.html" title="apache-felix-ipojo-issuestracker">Issues Tracker</A></LI>
+ <LI><A href="apache-felix-ipojo-supportedvms.html" title="apache-felix-ipojo-supportedVMs">Supported JVMs</A></LI>
+ <LI><A href="apache-felix-ipojo-supportedosgi.html" title="apache-felix-ipojo-supportedOSGi">Supported OSGi Implementations</A></LI>
+ <LI><A href="future-ideas.html" title="Future Ideas">Future Ideas</A></LI>
+ <LI><A href="contact.html" title="Contact">Contact</A></LI>
+ <LI><A href="related-works.html" title="Related Works">Related Works</A></LI>
+ <LI><A href="article-presentations.html" title="Article & Presentations">Article & Presentations</A></LI>
+</UL>
+
+
+<HR>
+<DIV class="" align="center">
+<P><SPAN class="nobr"><A href="http://cwiki.apache.org/confluence/createrssfeed.action?types=blogpost&statuses=created&statuses=modified&spaces=FELIX&labelString=iPOJO&rssType=atom&maxResults=10&timeSpan=5&publicFeed=true&title=iPOJO%20Atom%20Feed" title="Stay tuned!" rel="nofollow"><IMG src="../../cwiki.apache.org/confluence/images/icons/feed-icon-32x32.png" align="absmiddle" border="0"><SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></P></DIV></TD></TR></TBODY></TABLE>
+ </DIV>
+ </BODY>
+
+<!-- Mirrored Site: felix.apache.org. File: /site/ipojo-jmx-handler.html. Date: Mon, 13 Oct 2008 06:53:08 GMT -->
+</HTML>
diff --git a/ipojo/handler/jmx/doc/media.data/apache.png b/ipojo/handler/jmx/doc/media.data/apache.png
new file mode 100644
index 0000000..5132f65
--- /dev/null
+++ b/ipojo/handler/jmx/doc/media.data/apache.png
Binary files differ
diff --git a/ipojo/handler/jmx/doc/media.data/gradient.png b/ipojo/handler/jmx/doc/media.data/gradient.png
new file mode 100644
index 0000000..6ddc10b
--- /dev/null
+++ b/ipojo/handler/jmx/doc/media.data/gradient.png
Binary files differ
diff --git a/ipojo/handler/jmx/doc/media.data/logo.png b/ipojo/handler/jmx/doc/media.data/logo.png
new file mode 100644
index 0000000..dccbddc
--- /dev/null
+++ b/ipojo/handler/jmx/doc/media.data/logo.png
Binary files differ
diff --git a/ipojo/handler/jmx/doc/media.data/site.css b/ipojo/handler/jmx/doc/media.data/site.css
new file mode 100644
index 0000000..3c83712
--- /dev/null
+++ b/ipojo/handler/jmx/doc/media.data/site.css
@@ -0,0 +1,25 @@
+/* @override http://felix.apache.org/site/media.data/site.css */
+
+body { background-color: #ffffff; color: #3b3b3b; font-family: Tahoma, Arial, sans-serif; font-size: 10pt; line-height: 140% }
+h1, h2, h3, h4, h5, h6 { font-weight: normal; color: #000000; line-height: 100%; margin-top: 0px}
+h1 { font-size: 200% }
+h2 { font-size: 175% }
+h3 { font-size: 150% }
+h4 { font-size: 140% }
+h5 { font-size: 130% }
+h6 { font-size: 120% }
+a { color: #1980af }
+a:visited { color: #1980af }
+a:hover { color: #1faae9 }
+.title { position: absolute; left: 1px; right: 1px; top:25px; height: 81px; background: url(gradient.png) repeat-x; background-position: bottom; }
+.logo { position: absolute; width: 15em; height: 81px; text-align: center; }
+.header { text-align: right; margin-right: 20pt; margin-top: 30pt;}
+.menu { border-top: 10px solid #f9bb00; position: absolute; top: 107px; left: 1px; width: 15em; bottom: 0px; padding: 0px; background-color: #fcfcfc }
+.menu ul { background-color: #fdf5d9; list-style: none; padding-left: 4em; margin-top: 0px; padding-top: 2em; padding-bottom: 2em; margin-left: 0px; color: #4a4a43}
+.menu a { text-decoration: none; color: #4a4a43 }
+.main { position: absolute; border-top: 10px solid #cde0ea; top: 107px; left: 15em; right: 1px; margin-left: 2px; padding-right: 4em; padding-left: 1em; padding-top: 1em;}
+.code { background-color: #eeeeee; border: solid 1px black; padding: 0.5em }
+.code-keyword { color: #880000 }
+.code-quote { color: #008800 }
+.code-object { color: #0000dd }
+.code-java { margin: 0em }
\ No newline at end of file
diff --git a/ipojo/handler/temporal/doc/changelog.txt b/ipojo/handler/temporal/doc/changelog.txt
index d3bf9bc..69a39b0 100644
--- a/ipojo/handler/temporal/doc/changelog.txt
+++ b/ipojo/handler/temporal/doc/changelog.txt
@@ -1,3 +1,11 @@
+Changes from 0.8.1 to 1.0.0
+---------------------------
+** Improvement
+ * [FELIX-625] - Temporal Dependency improvements (onTimeout policies) (2008-07-07)
+ * [FELIX-673] - Provide OBR description to iPOJO bundles (2008-08-07
+ * [FELIX-716] - Provide XML schemas for iPOJO descriptors (2008-09-09)
+
+
Version 0.8.1
-------------
-* [2008-06-06] Initial release
\ No newline at end of file
+ * Initial release (2008-06-06)
\ No newline at end of file
diff --git a/ipojo/handler/temporal/doc/media.data/site.css b/ipojo/handler/temporal/doc/media.data/site.css
index 959ab0a..3c83712 100644
--- a/ipojo/handler/temporal/doc/media.data/site.css
+++ b/ipojo/handler/temporal/doc/media.data/site.css
@@ -11,7 +11,7 @@
a { color: #1980af }
a:visited { color: #1980af }
a:hover { color: #1faae9 }
-.title { position: absolute; left: 1px; right: 1px; top:25px; height: 81px; background: url(http://felix.apache.org/site/media.data/gradient.png) repeat-x; background-position: bottom; }
+.title { position: absolute; left: 1px; right: 1px; top:25px; height: 81px; background: url(gradient.png) repeat-x; background-position: bottom; }
.logo { position: absolute; width: 15em; height: 81px; text-align: center; }
.header { text-align: right; margin-right: 20pt; margin-top: 30pt;}
.menu { border-top: 10px solid #f9bb00; position: absolute; top: 107px; left: 1px; width: 15em; bottom: 0px; padding: 0px; background-color: #fcfcfc }
diff --git a/ipojo/handler/temporal/doc/temporal-service-dependency.html b/ipojo/handler/temporal/doc/temporal-service-dependency.html
index c70e0e6..f4500c8 100644
--- a/ipojo/handler/temporal/doc/temporal-service-dependency.html
+++ b/ipojo/handler/temporal/doc/temporal-service-dependency.html
@@ -2,59 +2,58 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
-
+<!-- Mirrored Site: felix.apache.org. File: /site/temporal-service-dependency.html. Date: Mon, 13 Oct 2008 06:52:59 GMT -->
<HEAD>
<TITLE>Apache Felix - Temporal Service Dependency</TITLE>
- <LINK rel="stylesheet" href="http://felix.apache.org/site/media.data/site.css" type="text/css" media="all">
+ <LINK rel="stylesheet" href="media.data/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 border="0" alt="Apache Felix" src="http://felix.apache.org/site/media.data/logo.png"></A></DIV><DIV class="header"><A href="http://www.apache.org/"><IMG border="0" alt="Apache" src="http://felix.apache.org/site/media.data/apache.png"></A></DIV></DIV>
+ <DIV class="title"><DIV class="logo"><A href="index.html"><IMG border="0" alt="Apache Felix" src="media.data/logo.png"></A></DIV><DIV class="header"><A href="http://www.apache.org/"><IMG border="0" alt="Apache" src="media.data/apache.png"></A></DIV></DIV>
<DIV class="menu">
-
-
-
-
-
- >
- <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="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN>
+ <UL>
+ <LI><A href="news.html" title="news">news</A></LI>
+ <LI><A href="license.html" title="license">license</A></LI>
+ <LI><SPAN class="nobr"><A href="downloads.html" title="Visit page outside Confluence" rel="nofollow">downloads<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></LI>
+ <LI><A href="documentation.html" title="documentation">documentation</A></LI>
+ <LI><A href="mailinglists.html" title="mailinglists">mailing lists</A></LI>
+ <LI><A href="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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN>
<!-- ApacheCon Ad -->
<IFRAME src="http://www.apache.org/ads/button.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="135"></IFRAME>
<P style="height: 100px">
<!-- ApacheCon Ad --></LI>
-<
- </DIV>
+</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="TemporalServiceDependency-Thetemporaldependencyhandler"></A>The temporal dependency handler</H1>
-<P>Regular service dependencies participate to the instance lifecycle. Moreover, the injected service object is either available or not available. A temporal dependency handler is a little different and provides a different resolution pattern. Indeed, the temporal dependency does not invalidate the instance. Moreover, if not available, the temporal dependency waits (and so blocks the current thread) for a provider. Of course, the maximum waiting time can be specified. If a timeout occurs, the handler throws a runtime exception.</P>
-<H2><A name="TemporalServiceDependency-Usingthehandler"></A>Using the handler</H2>
+
+<P>Regular service dependencies participate to the instance lifecycle. Moreover, the injected service object is either available or not available. A temporal dependency handler is a little different and provides a different resolution pattern. Indeed, the temporal dependency does not invalidate the instance. Moreover, if not available, the temporal dependency waits (and so blocks the current thread) for a provider. Of course, the maximum waiting time can be specified. If a timeout occurs, the handler throws a runtime exception.<BR>
+Using the handler</P>
+
<P>First of all, you need to configure the component type to use the handler such as:</P>
<DIV class="code"><DIV class="codeContent">
<PRE class="code-xml"><SPAN class="code-tag"><iPOJO <SPAN class="code-keyword">xmlns:temporal</SPAN>=<SPAN class="code-quote">"org.apache.felix.ipojo.handler.temporal"</SPAN>></SPAN>
- <component
- className=<SPAN class="code-quote">"org.apache.felix.ipojo.example.Temporal"</SPAN>>
-
- <SPAN class="code-tag"><!-—Temporal dependency configuration --></SPAN>
- <temporal:requires field=<SPAN class="code-quote">"mytemporal"</SPAN>
- />
- <SPAN class="code-tag"><provides /></SPAN>
- <SPAN class="code-tag"></component></SPAN>
+<component
+ className=<SPAN class="code-quote">"org.apache.felix.ipojo.example.Temporal"</SPAN>>
+
+ <SPAN class="code-tag"><SPAN class="code-comment"><!-- Temporal dependency configuration --></SPAN></SPAN>
+ <SPAN class="code-tag"><temporal:requires field=<SPAN class="code-quote">"mytemporal"</SPAN>/></SPAN>
+
+ <SPAN class="code-tag"><provides/></SPAN>
+
+<SPAN class="code-tag"></component></SPAN>
<SPAN class="code-tag"></iPOJO></SPAN></PRE>
</DIV></DIV>
<P>Notice that, this handler is an external handler. So, it uses the "org.apache.felix.ipojo.handler.temporal" namespace.<BR>
-Once described, you can implement your component. The specified field will be mapped to the temporal dependency. As for regular field injection, aggregation, targeted service specification (i.e. interface) are discovered automatically. Filter, comparator and binding policy are also supported. However, the optional attribute is not supported. In fact, this attribute is meaningless in the case of a temporal dependency.<BR>
-Using the field in your code will try to find a matching service provider. If a provider is available, the field receives the service object immediately. Else, the thread is stopped and waits for a provider. The default wait time is 3s (you can also specify this time). If no provider is available after this time, the thread throws a RuntimeException. If a provider becomes available during this time, the field receives immediately the value and the execution can continue.</P>
-<H2><A name="TemporalServiceDependency-Configuration"></A>Configuration</H2>
+Once described, you can implement your component. The specified field will be mapped to the temporal dependency. As for regular field injection, aggregation, targeted service specification (i.e. interface) is discovered automatically. Filter, comparator and binding policy are also supported. However, the optional attribute is not supported. In fact, this attribute is meaningless in the case of a temporal dependency.<BR>
+Using the field in your code will try to find a matching service provider. If a provider is available, the field receives the service object immediately. Else, the thread is stopped and waits for a provider. The default wait time is 3s (you can also specify this time). If no provider is available after this time, the thread throws a RuntimeException. If a provider becomes available during this time, the field receives immediately the value and the execution can continue.<BR>
+Configuration</P>
+
<P>The handler has only one mandatory attributes:</P>
<UL>
<LI>Field: the implementation field supporting the dependency</LI>
@@ -63,73 +62,88 @@
<P>The handler supports on specific optional attributes:</P>
<UL>
- <LI>Timeout: the maximum time waited in order to find a provider (default: 3s)</LI>
+ <LI>Timeout: the maximum time waited in order to find a provider (default: 3s). For an infinite timeout [New in the 0.9.0-SNAPSHOT version], the timeout value is either "infinite" or "-1".</LI>
+ <LI>OnTimeout [New in the 0.9.0-SNAPSHOT version]: specifies the action to do when the timeout occurs. Four actions are supported: null, nullable, empty-array, default-implementation. By default, no action is specified, and an exception occurs when the timeout is reached.</LI>
</UL>
-<P>The attribute form regular dependencies are also supported.</P>
+<P>The attributes from "regular" dependencies are also supported (like filter).<BR>
+OnTimeout actions</P>
+
+<P>When a timeout occurs, you can specify what the handler must do. By default, it throws a runtime exception. However, four others actions can be set in the 'onTimeout' attribute.</P>
+<UL>
+ <LI>The null action (onTimeout="null") will return "null" instead of the service object.</LI>
+ <LI>The "nullable" action (onTimeout="nullable") will return a "Nullable" object instead of the service object. This object is a fake but can be used a regular service object. However, invoking actions on this object will do nothing. In the case of aggregate dependency, an array containing a "nullable" object is returned.</LI>
+ <LI>The empty-array action is only supported for aggregate dependency (the field must be an array). In this case, an empty-array is returned.</LI>
+ <LI>The default-implementation action is a little different. Instead of specifying the action, you need to specify the default-implementation (the qualified class name) that you want to use. For example onTimeout="o.a.f.i.MyDefaultLogServiceImpl". In this case, the handler will inject an instance of this object instead of a real service object. On aggregate dependency, an array with one default-implementation object is returned.</LI>
+</UL>
+
+
<H2><A name="TemporalServiceDependency-Download"></A>Download</H2>
-<P>The handler is available on the <A href="http://felix.apache.org/site/download.html" title="Download">download</A> page.<BR>
-Sources are available on the Felix trunk at the following location: <SPAN class="nobr"><A href="https://svn.apache.org/repos/asf/felix/trunk/ipojo/temporal.dependency.handler" title="Visit page outside Confluence" rel="nofollow">https://svn.apache.org/repos/asf/felix/trunk/ipojo/temporal.dependency.handler<SUP><IMG class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></P></TD>
+
+<P>The handler is available on the <A href="download.html" title="Download">download</A> page.<BR>
+Sources are available on the Felix trunk at the following location: <SPAN class="nobr"><A href="http://svn.apache.org/repos/asf/felix/trunk/ipojo/handler/temporal" title="Visit page outside Confluence" rel="nofollow">http://svn.apache.org/repos/asf/felix/trunk/ipojo/handler/temporal<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></P></TD>
<TD class="confluenceTd" valign="top" width="20%">
<H6><A name="TemporalServiceDependency-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 & Install </A></LI>
+ <LI><A href="apache-felix-ipojo.html" title="Apache Felix iPOJO">Home Page</A></LI>
+ <LI><A href="apache-felix-ipojo-feature-overview.html" title="Apache Felix iPOJO Feature Overview">iPOJO Feature Overview</A></LI>
+ <LI><A href="download.html" title="Download">Download & Install </A></LI>
</UL>
<H6><A name="TemporalServiceDependency-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/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="ipojo-in-10-minutes.html" title="iPOJO in 10 minutes">iPOJO in 10 minutes</A></LI>
+ <LI><A href="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="ipojo-advanced-tutorial.html" title="iPOJO Advanced Tutorial">iPOJO Advanced Tutorial</A></LI>
</UL>
<H6><A name="TemporalServiceDependency-UserGuide"></A><B>User Guide</B></H6>
<UL>
- <LI><A href="http://felix.apache.org/site/describing-components.html" title="Describing components">Describing components</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-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="describing-components.html" title="Describing components">Describing components (handler list) </A></LI>
+ <LI><A href="how-to-use-ipojo-annotations.html" title="How to use iPOJO Annotations">How to use iPOJO Annotations</A></LI>
+ <LI><A href="using-xml-schemas.html" title="Using XML Schemas">Using XML Schemas</A></LI>
+ <LI><A href="ipojo-advanced-topics.html" title="iPOJO Advanced Topics">Advanced Topics</A></LI>
+ <LI><A href="ipojo-faq.html" title="iPOJO FAQ">FAQ</A></LI>
</UL>
<H6><A name="TemporalServiceDependency-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-concepts-overview.html" title="iPOJO Concepts Overview">iPOJO concepts overview</A></LI>
+ <LI><A href="ipojo-eclipse-plug-in.html" title="iPOJO Eclipse Plug-in">iPOJO Eclipse Plug-in</A></LI>
+ <LI><A href="ipojo-ant-task.html" title="iPOJO Ant Task">iPOJO Ant Task</A></LI>
+ <LI><A href="ipojo-maven-plug-in.html" title="iPOJO Maven Plug-in">iPOJO Maven Plug-in</A></LI>
+ <LI><A href="ipojo-concepts-overview.html" title="iPOJO Concepts Overview">iPOJO concepts overview</A></LI>
</UL>
<H6><A name="TemporalServiceDependency-DeveloperGuide"></A><B>Developer Guide</B></H6>
<UL>
- <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>API: <SPAN class="nobr"><A href="http://people.apache.org/~clement/ipojo/api/0.8/" title="Visit page outside Confluence" rel="nofollow">0.8<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></LI>
+ <LI><A href="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="how-to-use-ipojo-manipulation-metadata.html" title="How to use iPOJO Manipulation Metadata">How to use iPOJO Manipulation Metadata</A></LI>
</UL>
<H6><A name="TemporalServiceDependency-Misc%26Contact"></A><B>Misc & 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><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 & Presentations">Article & Presentations</A></LI>
+ <LI><A href="apache-felix-ipojo-issuestracker.html" title="apache-felix-ipojo-issuestracker">Issues Tracker</A></LI>
+ <LI><A href="apache-felix-ipojo-supportedvms.html" title="apache-felix-ipojo-supportedVMs">Supported JVMs</A></LI>
+ <LI><A href="apache-felix-ipojo-supportedosgi.html" title="apache-felix-ipojo-supportedOSGi">Supported OSGi Implementations</A></LI>
+ <LI><A href="future-ideas.html" title="Future Ideas">Future Ideas</A></LI>
+ <LI><A href="contact.html" title="Contact">Contact</A></LI>
+ <LI><A href="related-works.html" title="Related Works">Related Works</A></LI>
+ <LI><A href="article-presentations.html" title="Article & Presentations">Article & Presentations</A></LI>
</UL>
<HR>
<DIV class="" align="center">
-<P><SPAN class="nobr"><A href="http://cwiki.apache.org/confluence/createrssfeed.action?types=blogpost&statuses=created&statuses=modified&spaces=FELIX&labelString=iPOJO&rssType=atom&maxResults=10&timeSpan=5&publicFeed=true&title=iPOJO%20Atom%20Feed" title="Stay tuned!" rel="nofollow"><IMG src="http://cwiki.apache.org/confluence/images/icons/feed-icon-32x32.png" align="absmiddle" border="0"><SUP><IMG class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></P></DIV></TD></TR></TBODY></TABLE>
+<P><SPAN class="nobr"><A href="http://cwiki.apache.org/confluence/createrssfeed.action?types=blogpost&statuses=created&statuses=modified&spaces=FELIX&labelString=iPOJO&rssType=atom&maxResults=10&timeSpan=5&publicFeed=true&title=iPOJO%20Atom%20Feed" title="Stay tuned!" rel="nofollow"><IMG src="../../cwiki.apache.org/confluence/images/icons/feed-icon-32x32.png" align="absmiddle" border="0"><SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></P></DIV></TD></TR></TBODY></TABLE>
</DIV>
</BODY>
-
+<!-- Mirrored Site: felix.apache.org. File: /site/temporal-service-dependency.html. Date: Mon, 13 Oct 2008 06:52:59 GMT -->
</HTML>
diff --git a/ipojo/handler/whiteboard/doc/changelog.txt b/ipojo/handler/whiteboard/doc/changelog.txt
index 8ca4f32..a907996 100644
--- a/ipojo/handler/whiteboard/doc/changelog.txt
+++ b/ipojo/handler/whiteboard/doc/changelog.txt
@@ -1,3 +1,10 @@
+Changes from 0.8.0 to 1.0.0
+---------------------------
+** Improvement
+ * [FELIX-673] - Provide OBR description to iPOJO bundles (2008-08-07)
+ * [FELIX-716] - Provide XML schemas for iPOJO descriptors (2008-09-09)
+
+
Version 0.8.0
-------------
-* [2008-05-16] Initial release
\ No newline at end of file
+ * Initial release (2008-05-16)
\ No newline at end of file
diff --git a/ipojo/handler/whiteboard/doc/media.data/apache.png b/ipojo/handler/whiteboard/doc/media.data/apache.png
new file mode 100644
index 0000000..5132f65
--- /dev/null
+++ b/ipojo/handler/whiteboard/doc/media.data/apache.png
Binary files differ
diff --git a/ipojo/handler/whiteboard/doc/media.data/gradient.png b/ipojo/handler/whiteboard/doc/media.data/gradient.png
new file mode 100644
index 0000000..6ddc10b
--- /dev/null
+++ b/ipojo/handler/whiteboard/doc/media.data/gradient.png
Binary files differ
diff --git a/ipojo/handler/whiteboard/doc/media.data/logo.png b/ipojo/handler/whiteboard/doc/media.data/logo.png
new file mode 100644
index 0000000..dccbddc
--- /dev/null
+++ b/ipojo/handler/whiteboard/doc/media.data/logo.png
Binary files differ
diff --git a/ipojo/handler/whiteboard/doc/media.data/site.css b/ipojo/handler/whiteboard/doc/media.data/site.css
new file mode 100644
index 0000000..3c83712
--- /dev/null
+++ b/ipojo/handler/whiteboard/doc/media.data/site.css
@@ -0,0 +1,25 @@
+/* @override http://felix.apache.org/site/media.data/site.css */
+
+body { background-color: #ffffff; color: #3b3b3b; font-family: Tahoma, Arial, sans-serif; font-size: 10pt; line-height: 140% }
+h1, h2, h3, h4, h5, h6 { font-weight: normal; color: #000000; line-height: 100%; margin-top: 0px}
+h1 { font-size: 200% }
+h2 { font-size: 175% }
+h3 { font-size: 150% }
+h4 { font-size: 140% }
+h5 { font-size: 130% }
+h6 { font-size: 120% }
+a { color: #1980af }
+a:visited { color: #1980af }
+a:hover { color: #1faae9 }
+.title { position: absolute; left: 1px; right: 1px; top:25px; height: 81px; background: url(gradient.png) repeat-x; background-position: bottom; }
+.logo { position: absolute; width: 15em; height: 81px; text-align: center; }
+.header { text-align: right; margin-right: 20pt; margin-top: 30pt;}
+.menu { border-top: 10px solid #f9bb00; position: absolute; top: 107px; left: 1px; width: 15em; bottom: 0px; padding: 0px; background-color: #fcfcfc }
+.menu ul { background-color: #fdf5d9; list-style: none; padding-left: 4em; margin-top: 0px; padding-top: 2em; padding-bottom: 2em; margin-left: 0px; color: #4a4a43}
+.menu a { text-decoration: none; color: #4a4a43 }
+.main { position: absolute; border-top: 10px solid #cde0ea; top: 107px; left: 15em; right: 1px; margin-left: 2px; padding-right: 4em; padding-left: 1em; padding-top: 1em;}
+.code { background-color: #eeeeee; border: solid 1px black; padding: 0.5em }
+.code-keyword { color: #880000 }
+.code-quote { color: #008800 }
+.code-object { color: #0000dd }
+.code-java { margin: 0em }
\ No newline at end of file
diff --git a/ipojo/handler/whiteboard/doc/white-board-pattern-handler.html b/ipojo/handler/whiteboard/doc/white-board-pattern-handler.html
new file mode 100644
index 0000000..dbd3f82
--- /dev/null
+++ b/ipojo/handler/whiteboard/doc/white-board-pattern-handler.html
@@ -0,0 +1,165 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<HTML>
+
+<!-- Mirrored Site: felix.apache.org. File: /site/white-board-pattern-handler.html. Date: Mon, 13 Oct 2008 06:52:59 GMT -->
+<HEAD>
+ <TITLE>Apache Felix - White Board Pattern Handler</TITLE>
+ <LINK rel="stylesheet" href="media.data/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="index.html"><IMG border="0" alt="Apache Felix" src="media.data/logo.png"></A></DIV><DIV class="header"><A href="http://www.apache.org/"><IMG border="0" alt="Apache" src="media.data/apache.png"></A></DIV></DIV>
+ <DIV class="menu">
+ <UL>
+ <LI><A href="news.html" title="news">news</A></LI>
+ <LI><A href="license.html" title="license">license</A></LI>
+ <LI><SPAN class="nobr"><A href="downloads.html" title="Visit page outside Confluence" rel="nofollow">downloads<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></LI>
+ <LI><A href="documentation.html" title="documentation">documentation</A></LI>
+ <LI><A href="mailinglists.html" title="mailinglists">mailing lists</A></LI>
+ <LI><A href="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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></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="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN>
+<!-- ApacheCon Ad -->
+<IFRAME src="http://www.apache.org/ads/button.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="135"></IFRAME>
+<P style="height: 100px">
+<!-- ApacheCon Ad --></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="WhiteBoardPatternHandler-Thewhiteboardpatternhandler"></A>The white board pattern handler</H1>
+<P>The objective of this handler is to simplify the development of white-board architecture. This architecture-style is based is very close to the extender architecture style but use services instead of bundles.<BR>
+A whiteboard is based on two different roles:</P>
+<UL class="alternate" type="square">
+ <LI>A consumer looking to special services or a services published with a special mark</LI>
+ <LI>Looked services</LI>
+</UL>
+
+
+<P>More information on this pattern is available in this <SPAN class="nobr"><A href="http://www.osgi.org/wiki/uploads/Links/whiteboard.pdf" title="Visit page outside Confluence" rel="nofollow">document<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN><BR>
+Implementing a white board pattern could be complex as the extender needs to track these services dynamically. Indeed looked services can be highly dynamic; they can arrive, leave or be modified at runtime.<BR>
+Several services specified in the OSGi specification use white board pattern such as the Device Access Manager.</P>
+<H2><A name="WhiteBoardPatternHandler-Usingthehandler"></A>Using the handler</H2>
+<P>First of all, you need to configure the component type to use the handler such as:</P>
+<DIV class="code"><DIV class="codeContent">
+<PRE class="code-xml"><SPAN class="code-tag"><ipojo <SPAN class="code-keyword">xmlns:wbp</SPAN>=<SPAN class="code-quote">"org.apache.felix.ipojo.white-board-pattern"</SPAN>></SPAN>
+ <component
+ className=<SPAN class="code-quote">"org.apache.felix.ipojo.test.FooWhiteBoardPattern"</SPAN>
+ >
+ <wbp:wbp
+ filter=<SPAN class="code-quote">"(my.property=1)"</SPAN>
+ onArrival=<SPAN class="code-quote">"onArrival"</SPAN>
+ onDeparture=<SPAN class="code-quote">"onDeparture"</SPAN>
+ onModification=<SPAN class="code-quote">"onModification"</SPAN>
+ />
+
+ <SPAN class="code-tag"><provides/></SPAN>
+ <SPAN class="code-tag"></component></SPAN></PRE>
+</DIV></DIV>
+<P>Notice that, this handler is an external handler. So, it uses the "org.apache.felix.ipojo.white-board-patter" namespace.<BR>
+Once described, you can implement your component. The methods specified methods will be called when a matching services arrives or leaves or are modified. The modification callback is optional. A matching service is detected by confronting the service reference against the specified filter.<BR>
+The filter can target specific service interface (with the objectclass property) or property values.<BR>
+In the previous example, these methods could be: </P>
+<DIV class="code"><DIV class="codeContent">
+<PRE class="code-java"><SPAN class="code-keyword">public</SPAN> class FooWhiteBoardPattern <SPAN class="code-keyword">implements</SPAN> Observable {
+ List list = <SPAN class="code-keyword">new</SPAN> ArrayList();
+ <SPAN class="code-object">int</SPAN> modifications = 0;
+ <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">synchronized</SPAN> void onArrival(ServiceReference ref) {
+ list.add(ref);
+ }
+ <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">synchronized</SPAN> void onDeparture(ServiceReference ref) {
+ list.remove(ref);
+ }
+ <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">synchronized</SPAN> void onModification(ServiceReference ref) {
+ modifications = modifications + 1;
+ }
+ <SPAN class="code-keyword">public</SPAN> <SPAN class="code-keyword">synchronized</SPAN> Map getObservations() {
+ Map map = <SPAN class="code-keyword">new</SPAN> HashMap();
+ map.put(<SPAN class="code-quote">"list"</SPAN>, list);
+ map.put(<SPAN class="code-quote">"modifications"</SPAN>, <SPAN class="code-keyword">new</SPAN> <SPAN class="code-object">Integer</SPAN>(modifications));
+ <SPAN class="code-keyword">return</SPAN> map;
+ }</PRE>
+</DIV></DIV>
+<P>All method received the arriving, leaving or modified service reference.</P>
+<H2><A name="WhiteBoardPatternHandler-Configuration"></A>Configuration</H2>
+<P>The handler has only three mandatory attributes:</P>
+<UL>
+ <LI>Filter: filter use to discover matching filter.</LI>
+ <LI>onArrival: declaring the method to invoke when a matching service arrives</LI>
+ <LI>onDeparture: declaring the method to invoke when a matching service leaves</LI>
+</UL>
+
+
+<P>The onModification attribute is optional. This method is called when an injected service reference is modified but stills valid against the filter.</P>
+<TABLE cellpadding="5" width="85%" cellspacing="8px" class="noteMacro" border="0" align="center"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="../../cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD>
+<P>The implementation will be notified of arrivals, modifications and departures, despite the instance is invalid. Indeed, the implementation must release all objects created from another bundle as soon it leaves.</P></TD></TR></TABLE>
+<H2><A name="WhiteBoardPatternHandler-Download"></A>Download</H2>
+<P>The handler is available on the <A href="download.html" title="Download">download</A> page.<BR>
+Sources are available on the Felix trunk at the following location: <SPAN class="nobr"><A href="http://svn.apache.org/repos/asf/felix/trunk/ipojo/handler/whiteboard" title="Visit page outside Confluence" rel="nofollow">http://svn.apache.org/repos/asf/felix/trunk/ipojo/handler/whiteboard<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></P></TD>
+<TD class="confluenceTd" valign="top" width="20%">
+<H6><A name="WhiteBoardPatternHandler-Overview"></A><B>Overview</B></H6>
+<UL>
+ <LI><A href="apache-felix-ipojo.html" title="Apache Felix iPOJO">Home Page</A></LI>
+ <LI><A href="apache-felix-ipojo-feature-overview.html" title="Apache Felix iPOJO Feature Overview">iPOJO Feature Overview</A></LI>
+ <LI><A href="download.html" title="Download">Download & Install </A></LI>
+</UL>
+
+
+<H6><A name="WhiteBoardPatternHandler-GettingStarted"></A><B>Getting Started</B></H6>
+<UL>
+ <LI><A href="ipojo-in-10-minutes.html" title="iPOJO in 10 minutes">iPOJO in 10 minutes</A></LI>
+ <LI><A href="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="ipojo-advanced-tutorial.html" title="iPOJO Advanced Tutorial">iPOJO Advanced Tutorial</A></LI>
+</UL>
+
+
+<H6><A name="WhiteBoardPatternHandler-UserGuide"></A><B>User Guide</B></H6>
+<UL>
+ <LI><A href="describing-components.html" title="Describing components">Describing components (handler list) </A></LI>
+ <LI><A href="how-to-use-ipojo-annotations.html" title="How to use iPOJO Annotations">How to use iPOJO Annotations</A></LI>
+ <LI><A href="using-xml-schemas.html" title="Using XML Schemas">Using XML Schemas</A></LI>
+ <LI><A href="ipojo-advanced-topics.html" title="iPOJO Advanced Topics">Advanced Topics</A></LI>
+ <LI><A href="ipojo-faq.html" title="iPOJO FAQ">FAQ</A></LI>
+</UL>
+
+
+<H6><A name="WhiteBoardPatternHandler-Tools"></A><B>Tools</B></H6>
+<UL>
+ <LI><A href="ipojo-eclipse-plug-in.html" title="iPOJO Eclipse Plug-in">iPOJO Eclipse Plug-in</A></LI>
+ <LI><A href="ipojo-ant-task.html" title="iPOJO Ant Task">iPOJO Ant Task</A></LI>
+ <LI><A href="ipojo-maven-plug-in.html" title="iPOJO Maven Plug-in">iPOJO Maven Plug-in</A></LI>
+ <LI><A href="ipojo-concepts-overview.html" title="iPOJO Concepts Overview">iPOJO concepts overview</A></LI>
+</UL>
+
+
+<H6><A name="WhiteBoardPatternHandler-DeveloperGuide"></A><B>Developer Guide</B></H6>
+<UL>
+ <LI>API: <SPAN class="nobr"><A href="http://people.apache.org/~clement/ipojo/api/0.8/" title="Visit page outside Confluence" rel="nofollow">0.8<SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></LI>
+ <LI><A href="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="how-to-use-ipojo-manipulation-metadata.html" title="How to use iPOJO Manipulation Metadata">How to use iPOJO Manipulation Metadata</A></LI>
+</UL>
+
+
+<H6><A name="WhiteBoardPatternHandler-Misc%26Contact"></A><B>Misc & Contact</B></H6>
+<UL>
+ <LI><A href="apache-felix-ipojo-issuestracker.html" title="apache-felix-ipojo-issuestracker">Issues Tracker</A></LI>
+ <LI><A href="apache-felix-ipojo-supportedvms.html" title="apache-felix-ipojo-supportedVMs">Supported JVMs</A></LI>
+ <LI><A href="apache-felix-ipojo-supportedosgi.html" title="apache-felix-ipojo-supportedOSGi">Supported OSGi Implementations</A></LI>
+ <LI><A href="future-ideas.html" title="Future Ideas">Future Ideas</A></LI>
+ <LI><A href="contact.html" title="Contact">Contact</A></LI>
+ <LI><A href="related-works.html" title="Related Works">Related Works</A></LI>
+ <LI><A href="article-presentations.html" title="Article & Presentations">Article & Presentations</A></LI>
+</UL>
+
+
+<HR>
+<DIV class="" align="center">
+<P><SPAN class="nobr"><A href="http://cwiki.apache.org/confluence/createrssfeed.action?types=blogpost&statuses=created&statuses=modified&spaces=FELIX&labelString=iPOJO&rssType=atom&maxResults=10&timeSpan=5&publicFeed=true&title=iPOJO%20Atom%20Feed" title="Stay tuned!" rel="nofollow"><IMG src="../../cwiki.apache.org/confluence/images/icons/feed-icon-32x32.png" align="absmiddle" border="0"><SUP><IMG class="rendericon" src="../../cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN></P></DIV></TD></TR></TBODY></TABLE>
+ </DIV>
+ </BODY>
+
+<!-- Mirrored Site: felix.apache.org. File: /site/white-board-pattern-handler.html. Date: Mon, 13 Oct 2008 06:52:59 GMT -->
+</HTML>