felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From clem...@apache.org
Subject svn commit: r734735 [11/12] - in /felix/trunk/ipojo: annotations/doc/ annotations/doc/how-to-use-ipojo-annotations_files/ annotations/doc/how-to-use-ipojo-annotations_files/button_data/ annotations/doc/media.data/ ant/doc/ ant/doc/ipojo-ant-task_files/...
Date Thu, 15 Jan 2009 15:35:22 GMT
Added: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency.html
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency.html?rev=734735&view=auto
==============================================================================
--- felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency.html (added)
+++ felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency.html Thu Jan 15 07:35:17 2009
@@ -0,0 +1,257 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head>
+
+
+  
+    <title>Apache Felix - Temporal Service Dependency</title>
+    <link rel="stylesheet" href="temporal-service-dependency_files/site.css" type="text/css" media="all">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  </head><body>
+    <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="temporal-service-dependency_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="temporal-service-dependency_files/apache.png" border="0"></a></div></div>
+    <div class="menu">
+<ul>
+	<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
+	<li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
+	<li><span class="nobr"><a href="http://felix.apache.org/site/downloads.cgi" title="Visit page outside Confluence" rel="nofollow">downloads<sup><img class="rendericon" src="temporal-service-dependency_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
+	<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
+	<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
+	<li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
+	<li><span class="nobr"><a href="http://www.apache.org/" title="Visit page outside Confluence" rel="nofollow">asf<sup><img class="rendericon" src="temporal-service-dependency_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
+	<li><span class="nobr"><a href="http://www.apache.org/foundation/sponsorship.html" title="Visit page outside Confluence" rel="nofollow">sponsorship<sup><img class="rendericon" src="temporal-service-dependency_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
+	<li><span class="nobr"><a href="http://www.apache.org/foundation/thanks.html" title="Visit page outside Confluence" rel="nofollow">sponsors<sup><img class="rendericon" src="temporal-service-dependency_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span>
+<!-- ApacheCon Ad -->
+<iframe src="temporal-service-dependency_files/button.html" style="border-width: 0pt; float: left;" scrolling="no" width="135" frameborder="0" height="135"></iframe>
+<p style="height: 100px;">
+<!-- ApacheCon Ad -->
+</p></li></ul> </div>
+    <div class="main">
+<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr>
+<td class="confluenceTd" valign="top" width="80%">
+<h1><a name="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.<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">&lt;iPOJO <span class="code-keyword">xmlns:temporal</span>=<span class="code-quote">"org.apache.felix.ipojo.handler.temporal"</span>&gt;</span>
+&lt;component
+    className=<span class="code-quote">"org.apache.felix.ipojo.example.Temporal"</span>&gt;
+
+    <span class="code-tag"><span class="code-comment">&lt;!-- Temporal dependency configuration --&gt;</span></span>
+    <span class="code-tag">&lt;temporal:requires field=<span class="code-quote">"mytemporal"</span>/&gt;</span>
+
+    <span class="code-tag">&lt;provides/&gt;</span>
+
+<span class="code-tag">&lt;/component&gt;</span>
+<span class="code-tag">&lt;/iPOJO&gt;</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)
+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>
+</ul>
+
+
+<p>The handler supports on specific optional attributes:</p>
+<ul>
+	<li>Timeout: the maximum time waited in order to find a provider
+(default: 3s). For an infinite timeout, the timeout value is either
+"infinite" or "-1".</li>
+	<li>OnTimeout: 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 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. <b>[ In the 1.1.0-SNAPSHOT version, the <tt>empty-array</tt> attribute became <tt>empty</tt>]</b></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>
+
+
+<div class="code"><div class="codeContent">
+<pre class="code-xml"><span class="code-tag">&lt;iPOJO <span class="code-keyword">xmlns:temporal</span>=<span class="code-quote">"org.apache.felix.ipojo.handler.temporal"</span>&gt;</span>
+&lt;component
+    className=<span class="code-quote">"org.apache.felix.ipojo.example.Temporal"</span>&gt;
+
+    <span class="code-tag"><span class="code-comment">&lt;!-- Temporal dependency configuration --&gt;</span></span>
+    <span class="code-tag">&lt;temporal:requires field=<span class="code-quote">"fs"</span> timeout=<span class="code-quote">"300"</span> ontimeout=<span class="code-quote">"nullable"</span>/&gt;</span>
+
+    <span class="code-tag">&lt;provides/&gt;</span>
+
+<span class="code-tag">&lt;/component&gt;</span>
+<span class="code-tag">&lt;/iPOJO&gt;</span></pre>
+</div></div>
+<h2><a name="TemporalServiceDependency-Collectionsupport\1.1.0SNAPSHOTversion\"></a>Collection support <b>[1.1.0-SNAPSHOT version ]</b></h2>
+<p>Temporal dependencies can also be injected inside Collection. To
+achieve this, the 'specification' attribute must indicates the looked
+specification, and the field must be a Collection.</p>
+<div class="code"><div class="codeContent">
+<pre class="code-xml"><span class="code-tag">&lt;iPOJO <span class="code-keyword">xmlns:temporal</span>=<span class="code-quote">"org.apache.felix.ipojo.handler.temporal"</span>&gt;</span>
+&lt;component
+    className=<span class="code-quote">"org.apache.felix.ipojo.example.Temporal"</span>&gt;
+
+    <span class="code-tag"><span class="code-comment">&lt;!-- Temporal dependency configuration --&gt;</span></span>
+    <span class="code-tag">&lt;temporal:requires field=<span class="code-quote">"mycollection"</span> specification=<span class="code-quote">"my.service.specification"</span>/&gt;</span>
+
+    <span class="code-tag">&lt;provides/&gt;</span>
+
+<span class="code-tag">&lt;/component&gt;</span>
+<span class="code-tag">&lt;/iPOJO&gt;</span></pre>
+</div></div>
+<h2><a name="TemporalServiceDependency-Proxysupport\1.1.0SNAPSHOTversion\"></a>Proxy support <b>[1.1.0-SNAPSHOT version ]</b></h2>
+<p>Temporal dependencies can also be injected as proxies. So it is possible to give the temporal dependency to helper object.<br>
+On 'scalar' dependencies, the service lookup is executed during an
+operation invocation. Timeout policies are also executed is the lookup
+failed.<br>
+On aggregate dependencies (necessary Collection), the service lookup is
+executed when the iterator(), and toArray(...) methods are invoked.
+Timeout policies <br>
+are also executed if the lookup failed.</p>
+
+<p>To set a temporal dependency as a proxy, just add the <tt>proxy</tt> attribute as follows:</p>
+<div class="code"><div class="codeContent">
+<pre class="code-xml"><span class="code-tag">&lt;iPOJO <span class="code-keyword">xmlns:temporal</span>=<span class="code-quote">"org.apache.felix.ipojo.handler.temporal"</span>&gt;</span>
+&lt;component
+    className=<span class="code-quote">"org.apache.felix.ipojo.example.Temporal"</span>&gt;
+
+    <span class="code-tag"><span class="code-comment">&lt;!-- Temporal dependencies configuration --&gt;</span></span>
+    <span class="code-tag">&lt;temporal:requires proxy=<span class="code-quote">"true"</span> field=<span class="code-quote">"fs"</span>/&gt;</span>
+    <span class="code-tag">&lt;temporal:requires proxy=<span class="code-quote">"true"</span> field=<span class="code-quote">"mycollection"</span> specification=<span class="code-quote">"my.service.specification"</span>/&gt;</span>
+
+
+    <span class="code-tag">&lt;provides/&gt;</span>
+
+<span class="code-tag">&lt;/component&gt;</span>
+<span class="code-tag">&lt;/iPOJO&gt;</span></pre>
+</div></div>
+
+<p>By default, proxies are disabled.</p>
+
+<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="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="temporal-service-dependency_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></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 &amp; 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/how-to-use-ipojo-annotations.html" title="How to use iPOJO Annotations">How to use iPOJO Annotations</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-hello-word-maven-based-tutorial.html" title="iPOJO Hello Word (Maven-Based) tutorial">iPOJO Hello Word (Maven-Based) tutorial</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-advanced-tutorial.html" title="iPOJO Advanced Tutorial">iPOJO Advanced Tutorial</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-composition-tutorial.html" title="iPOJO Composition Tutorial">iPOJO Composition Tutorial</a></li>
+</ul>
+
+
+<h6><a name="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 (handler list) </a></li>
+	<li><a href="http://felix.apache.org/site/using-xml-schemas.html" title="Using XML Schemas">Using XML Schemas</a></li>
+	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-testing-components.html" title="apache-felix-ipojo-testing-components">Testing components</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-advanced-topics.html" title="iPOJO Advanced Topics">Advanced Topics</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-faq.html" title="iPOJO FAQ">FAQ</a></li>
+</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/apache-felix-ipojo-junit4osgi.html" title="apache-felix-ipojo-junit4osgi">Junit4OSGi</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-concepts-overview.html" title="iPOJO Concepts Overview">iPOJO concepts overview</a></li>
+</ul>
+
+
+<h6><a name="TemporalServiceDependency-DeveloperGuide"></a><b>Developer Guide</b></h6>
+<ul>
+	<li>API: <span class="nobr"><a href="http://people.apache.org/%7Eclement/ipojo/api/1.0/" title="Visit page outside Confluence" rel="nofollow">1.0<sup><img class="rendericon" src="temporal-service-dependency_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
+	<li><a href="http://felix.apache.org/site/how-to-write-your-own-handler.html" title="How to write your own handler">How to write your own handler</a></li>
+	<li><a href="http://felix.apache.org/site/how-to-use-ipojo-manipulation-metadata.html" title="How to use iPOJO Manipulation Metadata">How to use iPOJO Manipulation Metadata</a></li>
+	<li><a href="http://felix.apache.org/site/dive-into-the-ipojo-manipulation-depths.html" title="Dive into the iPOJO Manipulation depths">Dive into the iPOJO Manipulation depths</a></li>
+</ul>
+
+
+<h6><a name="TemporalServiceDependency-Misc&amp;Contact"></a><b>Misc &amp; Contact</b></h6>
+<ul>
+	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-issuestracker.html" title="apache-felix-ipojo-issuestracker">Issues Tracker</a></li>
+	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-supportedvms.html" title="apache-felix-ipojo-supportedVMs">Supported JVMs</a></li>
+	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-supportedosgi.html" title="apache-felix-ipojo-supportedOSGi">Supported OSGi Implementations</a></li>
+	<li><span class="nobr"><a href="http://ipojo-dark-side.blogspot.com/" title="Visit page outside Confluence" rel="nofollow">iPOJO's Dark Side Blog<sup><img class="rendericon" src="temporal-service-dependency_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
+	<li><a href="http://felix.apache.org/site/future-ideas.html" title="Future Ideas">Future Ideas</a></li>
+	<li><a href="http://felix.apache.org/site/contact.html" title="Contact">Contact</a></li>
+	<li><a href="http://felix.apache.org/site/related-works.html" title="Related Works">Related Works</a></li>
+	<li><a href="http://felix.apache.org/site/article-presentations.html" title="Article &amp; Presentations">Article &amp; Presentations</a></li>
+</ul>
+
+
+<hr>
+<div class="" align="center">
+<p><span class="nobr"><a href="http://cwiki.apache.org/confluence/createrssfeed.action?types=blogpost&amp;statuses=created&amp;statuses=modified&amp;spaces=FELIX&amp;labelString=iPOJO&amp;rssType=atom&amp;maxResults=10&amp;timeSpan=5&amp;publicFeed=true&amp;title=iPOJO%20Atom%20Feed" title="Stay tuned!" rel="nofollow"><img src="temporal-service-dependency_files/feed-icon-32x32.png" align="absmiddle" border="0"><sup><img class="rendericon" src="temporal-service-dependency_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></p></div>
+
+<script type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script src="temporal-service-dependency_files/ga.js" type="text/javascript"></script>
+<script type="text/javascript">
+var pageTracker = _gat._getTracker("UA-1518442-4");
+pageTracker._trackPageview();
+</script>
+</td></tr></tbody></table>
+    </div>
+  </body></html>
\ No newline at end of file

Propchange: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency.html
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/apache.png
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/apache.png?rev=734735&view=auto
==============================================================================
Binary file - no diff available.

Propchange: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/apache.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/button.html
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/button.html?rev=734735&view=auto
==============================================================================
--- felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/button.html (added)
+++ felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/button.html Thu Jan 15 07:35:17 2009
@@ -0,0 +1,5 @@
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><!-- ads start -->
+</head><body><a href="http://eu.apachecon.com/c/aceu2009/" target="_blank"><img src="button_data/2009-europe-125x125.png" title="ApacheCon Europe 2009" border="0" width="125" height="125"></a>
+<!-- ads end -->
+</body></html>
\ No newline at end of file

Propchange: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/button.html
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/button_data/2009-europe-125x125.png
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/button_data/2009-europe-125x125.png?rev=734735&view=auto
==============================================================================
Binary file - no diff available.

Propchange: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/button_data/2009-europe-125x125.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/feed-icon-32x32.png
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/feed-icon-32x32.png?rev=734735&view=auto
==============================================================================
Binary file - no diff available.

Propchange: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/feed-icon-32x32.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/ga.js
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/ga.js?rev=734735&view=auto
==============================================================================
--- felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/ga.js (added)
+++ felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/ga.js Thu Jan 15 07:35:17 2009
@@ -0,0 +1,41 @@
+var _gat=new Object({c:"length",lb:"4.3",m:"cookie",b:undefined,cb:function(d,a){this.zb=d;this.Nb=a},r:"__utma=",W:"__utmb=",ma:"__utmc=",Ta:"__utmk=",na:"__utmv=",oa:"__utmx=",Sa:"GASO=",X:"__utmz=",lc:"http://www.google-analytics.com/__utm.gif",mc:"https://ssl.google-analytics.com/__utm.gif",Wa:"utmcid=",Ya:"utmcsr=",$a:"utmgclid=",Ua:"utmccn=",Xa:"utmcmd=",Za:"utmctr=",Va:"utmcct=",Hb:false,_gasoDomain:undefined,_gasoCPath:undefined,e:window,a:document,k:navigator,t:function(d){var a=1,c=0,h,
+o;if(!_gat.q(d)){a=0;for(h=d[_gat.c]-1;h>=0;h--){o=d.charCodeAt(h);a=(a<<6&268435455)+o+(o<<14);c=a&266338304;a=c!=0?a^c>>21:a}}return a},C:function(d,a,c){var h=_gat,o="-",k,l,s=h.q;if(!s(d)&&!s(a)&&!s(c)){k=h.w(d,a);if(k>-1){l=d.indexOf(c,k);if(l<0)l=d[h.c];o=h.F(d,k+h.w(a,"=")+1,l)}}return o},Ea:function(d){var a=false,c=0,h,o;if(!_gat.q(d)){a=true;for(h=0;h<d[_gat.c];h++){o=d.charAt(h);c+="."==o?1:0;a=a&&c<=1&&(0==h&&"-"==o||_gat.P(".0123456789",o))}}return a},d:function(d,a){var c=encodeURIComponent;
+return c instanceof Function?(a?encodeURI(d):c(d)):escape(d)},J:function(d,a){var c=decodeURIComponent,h;d=d.split("+").join(" ");if(c instanceof Function)try{h=a?decodeURI(d):c(d)}catch(o){h=unescape(d)}else h=unescape(d);return h},Db:function(d){return d&&d.hash?_gat.F(d.href,_gat.w(d.href,"#")):""},q:function(d){return _gat.b==d||"-"==d||""==d},Lb:function(d){return d[_gat.c]>0&&_gat.P(" \n\r\t",d)},P:function(d,a){return _gat.w(d,a)>-1},h:function(d,a){d[d[_gat.c]]=a},T:function(d){return d.toLowerCase()},
+z:function(d,a){return d.split(a)},w:function(d,a){return d.indexOf(a)},F:function(d,a,c){c=_gat.b==c?d[_gat.c]:c;return d.substring(a,c)},uc:function(){var d=_gat.b,a=window;if(a&&a.gaGlobal&&a.gaGlobal.hid)d=a.gaGlobal.hid;else{d=Math.round(Math.random()*2147483647);a.gaGlobal=a.gaGlobal?a.gaGlobal:{};a.gaGlobal.hid=d}return d},wa:function(){return Math.round(Math.random()*2147483647)},Gc:function(){return(_gat.wa()^_gat.vc())*2147483647},vc:function(){var d=_gat.k,a=_gat.a,c=_gat.e,h=a[_gat.m]?
+a[_gat.m]:"",o=c.history[_gat.c],k,l,s=[d.appName,d.version,d.language?d.language:d.browserLanguage,d.platform,d.userAgent,d.javaEnabled()?1:0].join("");if(c.screen)s+=c.screen.width+"x"+c.screen.height+c.screen.colorDepth;else if(c.java){l=java.awt.Toolkit.getDefaultToolkit().getScreenSize();s+=l.screen.width+"x"+l.screen.height}s+=h;s+=a.referrer?a.referrer:"";k=s[_gat.c];while(o>0)s+=o--^k++;return _gat.t(s)}});_gat.hc=function(){var d=this,a=_gat.cb;function c(h,o){return new a(h,o)}d.db="utm_campaign";d.eb="utm_content";d.fb="utm_id";d.gb="utm_medium";d.hb="utm_nooverride";d.ib="utm_source";d.jb="utm_term";d.kb="gclid";d.pa=0;d.I=0;d.wb="15768000";d.Tb="1800";d.ea=[];d.ga=[];d.Ic="cse";d.Gb="q";d.ab="google";d.fa=[c(d.ab,d.Gb),c("yahoo","p"),c("msn","q"),c("aol","query"),c("aol","encquery"),c("lycos","query"),c("ask","q"),c("altavista","q"),c("netscape","query"),c("cnn","query"),c("looksmart","qt"),c("about",
+"terms"),c("mamma","query"),c("alltheweb","q"),c("gigablast","q"),c("voila","rdata"),c("virgilio","qs"),c("live","q"),c("baidu","wd"),c("alice","qs"),c("yandex","text"),c("najdi","q"),c("aol","q"),c("club-internet","query"),c("mama","query"),c("seznam","q"),c("search","q"),c("wp","szukaj"),c("onet","qt"),c("netsprint","q"),c("google.interia","q"),c("szukacz","q"),c("yam","k"),c("pchome","q"),c("kvasir","searchExpr"),c("sesam","q"),c("ozu","q"),c("terra","query"),c("nostrum","query"),c("mynet","q"),
+c("ekolay","q"),c("search.ilse","search_for")];d.B=undefined;d.Kb=false;d.p="/";d.ha=100;d.Da="/__utm.gif";d.ta=1;d.ua=1;d.G="|";d.sa=1;d.qa=1;d.pb=1;d.g="auto";d.D=1;d.Ga=1000;d.Yc=10;d.nc=10;d.Zc=0.2};_gat.Y=function(d,a){var c,h,o,k,l,s,q,f=this,n=_gat,w=n.q,x=n.c,g,z=a;f.a=d;function B(i){var b=i instanceof Array?i.join("."):"";return w(b)?"-":b}function A(i,b){var e=[],j;if(!w(i)){e=n.z(i,".");if(b)for(j=0;j<e[x];j++)if(!n.Ea(e[j]))e[j]="-"}return e}function p(){return u(63072000000)}function u(i){var b=new Date,e=new Date(b.getTime()+i);return"expires="+e.toGMTString()+"; "}function m(i,b){f.a[n.m]=i+"; path="+z.p+"; "+b+f.Cc()}function r(i,b,e){var j=f.V,t,v;for(t=0;t<j[x];t++){v=j[t][0];
+v+=w(b)?b:b+j[t][4];j[t][2](n.C(i,v,e))}}f.Jb=function(){return n.b==g||g==f.t()};f.Ba=function(){return l?l:"-"};f.Wb=function(i){l=i};f.Ma=function(i){g=n.Ea(i)?i*1:"-"};f.Aa=function(){return B(s)};f.Na=function(i){s=A(i)};f.Hc=function(){return g?g:"-"};f.Cc=function(){return w(z.g)?"":"domain="+z.g+";"};f.ya=function(){return B(c)};f.Ub=function(i){c=A(i,1)};f.K=function(){return B(h)};f.La=function(i){h=A(i,1)};f.za=function(){return B(o)};f.Vb=function(i){o=A(i,1)};f.Ca=function(){return B(k)};
+f.Xb=function(i){k=A(i);for(var b=0;b<k[x];b++)if(b<4&&!n.Ea(k[b]))k[b]="-"};f.Dc=function(){return q};f.Uc=function(i){q=i};f.pc=function(){c=[];h=[];o=[];k=[];l=n.b;s=[];g=n.b};f.t=function(){var i="",b;for(b=0;b<f.V[x];b++)i+=f.V[b][1]();return n.t(i)};f.Ha=function(i){var b=f.a[n.m],e=false;if(b){r(b,i,";");f.Ma(f.t());e=true}return e};f.Rc=function(i){r(i,"","&");f.Ma(n.C(i,n.Ta,"&"))};f.Wc=function(){var i=f.V,b=[],e;for(e=0;e<i[x];e++)n.h(b,i[e][0]+i[e][1]());n.h(b,n.Ta+f.t());return b.join("&")};
+f.bd=function(i,b){var e=f.V,j=z.p,t;f.Ha(i);z.p=b;for(t=0;t<e[x];t++)if(!w(e[t][1]()))e[t][3]();z.p=j};f.dc=function(){m(n.r+f.ya(),p())};f.Pa=function(){m(n.W+f.K(),u(z.Tb*1000))};f.ec=function(){m(n.ma+f.za(),"")};f.Ra=function(){m(n.X+f.Ca(),u(z.wb*1000))};f.fc=function(){m(n.oa+f.Ba(),p())};f.Qa=function(){m(n.na+f.Aa(),p())};f.cd=function(){m(n.Sa+f.Dc(),"")};f.V=[[n.r,f.ya,f.Ub,f.dc,"."],[n.W,f.K,f.La,f.Pa,""],[n.ma,f.za,f.Vb,f.ec,""],[n.oa,f.Ba,f.Wb,f.fc,""],[n.X,f.Ca,f.Xb,f.Ra,"."],[n.na,
+f.Aa,f.Na,f.Qa,"."]]};_gat.jc=function(d){var a=this,c=_gat,h=d,o,k=function(l){var s=(new Date).getTime(),q;q=(s-l[3])*(h.Zc/1000);if(q>=1){l[2]=Math.min(Math.floor(l[2]*1+q),h.nc);l[3]=s}return l};a.O=function(l,s,q,f,n,w,x){var g,z=h.D,B=q.location;if(!o)o=new c.Y(q,h);o.Ha(f);g=c.z(o.K(),".");if(g[1]<500||n){if(w)g=k(g);if(n||!w||g[2]>=1){if(!n&&w)g[2]=g[2]*1-1;g[1]=g[1]*1+1;l="?utmwv="+_gat.lb+"&utmn="+c.wa()+(c.q(B.hostname)?"":"&utmhn="+c.d(B.hostname))+(h.ha==100?"":"&utmsp="+c.d(h.ha))+l;if(0==z||2==z){var A=
+new Image(1,1);A.src=h.Da+l;var p=2==z?function(){}:x||function(){};A.onload=p}if(1==z||2==z){var u=new Image(1,1);u.src=("https:"==B.protocol?c.mc:c.lc)+l+"&utmac="+s+"&utmcc="+a.wc(q,f);u.onload=x||function(){}}}}o.La(g.join("."));o.Pa()};a.wc=function(l,s){var q=[],f=[c.r,c.X,c.na,c.oa],n,w=l[c.m],x;for(n=0;n<f[c.c];n++){x=c.C(w,f[n]+s,";");if(!c.q(x))c.h(q,f[n]+x+";")}return c.d(q.join("+"))}};_gat.i=function(){this.la=[]};_gat.i.bb=function(d,a,c,h,o,k){var l=this;l.cc=d;l.Oa=a;l.L=c;l.sb=h;l.Pb=o;l.Qb=k};_gat.i.bb.prototype.S=function(){var d=this,a=_gat.d;return"&"+["utmt=item","utmtid="+a(d.cc),"utmipc="+a(d.Oa),"utmipn="+a(d.L),"utmiva="+a(d.sb),"utmipr="+a(d.Pb),"utmiqt="+a(d.Qb)].join("&")};_gat.i.$=function(d,a,c,h,o,k,l,s){var q=this;q.v=d;q.ob=a;q.bc=c;q.ac=h;q.Yb=o;q.ub=k;q.$b=l;q.xb=s;q.ca=[]};_gat.i.$.prototype.mb=function(d,a,c,h,o){var k=this,l=k.Eb(d),s=k.v,q=_gat;if(q.b==
+l)q.h(k.ca,new q.i.bb(s,d,a,c,h,o));else{l.cc=s;l.Oa=d;l.L=a;l.sb=c;l.Pb=h;l.Qb=o}};_gat.i.$.prototype.Eb=function(d){var a,c=this.ca,h;for(h=0;h<c[_gat.c];h++)a=d==c[h].Oa?c[h]:a;return a};_gat.i.$.prototype.S=function(){var d=this,a=_gat.d;return"&"+["utmt=tran","utmtid="+a(d.v),"utmtst="+a(d.ob),"utmtto="+a(d.bc),"utmttx="+a(d.ac),"utmtsp="+a(d.Yb),"utmtci="+a(d.ub),"utmtrg="+a(d.$b),"utmtco="+a(d.xb)].join("&")};_gat.i.prototype.nb=function(d,a,c,h,o,k,l,s){var q=this,f=_gat,n=q.xa(d);if(f.b==
+n){n=new f.i.$(d,a,c,h,o,k,l,s);f.h(q.la,n)}else{n.ob=a;n.bc=c;n.ac=h;n.Yb=o;n.ub=k;n.$b=l;n.xb=s}return n};_gat.i.prototype.xa=function(d){var a,c=this.la,h;for(h=0;h<c[_gat.c];h++)a=d==c[h].v?c[h]:a;return a};_gat.gc=function(d){var a=this,c="-",h=_gat,o=d;a.Ja=screen;a.qb=!self.screen&&self.java?java.awt.Toolkit.getDefaultToolkit():h.b;a.a=document;a.e=window;a.k=navigator;a.Ka=c;a.Sb=c;a.tb=c;a.Ob=c;a.Mb=1;a.Bb=c;function k(){var l,s,q,f,n="ShockwaveFlash",w="$version",x=a.k?a.k.plugins:h.b;if(x&&x[h.c]>0)for(l=0;l<x[h.c]&&!q;l++){s=x[l];if(h.P(s.name,"Shockwave Flash"))q=h.z(s.description,"Shockwave Flash ")[1]}else{n=n+"."+n;try{f=new ActiveXObject(n+".7");q=f.GetVariable(w)}catch(g){}if(!q)try{f=
+new ActiveXObject(n+".6");q="WIN 6,0,21,0";f.AllowScriptAccess="always";q=f.GetVariable(w)}catch(z){}if(!q)try{f=new ActiveXObject(n);q=f.GetVariable(w)}catch(z){}if(q){q=h.z(h.z(q," ")[1],",");q=q[0]+"."+q[1]+" r"+q[2]}}return q?q:c}a.xc=function(){var l;if(self.screen){a.Ka=a.Ja.width+"x"+a.Ja.height;a.Sb=a.Ja.colorDepth+"-bit"}else if(a.qb)try{l=a.qb.getScreenSize();a.Ka=l.width+"x"+l.height}catch(s){}a.Ob=h.T(a.k&&a.k.language?a.k.language:(a.k&&a.k.browserLanguage?a.k.browserLanguage:c));a.Mb=
+a.k&&a.k.javaEnabled()?1:0;a.Bb=o?k():c;a.tb=h.d(a.a.characterSet?a.a.characterSet:(a.a.charset?a.a.charset:c))};a.Xc=function(){return"&"+["utmcs="+h.d(a.tb),"utmsr="+a.Ka,"utmsc="+a.Sb,"utmul="+a.Ob,"utmje="+a.Mb,"utmfl="+h.d(a.Bb)].join("&")}};_gat.n=function(d,a,c,h,o){var k=this,l=_gat,s=l.q,q=l.b,f=l.P,n=l.C,w=l.T,x=l.z,g=l.c;k.a=a;k.f=d;k.Rb=c;k.ja=h;k.o=o;function z(p){return s(p)||"0"==p||!f(p,"://")}function B(p){var u="";p=w(x(p,"://")[1]);if(f(p,"/")){p=x(p,"/")[1];if(f(p,"?"))u=x(p,"?")[0]}return u}function A(p){var u="";u=w(x(p,"://")[1]);if(f(u,"/"))u=x(u,"/")[0];return u}k.Fc=function(p){var u=k.Fb(),m=k.o;return new l.n.s(n(p,m.fb+"=","&"),n(p,m.ib+"=","&"),n(p,m.kb+"=","&"),k.ba(p,m.db,"(not set)"),k.ba(p,m.gb,"(not set)"),
+k.ba(p,m.jb,u&&!s(u.R)?l.J(u.R):q),k.ba(p,m.eb,q))};k.Ib=function(p){var u=A(p),m=B(p);if(f(u,k.o.ab)){p=x(p,"?").join("&");if(f(p,"&"+k.o.Gb+"="))if(m==k.o.Ic)return true}return false};k.Fb=function(){var p,u,m=k.Rb,r,i,b=k.o.fa;if(z(m)||k.Ib(m))return;p=A(m);for(r=0;r<b[g];r++){i=b[r];if(f(p,w(i.zb))){m=x(m,"?").join("&");if(f(m,"&"+i.Nb+"=")){u=x(m,"&"+i.Nb+"=")[1];if(f(u,"&"))u=x(u,"&")[0];return new l.n.s(q,i.zb,q,"(organic)","organic",u,q)}}}};k.ba=function(p,u,m){var r=n(p,u+"=","&"),i=!s(r)?
+l.J(r):(!s(m)?m:"-");return i};k.Nc=function(p){var u=k.o.ea,m=false,r,i;if(p&&"organic"==p.da){r=w(l.J(p.R));for(i=0;i<u[g];i++)m=m||w(u[i])==r}return m};k.Ec=function(){var p="",u="",m=k.Rb;if(z(m)||k.Ib(m))return;p=w(x(m,"://")[1]);if(f(p,"/")){u=l.F(p,l.w(p,"/"));if(f(u,"?"))u=x(u,"?")[0];p=x(p,"/")[0]}if(0==l.w(p,"www."))p=l.F(p,4);return new l.n.s(q,p,q,"(referral)","referral",q,u)};k.sc=function(p){var u="";if(k.o.pa){u=l.Db(p);u=""!=u?u+"&":u}u+=p.search;return u};k.zc=function(){return new l.n.s(q,
+"(direct)",q,"(direct)","(none)",q,q)};k.Oc=function(p){var u=false,m,r,i=k.o.ga;if(p&&"referral"==p.da){m=w(l.d(p.ia));for(r=0;r<i[g];r++)u=u||f(m,w(i[r]))}return u};k.U=function(p){return q!=p&&p.Fa()};k.yc=function(p,u){var m="",r="-",i,b,e=0,j,t,v=k.f;if(!p)return"";t=k.a[l.m]?k.a[l.m]:"";m=k.sc(k.a.location);if(k.o.I&&p.Jb()){r=p.Ca();if(!s(r)&&!f(r,";")){p.Ra();return""}}r=n(t,l.X+v+".",";");i=k.Fc(m);if(k.U(i)){b=n(m,k.o.hb+"=","&");if("1"==b&&!s(r))return""}if(!k.U(i)){i=k.Fb();if(!s(r)&&
+k.Nc(i))return""}if(!k.U(i)&&u){i=k.Ec();if(!s(r)&&k.Oc(i))return""}if(!k.U(i))if(s(r)&&u)i=k.zc();if(!k.U(i))return"";if(!s(r)){var y=x(r,"."),E=new l.n.s;E.Cb(y.slice(4).join("."));j=w(E.ka())==w(i.ka());e=y[3]*1}if(!j||u){var F=n(t,l.r+v+".",";"),I=F.lastIndexOf("."),G=I>9?l.F(F,I+1)*1:0;e++;G=0==G?1:G;p.Xb([v,k.ja,G,e,i.ka()].join("."));p.Ra();return"&utmcn=1"}else return"&utmcr=1"}};_gat.n.s=function(d,a,c,h,o,k,l){var s=this;s.v=d;s.ia=a;s.ra=c;s.L=h;s.da=o;s.R=k;s.vb=l};_gat.n.s.prototype.ka=
+function(){var d=this,a=_gat,c=[],h=[[a.Wa,d.v],[a.Ya,d.ia],[a.$a,d.ra],[a.Ua,d.L],[a.Xa,d.da],[a.Za,d.R],[a.Va,d.vb]],o,k;if(d.Fa())for(o=0;o<h[a.c];o++)if(!a.q(h[o][1])){k=h[o][1].split("+").join("%20");k=k.split(" ").join("%20");a.h(c,h[o][0]+k)}return c.join("|")};_gat.n.s.prototype.Fa=function(){var d=this,a=_gat.q;return!(a(d.v)&&a(d.ia)&&a(d.ra))};_gat.n.s.prototype.Cb=function(d){var a=this,c=_gat,h=function(o){return c.J(c.C(d,o,"|"))};a.v=h(c.Wa);a.ia=h(c.Ya);a.ra=h(c.$a);a.L=h(c.Ua);a.da=
+h(c.Xa);a.R=h(c.Za);a.vb=h(c.Va)};_gat.Z=function(){var d=this,a=_gat,c={},h="k",o="v",k=[h,o],l="(",s=")",q="*",f="!",n="'",w={};w[n]="'0";w[s]="'1";w[q]="'2";w[f]="'3";var x=1;function g(m,r,i,b){if(a.b==c[m])c[m]={};if(a.b==c[m][r])c[m][r]=[];c[m][r][i]=b}function z(m,r,i){return a.b!=c[m]&&a.b!=c[m][r]?c[m][r][i]:a.b}function B(m,r){if(a.b!=c[m]&&a.b!=c[m][r]){c[m][r]=a.b;var i=true,b;for(b=0;b<k[a.c];b++)if(a.b!=c[m][k[b]]){i=false;break}if(i)c[m]=a.b}}function A(m){var r="",i=false,b,e;for(b=0;b<k[a.c];b++){e=m[k[b]];if(a.b!=
+e){if(i)r+=k[b];r+=p(e);i=false}else i=true}return r}function p(m){var r=[],i,b;for(b=0;b<m[a.c];b++)if(a.b!=m[b]){i="";if(b!=x&&a.b==m[b-1]){i+=b.toString();i+=f}i+=u(m[b]);a.h(r,i)}return l+r.join(q)+s}function u(m){var r="",i,b,e;for(i=0;i<m[a.c];i++){b=m.charAt(i);e=w[b];r+=a.b!=e?e:b}return r}d.Kc=function(m){return a.b!=c[m]};d.N=function(){var m=[],r;for(r in c)if(a.b!=c[r])a.h(m,r.toString()+A(c[r]));return m.join("")};d.Sc=function(m){if(m==a.b)return d.N();var r=[m.N()],i;for(i in c)if(a.b!=
+c[i]&&!m.Kc(i))a.h(r,i.toString()+A(c[i]));return r.join("")};d._setKey=function(m,r,i){if(typeof i!="string")return false;g(m,h,r,i);return true};d._setValue=function(m,r,i){if(typeof i!="number"&&(a.b==Number||!(i instanceof Number)))return false;if(Math.round(i)!=i||i==NaN||i==Infinity)return false;g(m,o,r,i.toString());return true};d._getKey=function(m,r){return z(m,h,r)};d._getValue=function(m,r){return z(m,o,r)};d._clearKey=function(m){B(m,h)};d._clearValue=function(m){B(m,o)}};_gat.ic=function(d,a){var c=this;c.jd=a;c.Pc=d;c._trackEvent=function(h,o,k){return a._trackEvent(c.Pc,h,o,k)}};_gat.kc=function(d){var a=this,c=_gat,h=c.b,o=c.q,k=c.w,l=c.F,s=c.C,q=c.P,f=c.z,n="location",w=c.c,x=h,g=new c.hc,z=false;a.a=document;a.e=window;a.ja=Math.round((new Date).getTime()/1000);a.H=d;a.yb=a.a.referrer;a.va=h;a.j=h;a.A=h;a.M=false;a.aa=h;a.rb="";a.l=h;a.Ab=h;a.f=h;a.u=h;function B(){if("auto"==g.g){var b=a.a.domain;if("www."==l(b,0,4))b=l(b,4);g.g=b}g.g=c.T(g.g)}function A()
 {var b=g.g,e=k(b,"www.google.")*k(b,".google.")*k(b,"google.");return e||"/"!=g.p||k(b,"google.org")>-1}function p(b,
+e,j){if(o(b)||o(e)||o(j))return"-";var t=s(b,c.r+a.f+".",e),v;if(!o(t)){v=f(t,".");v[5]=v[5]?v[5]*1+1:1;v[3]=v[4];v[4]=j;t=v.join(".")}return t}function u(){return"file:"!=a.a[n].protocol&&A()}function m(b){if(!b||""==b)return"";while(c.Lb(b.charAt(0)))b=l(b,1);while(c.Lb(b.charAt(b[w]-1)))b=l(b,0,b[w]-1);return b}function r(b,e,j){if(!o(b())){e(c.J(b()));if(!q(b(),";"))j()}}function i(b){var e,j=""!=b&&a.a[n].host!=b;if(j)for(e=0;e<g.B[w];e++)j=j&&k(c.T(b),c.T(g.B[e]))==-1;return j}a.Bc=function(){if(!g.g||
+""==g.g||"none"==g.g){g.g="";return 1}B();return g.pb?c.t(g.g):1};a.tc=function(b,e){if(o(b))b="-";else{e+=g.p&&"/"!=g.p?g.p:"";var j=k(b,e);b=j>=0&&j<=8?"0":("["==b.charAt(0)&&"]"==b.charAt(b[w]-1)?"-":b)}return b};a.Ia=function(b){var e="",j=a.a;e+=a.aa?a.aa.Xc():"";e+=g.qa?a.rb:"";e+=g.ta&&!o(j.title)?"&utmdt="+c.d(j.title):"";e+="&utmhid="+c.uc()+"&utmr="+a.va+"&utmp="+a.Tc(b);return e};a.Tc=function(b){var e=a.a[n];b=h!=b&&""!=b?c.d(b,true):c.d(e.pathname+unescape(e.search),true);return b};a.$c=
+function(b){if(a.Q()){var e="";if(a.l!=h&&a.l.N().length>0)e+="&utme="+c.d(a.l.N());e+=a.Ia(b);x.O(e,a.H,a.a,a.f)}};a.qc=function(){var b=new c.Y(a.a,g);return b.Ha(a.f)?b.Wc():h};a._getLinkerUrl=function(b,e){var j=f(b,"#"),t=b,v=a.qc();if(v)if(e&&1>=j[w])t+="#"+v;else if(!e||1>=j[w])if(1>=j[w])t+=(q(b,"?")?"&":"?")+v;else t=j[0]+(q(b,"?")?"&":"?")+v+"#"+j[1];return t};a.Zb=function(){var b;if(a.A&&a.A[w]>=10&&!q(a.A,"=")){a.u.Uc(a.A);a.u.cd();c._gasoDomain=g.g;c._gasoCPath=g.p;b=a.a.createElement("script");
+b.type="text/javascript";b.id="_gasojs";b.src="https://www.google.com/analytics/reporting/overlay_js?gaso="+a.A+"&"+c.wa();a.a.getElementsByTagName("head")[0].appendChild(b)}};a.Jc=function(){var b=a.a[c.m],e=a.ja,j=a.u,t=a.f+"",v=a.e,y=v?v.gaGlobal:h,E,F=q(b,c.r+t+"."),I=q(b,c.W+t),G=q(b,c.ma+t),C,D=[],H="",K=false,J;b=o(b)?"":b;if(g.I){E=c.Db(a.a[n]);if(g.pa&&!o(E))H=E+"&";H+=a.a[n].search;if(!o(H)&&q(H,c.r)){j.Rc(H);if(!j.Jb())j.pc();C=j.ya()}r(j.Ba,j.Wb,j.fc);r(j.Aa,j.Na,j.Qa)}if(!o(C))if(o(j.K())||
+o(j.za())){C=p(H,"&",e);a.M=true}else{D=f(j.K(),".");t=D[0]}else if(F)if(!I||!G){C=p(b,";",e);a.M=true}else{C=s(b,c.r+t+".",";");D=f(s(b,c.W+t,";"),".")}else{C=[t,c.Gc(),e,e,e,1].join(".");a.M=true;K=true}C=f(C,".");if(v&&y&&y.dh==t){C[4]=y.sid?y.sid:C[4];if(K){C[3]=y.sid?y.sid:C[4];if(y.vid){J=f(y.vid,".");C[1]=J[0];C[2]=J[1]}}}j.Ub(C.join("."));D[0]=t;D[1]=D[1]?D[1]:0;D[2]=undefined!=D[2]?D[2]:g.Yc;D[3]=D[3]?D[3]:C[4];j.La(D.join("."));j.Vb(t);if(!o(j.Hc()))j.Ma(j.t());j.dc();j.Pa();j.ec()};a.Lc=
+function(){x=new c.jc(g)};a._initData=function(){var b;if(!z){a.Lc();a.f=a.Bc();a.u=new c.Y(a.a,g)}if(u())a.Jc();if(!z){if(u()){a.va=a.tc(a.Ac(),a.a.domain);if(g.sa){a.aa=new c.gc(g.ua);a.aa.xc()}if(g.qa){b=new c.n(a.f,a.a,a.va,a.ja,g);a.rb=b.yc(a.u,a.M)}}a.l=new c.Z;a.Ab=new c.Z;z=true}if(!c.Hb)a.Mc()};a._visitCode=function(){a._initData();var b=s(a.a[c.m],c.r+a.f+".",";"),e=f(b,".");return e[w]<4?"":e[1]};a._cookiePathCopy=function(b){a._initData();if(a.u)a.u.bd(a.f,b)};a.Mc=function(){var b=a.a[n].hash,
+e;e=b&&""!=b&&0==k(b,"#gaso=")?s(b,"gaso=","&"):s(a.a[c.m],c.Sa,";");if(e[w]>=10){a.A=e;if(a.e.addEventListener)a.e.addEventListener("load",a.Zb,false);else a.e.attachEvent("onload",a.Zb)}c.Hb=true};a.Q=function(){return a._visitCode()%10000<g.ha*100};a.Vc=function(){var b,e,j=a.a.links;if(!g.Kb){var t=a.a.domain;if("www."==l(t,0,4))t=l(t,4);g.B.push("."+t)}for(b=0;b<j[w]&&(g.Ga==-1||b<g.Ga);b++){e=j[b];if(i(e.host))if(!e.gatcOnclick){e.gatcOnclick=e.onclick?e.onclick:a.Qc;e.onclick=function(v){var y=
+!this.target||this.target=="_self"||this.target=="_top"||this.target=="_parent";y=y&&!a.oc(v);a.ad(v,this,y);return y?false:(this.gatcOnclick?this.gatcOnclick(v):true)}}}};a.Qc=function(){};a._trackPageview=function(b){if(u()){a._initData();if(g.B)a.Vc();a.$c(b);a.M=false}};a._trackTrans=function(){var b=a.f,e=[],j,t,v,y;a._initData();if(a.j&&a.Q()){for(j=0;j<a.j.la[w];j++){t=a.j.la[j];c.h(e,t.S());for(v=0;v<t.ca[w];v++)c.h(e,t.ca[v].S())}for(y=0;y<e[w];y++)x.O(e[y],a.H,a.a,b,true)}};a._setTrans=
+function(){var b=a.a,e,j,t,v,y=b.getElementById?b.getElementById("utmtrans"):(b.utmform&&b.utmform.utmtrans?b.utmform.utmtrans:h);a._initData();if(y&&y.value){a.j=new c.i;v=f(y.value,"UTM:");g.G=!g.G||""==g.G?"|":g.G;for(e=0;e<v[w];e++){v[e]=m(v[e]);j=f(v[e],g.G);for(t=0;t<j[w];t++)j[t]=m(j[t]);if("T"==j[0])a._addTrans(j[1],j[2],j[3],j[4],j[5],j[6],j[7],j[8]);else if("I"==j[0])a._addItem(j[1],j[2],j[3],j[4],j[5],j[6])}}};a._addTrans=function(b,e,j,t,v,y,E,F){a.j=a.j?a.j:new c.i;return a.j.nb(b,e,
+j,t,v,y,E,F)};a._addItem=function(b,e,j,t,v,y){var E;a.j=a.j?a.j:new c.i;E=a.j.xa(b);if(!E)E=a._addTrans(b,"","","","","","","");E.mb(e,j,t,v,y)};a._setVar=function(b){if(b&&""!=b&&A()){a._initData();var e=new c.Y(a.a,g),j=a.f;e.Na(j+"."+c.d(b));e.Qa();if(a.Q())x.O("&utmt=var",a.H,a.a,a.f)}};a._link=function(b,e){if(g.I&&b){a._initData();a.a[n].href=a._getLinkerUrl(b,e)}};a._linkByPost=function(b,e){if(g.I&&b&&b.action){a._initData();b.action=a._getLinkerUrl(b.action,e)}};a._setXKey=function(b,e,
+j){a.l._setKey(b,e,j)};a._setXValue=function(b,e,j){a.l._setValue(b,e,j)};a._getXKey=function(b,e){return a.l._getKey(b,e)};a._getXValue=function(b,e){return a.l.getValue(b,e)};a._clearXKey=function(b){a.l._clearKey(b)};a._clearXValue=function(b){a.l._clearValue(b)};a._createXObj=function(){a._initData();return new c.Z};a._sendXEvent=function(b){var e="";a._initData();if(a.Q()){e+="&utmt=event&utme="+c.d(a.l.Sc(b))+a.Ia();x.O(e,a.H,a.a,a.f,false,true)}};a._createEventTracker=function(b){a._initData();
+return new c.ic(b,a)};a._trackEvent=function(b,e,j,t){var v=true,y=a.Ab;if(h!=b&&h!=e&&""!=b&&""!=e){y._clearKey(5);y._clearValue(5);v=y._setKey(5,1,b)?v:false;v=y._setKey(5,2,e)?v:false;v=h==j||y._setKey(5,3,j)?v:false;v=h==t||y._setValue(5,1,t)?v:false;if(v)a._sendXEvent(y)}else v=false;return v};a.ad=function(b,e,j){a._initData();if(a.Q()){var t=new c.Z;t._setKey(6,1,e.href);var v=j?function(){a.rc(b,e)}:undefined;x.O("&utmt=event&utme="+c.d(t.N())+a.Ia(),a.H,a.a,a.f,false,true,v)}};a.rc=function(b,
+e){if(!b)b=a.e.event;var j=true;if(e.gatcOnclick)j=e.gatcOnclick(b);if(j||typeof j=="undefined")if(!e.target||e.target=="_self")a.e.location=e.href;else if(e.target=="_top")a.e.top.document.location=e.href;else if(e.target=="_parent")a.e.parent.document.location=e.href};a.oc=function(b){if(!b)b=a.e.event;var e=b.shiftKey||b.ctrlKey||b.altKey;if(!e)if(b.modifiers&&a.e.Event)e=b.modifiers&a.e.Event.CONTROL_MASK||b.modifiers&a.e.Event.SHIFT_MASK||b.modifiers&a.e.Event.ALT_MASK;return e};a._setDomainName=
+function(b){g.g=b};a.dd=function(){return g.g};a._addOrganic=function(b,e){c.h(g.fa,new c.cb(b,e))};a._clearOrganic=function(){g.fa=[]};a.hd=function(){return g.fa};a._addIgnoredOrganic=function(b){c.h(g.ea,b)};a._clearIgnoredOrganic=function(){g.ea=[]};a.ed=function(){return g.ea};a._addIgnoredRef=function(b){c.h(g.ga,b)};a._clearIgnoredRef=function(){g.ga=[]};a.fd=function(){return g.ga};a._setAllowHash=function(b){g.pb=b?1:0};a._setCampaignTrack=function(b){g.qa=b?1:0};a._setClientInfo=function(b){g.sa=
+b?1:0};a._getClientInfo=function(){return g.sa};a._setCookiePath=function(b){g.p=b};a._setTransactionDelim=function(b){g.G=b};a._setCookieTimeout=function(b){g.wb=b};a._setDetectFlash=function(b){g.ua=b?1:0};a._getDetectFlash=function(){return g.ua};a._setDetectTitle=function(b){g.ta=b?1:0};a._getDetectTitle=function(){return g.ta};a._setLocalGifPath=function(b){g.Da=b};a._getLocalGifPath=function(){return g.Da};a._setLocalServerMode=function(){g.D=0};a._setRemoteServerMode=function(){g.D=1};a._setLocalRemoteServerMode=
+function(){g.D=2};a.gd=function(){return g.D};a._getServiceMode=function(){return g.D};a._setSampleRate=function(b){g.ha=b};a._setSessionTimeout=function(b){g.Tb=b};a._setAllowLinker=function(b){g.I=b?1:0};a._setAllowAnchor=function(b){g.pa=b?1:0};a._setCampNameKey=function(b){g.db=b};a._setCampContentKey=function(b){g.eb=b};a._setCampIdKey=function(b){g.fb=b};a._setCampMediumKey=function(b){g.gb=b};a._setCampNOKey=function(b){g.hb=b};a._setCampSourceKey=function(b){g.ib=b};a._setCampTermKey=function(b){g.jb=
+b};a._setCampCIdKey=function(b){g.kb=b};a._getAccount=function(){return a.H};a._getVersion=function(){return _gat.lb};a.kd=function(b){g.B=[];if(b)g.B=b};a.md=function(b){g.Kb=b};a.ld=function(b){g.Ga=b};a._setReferrerOverride=function(b){a.yb=b};a.Ac=function(){return a.yb}};_gat._getTracker=function(d){var a=new _gat.kc(d);return a};

Propchange: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/ga.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/linkext7.gif
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/linkext7.gif?rev=734735&view=auto
==============================================================================
Binary file - no diff available.

Propchange: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/linkext7.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/logo.png
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/logo.png?rev=734735&view=auto
==============================================================================
Binary file - no diff available.

Propchange: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/logo.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/site.css
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/site.css?rev=734735&view=auto
==============================================================================
--- felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/site.css (added)
+++ felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/site.css Thu Jan 15 07:35:17 2009
@@ -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(http://felix.apache.org/site/media.data/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

Propchange: felix/trunk/ipojo/handler/temporal/doc/temporal-service-dependency_files/site.css
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler.html
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler.html?rev=734735&view=auto
==============================================================================
--- felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler.html (added)
+++ felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler.html Thu Jan 15 07:35:17 2009
@@ -0,0 +1,226 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head>
+
+
+  
+    <title>Apache Felix - White Board Pattern Handler</title>
+    <link rel="stylesheet" href="white-board-pattern-handler_files/site.css" type="text/css" media="all">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  </head><body>
+    <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="white-board-pattern-handler_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="white-board-pattern-handler_files/apache.png" border="0"></a></div></div>
+    <div class="menu">
+<ul>
+	<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
+	<li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
+	<li><span class="nobr"><a href="http://felix.apache.org/site/downloads.cgi" title="Visit page outside Confluence" rel="nofollow">downloads<sup><img class="rendericon" src="white-board-pattern-handler_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
+	<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
+	<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
+	<li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
+	<li><span class="nobr"><a href="http://www.apache.org/" title="Visit page outside Confluence" rel="nofollow">asf<sup><img class="rendericon" src="white-board-pattern-handler_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
+	<li><span class="nobr"><a href="http://www.apache.org/foundation/sponsorship.html" title="Visit page outside Confluence" rel="nofollow">sponsorship<sup><img class="rendericon" src="white-board-pattern-handler_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
+	<li><span class="nobr"><a href="http://www.apache.org/foundation/thanks.html" title="Visit page outside Confluence" rel="nofollow">sponsors<sup><img class="rendericon" src="white-board-pattern-handler_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span>
+<!-- ApacheCon Ad -->
+<iframe src="white-board-pattern-handler_files/button.html" style="border-width: 0pt; float: left;" scrolling="no" width="135" frameborder="0" height="135"></iframe>
+<p style="height: 100px;">
+<!-- ApacheCon Ad -->
+</p></li></ul> </div>
+    <div class="main">
+<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr>
+<td class="confluenceTd" valign="top" width="80%">
+<h1><a name="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>
+	<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="white-board-pattern-handler_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></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>
+
+<p><b>UPDATE</b>: the 1.1.0-SNAPSHOT has a new namespace <tt>org.apache.felix.ipojo.whiteboard</tt> instead of <tt>org.apache.felix.ipojo.white-board-pattern</tt></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">&lt;ipojo <span class="code-keyword">xmlns:wbp</span>=<span class="code-quote">"org.apache.felix.ipojo.whiteboard"</span>&gt;</span>
+     &lt;component 
+          className=<span class="code-quote">"org.apache.felix.ipojo.test.FooWhiteBoardPattern"</span>
+      &gt;
+        &lt;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>
+         /&gt;
+       
+         <span class="code-tag">&lt;provides/&gt;</span>
+      <span class="code-tag">&lt;/component&gt;</span></pre>
+</div></div>
+<p>Notice that, this handler is an external handler. So, it uses the "org.apache.felix.ipojo.whiteboard" 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 class="noteMacro" align="center" border="0" cellpadding="5" cellspacing="8" width="85%"><colgroup><col width="24"><col></colgroup><tbody><tr><td valign="top"><img src="white-board-pattern-handler_files/warning.gif" alt="" align="absmiddle" border="0" width="16" height="16"></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></tbody></table>
+<h2><a name="WhiteBoardPatternHandler-Configuringthehandlerwithannotations\Newin1.1.0SNAPSHOT\"></a>Configuring the handler with annotations [New in 1.1.0-SNAPSHOT]</h2>
+
+<p>It is possible to configure the handler with a simple annotation
+available in the annotation pack ('annotation' project in the iPOJO
+trunk). Here is an example of usage:</p>
+<div class="code"><div class="codeContent">
+<pre class="code-java"><span class="code-keyword">import</span> org.apache.felix.ipojo.annotations.Component;
+<span class="code-keyword">import</span> org.osgi.framework.ServiceReference;
+
+@Component
+@org.apache.felix.ipojo.whiteboard.Wbp(filter=<span class="code-quote">"(foo=<span class="code-keyword">true</span>)"</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-keyword">public</span> class WhiteBoardExemple {
+    
+    <span class="code-keyword">public</span> void onArrival(ServiceReference ref) {
+        <span class="code-comment">// <span class="code-keyword">do</span> something
+</span>    }
+    
+    <span class="code-keyword">public</span> void onDeparture(ServiceReference ref) {
+        <span class="code-comment">// <span class="code-keyword">do</span> something
+</span>    }
+    
+    <span class="code-keyword">public</span> void onModification(ServiceReference ref) {
+        <span class="code-comment">// <span class="code-keyword">do</span> something
+</span>    }
+
+}</pre>
+</div></div>
+
+<p>The <tt>onModification</tt> attribute is optional.The <tt>filter</tt> attribute allows setting the service filter.</p>
+
+
+<h2><a name="WhiteBoardPatternHandler-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="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="white-board-pattern-handler_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></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="http://felix.apache.org/site/apache-felix-ipojo.html" title="Apache Felix iPOJO">Home Page</a></li>
+	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-feature-overview.html" title="Apache Felix iPOJO Feature Overview">iPOJO Feature Overview</a></li>
+	<li><a href="http://felix.apache.org/site/download.html" title="Download">Download &amp; Install </a></li>
+</ul>
+
+
+<h6><a name="WhiteBoardPatternHandler-GettingStarted"></a><b>Getting Started</b></h6>
+<ul>
+	<li><a href="http://felix.apache.org/site/ipojo-in-10-minutes.html" title="iPOJO in 10 minutes">iPOJO in 10 minutes</a></li>
+	<li><a href="http://felix.apache.org/site/how-to-use-ipojo-annotations.html" title="How to use iPOJO Annotations">How to use iPOJO Annotations</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-hello-word-maven-based-tutorial.html" title="iPOJO Hello Word (Maven-Based) tutorial">iPOJO Hello Word (Maven-Based) tutorial</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-advanced-tutorial.html" title="iPOJO Advanced Tutorial">iPOJO Advanced Tutorial</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-composition-tutorial.html" title="iPOJO Composition Tutorial">iPOJO Composition Tutorial</a></li>
+</ul>
+
+
+<h6><a name="WhiteBoardPatternHandler-UserGuide"></a><b>User Guide</b></h6>
+<ul>
+	<li><a href="http://felix.apache.org/site/describing-components.html" title="Describing components">Describing components (handler list) </a></li>
+	<li><a href="http://felix.apache.org/site/using-xml-schemas.html" title="Using XML Schemas">Using XML Schemas</a></li>
+	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-testing-components.html" title="apache-felix-ipojo-testing-components">Testing components</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-advanced-topics.html" title="iPOJO Advanced Topics">Advanced Topics</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-faq.html" title="iPOJO FAQ">FAQ</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-reference-card.html" title="iPOJO-Reference-Card">iPOJO Reference Card</a></li>
+</ul>
+
+
+<h6><a name="WhiteBoardPatternHandler-Tools"></a><b>Tools</b></h6>
+<ul>
+	<li><a href="http://felix.apache.org/site/ipojo-eclipse-plug-in.html" title="iPOJO Eclipse Plug-in">iPOJO Eclipse Plug-in</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-ant-task.html" title="iPOJO Ant Task">iPOJO Ant Task</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-maven-plug-in.html" title="iPOJO Maven Plug-in">iPOJO Maven Plug-in</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-arch-command.html" title="iPOJO-Arch-Command">iPOJO Arch Command</a></li>
+	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-junit4osgi.html" title="apache-felix-ipojo-junit4osgi">Junit4OSGi</a></li>
+	<li><a href="http://felix.apache.org/site/ipojo-concepts-overview.html" title="iPOJO Concepts Overview">iPOJO concepts overview</a></li>
+</ul>
+
+
+<h6><a name="WhiteBoardPatternHandler-DeveloperGuide"></a><b>Developer Guide</b></h6>
+<ul>
+	<li>API: <span class="nobr"><a href="http://people.apache.org/%7Eclement/ipojo/api/1.0/" title="Visit page outside Confluence" rel="nofollow">1.0<sup><img class="rendericon" src="white-board-pattern-handler_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
+	<li><a href="http://felix.apache.org/site/how-to-write-your-own-handler.html" title="How to write your own handler">How to write your own handler</a></li>
+	<li><a href="http://felix.apache.org/site/how-to-use-ipojo-manipulation-metadata.html" title="How to use iPOJO Manipulation Metadata">How to use iPOJO Manipulation Metadata</a></li>
+	<li><a href="http://felix.apache.org/site/dive-into-the-ipojo-manipulation-depths.html" title="Dive into the iPOJO Manipulation depths">Dive into the iPOJO Manipulation depths</a></li>
+</ul>
+
+
+<h6><a name="WhiteBoardPatternHandler-Misc&amp;Contact"></a><b>Misc &amp; Contact</b></h6>
+<ul>
+	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-issuestracker.html" title="apache-felix-ipojo-issuestracker">Issues Tracker</a></li>
+	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-supportedvms.html" title="apache-felix-ipojo-supportedVMs">Supported JVMs</a></li>
+	<li><a href="http://felix.apache.org/site/apache-felix-ipojo-supportedosgi.html" title="apache-felix-ipojo-supportedOSGi">Supported OSGi Implementations</a></li>
+	<li><span class="nobr"><a href="http://ipojo-dark-side.blogspot.com/" title="Visit page outside Confluence" rel="nofollow">iPOJO's Dark Side Blog<sup><img class="rendericon" src="white-board-pattern-handler_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></li>
+	<li><a href="http://felix.apache.org/site/future-ideas.html" title="Future Ideas">Future Ideas</a></li>
+	<li><a href="http://felix.apache.org/site/contact.html" title="Contact">Contact</a></li>
+	<li><a href="http://felix.apache.org/site/related-works.html" title="Related Works">Related Works</a></li>
+	<li><a href="http://felix.apache.org/site/article-presentations.html" title="Article &amp; Presentations">Article &amp; Presentations</a></li>
+</ul>
+
+
+<hr>
+<div class="" align="center">
+<p><span class="nobr"><a href="http://cwiki.apache.org/confluence/createrssfeed.action?types=blogpost&amp;statuses=created&amp;statuses=modified&amp;spaces=FELIX&amp;labelString=iPOJO&amp;rssType=atom&amp;maxResults=10&amp;timeSpan=5&amp;publicFeed=true&amp;title=iPOJO%20Atom%20Feed" title="Stay tuned!" rel="nofollow"><img src="white-board-pattern-handler_files/feed-icon-32x32.png" align="absmiddle" border="0"><sup><img class="rendericon" src="white-board-pattern-handler_files/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7"></sup></a></span></p></div>
+
+<script type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script src="white-board-pattern-handler_files/ga.js" type="text/javascript"></script>
+<script type="text/javascript">
+var pageTracker = _gat._getTracker("UA-1518442-4");
+pageTracker._trackPageview();
+</script>
+</td></tr></tbody></table>
+    </div>
+  </body></html>
\ No newline at end of file

Propchange: felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler.html
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/apache.png
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/apache.png?rev=734735&view=auto
==============================================================================
Binary file - no diff available.

Propchange: felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/apache.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/button.html
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/button.html?rev=734735&view=auto
==============================================================================
--- felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/button.html (added)
+++ felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/button.html Thu Jan 15 07:35:17 2009
@@ -0,0 +1,5 @@
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><!-- ads start -->
+</head><body><a href="http://eu.apachecon.com/c/aceu2009/" target="_blank"><img src="button_data/2009-europe-125x125.png" title="ApacheCon Europe 2009" border="0" width="125" height="125"></a>
+<!-- ads end -->
+</body></html>
\ No newline at end of file

Propchange: felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/button.html
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/button_data/2009-europe-125x125.png
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/button_data/2009-europe-125x125.png?rev=734735&view=auto
==============================================================================
Binary file - no diff available.

Propchange: felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/button_data/2009-europe-125x125.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/feed-icon-32x32.png
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/feed-icon-32x32.png?rev=734735&view=auto
==============================================================================
Binary file - no diff available.

Propchange: felix/trunk/ipojo/handler/whiteboard/doc/white-board-pattern-handler_files/feed-icon-32x32.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



Mime
View raw message