Skip to content

Commit 7ccd187

Browse files
committed
deploy: 54ffa06
1 parent 5e3033c commit 7ccd187

11 files changed

+113
-173
lines changed

pax-swissbox/bnd.html

-3
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ <h3 class="title"><a href="index.html">Pax Swissbox</a></h3>
4949
<li class="nav-item" data-depth="1">
5050
<a class="nav-link" href="lifecycle.html">Lifecycle</a>
5151
</li>
52-
<li class="nav-item" data-depth="1">
53-
<a class="nav-link" href="optional-jcl.html">Optional JCL</a>
54-
</li>
5552
<li class="nav-item" data-depth="1">
5653
<a class="nav-link" href="property.html">Property</a>
5754
</li>

pax-swissbox/core.html

-3
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ <h3 class="title"><a href="index.html">Pax Swissbox</a></h3>
4949
<li class="nav-item" data-depth="1">
5050
<a class="nav-link" href="lifecycle.html">Lifecycle</a>
5151
</li>
52-
<li class="nav-item" data-depth="1">
53-
<a class="nav-link" href="optional-jcl.html">Optional JCL</a>
54-
</li>
5552
<li class="nav-item" data-depth="1">
5653
<a class="nav-link" href="property.html">Property</a>
5754
</li>

pax-swissbox/extender.html

+103-4
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ <h3 class="title"><a href="index.html">Pax Swissbox</a></h3>
4949
<li class="nav-item" data-depth="1">
5050
<a class="nav-link" href="lifecycle.html">Lifecycle</a>
5151
</li>
52-
<li class="nav-item" data-depth="1">
53-
<a class="nav-link" href="optional-jcl.html">Optional JCL</a>
54-
</li>
5552
<li class="nav-item" data-depth="1">
5653
<a class="nav-link" href="property.html">Property</a>
5754
</li>
@@ -127,8 +124,110 @@ <h3 class="title"><a href="index.html">Pax Swissbox</a></h3>
127124
</aside>
128125
<article class="doc">
129126
<h1 class="page">Pax Swissbox Extender</h1>
127+
<div id="preamble">
128+
<div class="sectionbody">
129+
<div class="paragraph">
130+
<p>Utilities related to <a href="https://enroute.osgi.org/FAQ/400-patterns.html#extender-pattern">extender pattern</a>.</p>
131+
</div>
132+
</div>
133+
</div>
134+
<div class="sect1">
135+
<h2 id="_bundlemanifestscanner"><a class="anchor" href="#_bundlemanifestscanner"></a><code>BundleManifestScanner</code></h2>
136+
<div class="sectionbody">
137+
<div class="paragraph">
138+
<p>You should use the <code>BundleManifestScanner</code> if you wish to implement an extender that is triggered by existence of specific entries in bundle manifest (<code>META-INF/MANIFEST.MF</code>).</p>
139+
</div>
130140
<div class="paragraph">
131-
<p>Utilities related to extender pattern.</p>
141+
<p>Usually in your extender <code>BundleActivator</code> you will create and start an instance of <code>BundleWatcher</code> by passing in a <code>BundleManifestScanner</code> and your extender specific <code>BundleObserver</code>.</p>
142+
</div>
143+
<div class="listingblock">
144+
<div class="content">
145+
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">new BundleWatcher&lt;ManifestEntry&gt;(
146+
bundleContext,
147+
// bundle manifest scanner
148+
new BundleManifestScanner(...),
149+
// customizer for scanned entries
150+
new BundleObserver&lt;ManifestEntry&gt;() {
151+
public void addingEntries(Bundle bundle, List&lt;ManifestEntry&gt; entries) {
152+
// your specific code, doing something with the manifest entries
153+
}
154+
public void removingEntries(Bundle bundle, List&lt;ManifestEntry&gt; entries) {
155+
// revert actions (if required)
156+
}
157+
}
158+
);</code></pre>
159+
</div>
160+
</div>
161+
<div class="sect2">
162+
<h3 id="_bundlemanifestscanner_2"><a class="anchor" href="#_bundlemanifestscanner_2"></a><code>BundleManifestScanner</code></h3>
163+
<div class="paragraph">
164+
<p>This scanner takes the starting bundle manifest entries and makes use of provided <code>ManifestFilter</code> to find out if the current bundle manifest contains expected entries.
165+
If there are any entries matched by the manifest filter it will create for each one a <code>ManifestEntry</code> which is a simple pair between manifest header name and value.
166+
Below is an example of creating a <code>BundleManifestScanner</code> that uses a regular expression based manifest filter:</p>
167+
</div>
168+
<div class="listingblock">
169+
<div class="content">
170+
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">new BundleManifestScanner(
171+
new RegexKeyManifestFilter(
172+
"Bundle-.*"
173+
)
174+
);</code></pre>
175+
</div>
176+
</div>
177+
</div>
178+
<div class="sect2">
179+
<h3 id="_manifestfilter"><a class="anchor" href="#_manifestfilter"></a><code>ManifestFilter</code></h3>
180+
<div class="paragraph">
181+
<p>Manifest filters scope is to filter the manifest entries to the set required by your extender.
182+
You can implement your own filter and/or make use of the built-in ones:</p>
183+
</div>
184+
<div class="ulist">
185+
<ul>
186+
<li>
187+
<p><code>RegexKeyManifestFilter</code> — matches manifest headers name against a regular expression</p>
188+
</li>
189+
<li>
190+
<p>&#8230;&#8203; more to come</p>
191+
</li>
192+
</ul>
193+
</div>
194+
</div>
195+
</div>
196+
</div>
197+
<div class="sect1">
198+
<h2 id="_bundleurlscanner"><a class="anchor" href="#_bundleurlscanner"></a><code>BundleURLScanner</code></h2>
199+
<div class="sectionbody">
200+
<div class="paragraph">
201+
<p>You should use the <code>BundleURLScanner</code> if you wish to implement an extender that is triggered by existence of specific files or directories in bundles.</p>
202+
</div>
203+
<div class="sect2">
204+
<h3 id="_example_war_extender"><a class="anchor" href="#_example_war_extender"></a>Example WAR Extender</h3>
205+
<div class="paragraph">
206+
<p>The following is an example of how you can implement an extender bundle for war files:</p>
207+
</div>
208+
<div class="listingblock">
209+
<div class="content">
210+
<pre>new BundleWatcher&lt;URL&gt;(
211+
bundleContext,
212+
new BundleURLScanner(
213+
"WEB-INF/",
214+
"web.xml",
215+
false // do not recurse
216+
),
217+
new BundleObserver&lt;URL&gt;() {
218+
public void addingEntries(Bundle bundle, List&lt;URL&gt; entries) {
219+
// process web xml, as for example parsing and registering servlets
220+
}
221+
222+
public void removingEntries(Bundle bundle, List&lt;URL&gt; entries) {
223+
// revert processing of web xml
224+
}
225+
}
226+
).start();</pre>
227+
</div>
228+
</div>
229+
</div>
230+
</div>
132231
</div>
133232
</article>
134233
</div>

pax-swissbox/framework.html

-3
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ <h3 class="title"><a href="index.html">Pax Swissbox</a></h3>
4949
<li class="nav-item" data-depth="1">
5050
<a class="nav-link" href="lifecycle.html">Lifecycle</a>
5151
</li>
52-
<li class="nav-item" data-depth="1">
53-
<a class="nav-link" href="optional-jcl.html">Optional JCL</a>
54-
</li>
5552
<li class="nav-item" data-depth="1">
5653
<a class="nav-link" href="property.html">Property</a>
5754
</li>

pax-swissbox/index.html

+9-4
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ <h3 class="title"><a href="index.html">Pax Swissbox</a></h3>
4949
<li class="nav-item" data-depth="1">
5050
<a class="nav-link" href="lifecycle.html">Lifecycle</a>
5151
</li>
52-
<li class="nav-item" data-depth="1">
53-
<a class="nav-link" href="optional-jcl.html">Optional JCL</a>
54-
</li>
5552
<li class="nav-item" data-depth="1">
5653
<a class="nav-link" href="property.html">Property</a>
5754
</li>
@@ -126,8 +123,16 @@ <h3 class="title"><a href="index.html">Pax Swissbox</a></h3>
126123
</aside>
127124
<article class="doc">
128125
<h1 class="page">Pax Swissbox</h1>
126+
<div class="sect1">
127+
<h2 id="_utilities_for_osgi"><a class="anchor" href="#_utilities_for_osgi"></a>Utilities for OSGi</h2>
128+
<div class="sectionbody">
129129
<div class="paragraph">
130-
<p>Utilities for OSGi</p>
130+
<p>Pax Swissbox is a set of utilities targeting OSGi and the project emerged as means for re-usage within Pax projects.
131+
But, as Pax Swissbox artifacts are generic, they can be reused outside Pax projects.
132+
In order to minimize dependencies and improve modularity Pax Swissbox is split in very fine-grained bundles that you can use individually.
133+
Pax Swissbox artifacts are meant to be embedded (wrapped) in your bundle (easy to achieve using Maven Bundle Plugin), but you can use them as standalone bundles.</p>
134+
</div>
135+
</div>
131136
</div>
132137
</article>
133138
</div>

pax-swissbox/lifecycle.html

-3
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ <h3 class="title"><a href="index.html">Pax Swissbox</a></h3>
4949
<li class="nav-item is-current-page" data-depth="1">
5050
<a class="nav-link" href="lifecycle.html">Lifecycle</a>
5151
</li>
52-
<li class="nav-item" data-depth="1">
53-
<a class="nav-link" href="optional-jcl.html">Optional JCL</a>
54-
</li>
5552
<li class="nav-item" data-depth="1">
5653
<a class="nav-link" href="property.html">Property</a>
5754
</li>

pax-swissbox/optional-jcl.html

-143
This file was deleted.

pax-swissbox/property.html

-3
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ <h3 class="title"><a href="index.html">Pax Swissbox</a></h3>
4949
<li class="nav-item" data-depth="1">
5050
<a class="nav-link" href="lifecycle.html">Lifecycle</a>
5151
</li>
52-
<li class="nav-item" data-depth="1">
53-
<a class="nav-link" href="optional-jcl.html">Optional JCL</a>
54-
</li>
5552
<li class="nav-item is-current-page" data-depth="1">
5653
<a class="nav-link" href="property.html">Property</a>
5754
</li>

pax-swissbox/samples.html

-3
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ <h3 class="title"><a href="index.html">Pax Swissbox</a></h3>
4949
<li class="nav-item" data-depth="1">
5050
<a class="nav-link" href="lifecycle.html">Lifecycle</a>
5151
</li>
52-
<li class="nav-item" data-depth="1">
53-
<a class="nav-link" href="optional-jcl.html">Optional JCL</a>
54-
</li>
5552
<li class="nav-item" data-depth="1">
5653
<a class="nav-link" href="property.html">Property</a>
5754
</li>

pax-swissbox/tracker.html

-3
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ <h3 class="title"><a href="index.html">Pax Swissbox</a></h3>
4949
<li class="nav-item" data-depth="1">
5050
<a class="nav-link" href="lifecycle.html">Lifecycle</a>
5151
</li>
52-
<li class="nav-item" data-depth="1">
53-
<a class="nav-link" href="optional-jcl.html">Optional JCL</a>
54-
</li>
5552
<li class="nav-item" data-depth="1">
5653
<a class="nav-link" href="property.html">Property</a>
5754
</li>

search-index.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)