Hi Ceki,<div>Thanks for reminding us to review the changes introduced by BND.</div><div><br><div class="gmail_quote">On Mon, Nov 1, 2010 at 2:16 PM, Ceki Gülcü <span dir="ltr">&lt;<a href="mailto:ceki@qos.ch">ceki@qos.ch</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hello all,<br>
<br>
I pulled in changes made by Heiko <a href="http://github.com/ceki/slf4j/pull/2" target="_blank">http://github.com/ceki/slf4j/pull/2</a>. Here is the version of the MANIFEST file from slf4j-api-1.6.1.jar.<br>
<br>
Manifest-Version: 1.0<br>
Archiver-Version: Plexus Archiver<br>
Created-By: Apache Maven<br>
Built-By: ceki<br>
Build-Jdk: 1.6.0_16<div class="im"><br>
Bundle-Description: The slf4j API<br></div>
Bundle-Version: 1.6.1<br>
Implementation-Version: 1.6.1<br>
Implementation-Title: slf4j-api<br>
Bundle-ManifestVersion: 2<br>
Bundle-SymbolicName: slf4j.api<br>
Bundle-Name: slf4j-api<br>
Bundle-Vendor: <a href="http://SLF4J.ORG" target="_blank">SLF4J.ORG</a><br>
Bundle-RequiredExecutionEnvironment: J2SE-1.3<br>
Export-Package: org.slf4j;version=1.6.1, org.slf4j.spi;version=1.6.1,<br>
 org.slf4j.helpers;version=1.6.1<br>
Import-Package: org.slf4j.impl;version=1.6.0<br>
<br>
Here is the version generated after Heiko&#39;s changes have been applied:<br>
<br>
Manifest-Version: 1.0<div class="im"><br>
Export-Package: org.slf4j.spi;uses:=&quot;org.slf4j&quot;;version=&quot;1.6.2.SNAPSHO<br>
 T&quot;,org.slf4j.helpers;uses:=&quot;org.slf4j.spi,org.slf4j&quot;;version=&quot;1.6.2.S<br>
 NAPSHOT&quot;,org.slf4j;uses:=&quot;org.slf4j.helpers,org.slf4j.spi&quot;;version=&quot;1<br>
 .6.2.SNAPSHOT&quot;<br>
Ignore-Package: org.slf4j.impl<br>
Implementation-Title: slf4j-api<br></div>
Built-By: ceki<div class="im"><br>
Tool: Bnd-0.0.357<br></div><div class="im">
Bundle-Name: SLF4J API Module<br></div><div class="im">
Created-By: Apache Maven Bundle Plugin<br></div><div class="im">
Bundle-RequiredExecutionEnvironment: J2SE-1.4<br></div>
Bundle-Vendor: QOS.ch<br>
Build-Jdk: 1.6.0_16<div class="im"><br>
Bundle-Version: 1.6.2.SNAPSHOT<br></div>
Bnd-LastModified: 1288644768461<br>
Bundle-ManifestVersion: 2<div class="im"><br>
Bundle-License: <a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">http://www.opensource.org/licenses/mit-license.php</a><br>
Bundle-Description: The slf4j API<br>
Bundle-DocURL: <a href="http://www.qos.ch" target="_blank">http://www.qos.ch</a><br></div>
Bundle-SymbolicName: org.slf4j.api<div class="im"><br>
Import-Package: org.slf4j;version=&quot;[1.6.2.SNAPSHOT,1.7)&quot;,org.slf4j.hel<br>
 pers;version=&quot;[1.6.2.SNAPSHOT,1.7)&quot;,org.slf4j.spi;version=&quot;[1.6.2.SNA<br>
 PSHOT,1.7)&quot;<br>
<br></div>
Admittedly, I am a little lost. The previous MANIFEST file imported org.slf4j.impl, whereas the latest MANIFEST does not. Strangely enough, org.slf4j.impl is not mentioned at all.</blockquote><div><br></div><div>Heiko packages org.slf4j.impl as bundle fragments that are hosted by org.slf4j.api.</div>

<div>In our situation, there must not be more than one provider of org.slf4j.impl: this means there must one and exactly one fragment that provides org.slf4j.impl. </div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div>

At runtime the fragment classes are part of the classloader of org.slf4j.api.</div><div>This is why org.slf4j.api does not import org.slf4j.impl at all.</div><div><br></div><div>The MANIFEST.MF of org.slf4j.api does look good.</div>

<div>It contains a few of extra lines that are read by BND alone: Private-Package and <meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Bnd-LastModified for example.</span></div>

<div><br></div><div>The MANIFEST.MF of jcl.over.slf4j (aka jcl-over-slf4j) uses these statements: </div><div><div>Export-Package: org.apache.commons.logging;version=1.1.1,  org.apache.</div><div> commons.logging.impl;version=1.1.1</div>

<div>Import-Package: org.slf4j;version=1.6.2.SNAPSHOT, org.slf4j.spi;versio</div><div> n=1.6.2.SNAPSHOT</div><div><br></div></div><div>It will work.</div><div>The versioning constrain on the import-package is I think too much: strictly speaking, the produced fragment is going to work with version 1.6 of slf4j.</div>

<div>I apologize for sounding picky and in the case where we always build and distribute together slf4j-api and jcl-over-slf4j it probably does not matter much.</div><div>If we were to adopt BND to generate the MANIFESTs of logback let&#39;s make sure that we generate version=1.6 only so that we don&#39;t suddenly force everyone to upgrade both slf4j and logback at once for no actual reason.</div>

<meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><br></div><div>Best regards,</div><div>Hugues</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im"><br>
<br>
In earlier message Heiko wrote:<br>
<br>
&gt; As all the logging backends are fragments I excluded org.slf4j.impl<br>
&gt; package from imported packages. This means you can install the<br>
&gt; slf4j-api bundle in an OSGi container successfully without a backend. &gt; Not sure whether this is what we want.<br>
<br></div>
I think it makes life easier if the slf4j-api bundle can be installed without a back-end. However, this is assuming that a desired back-end bundle can be installed and successfully bound with slf4j-api. (It is an obvious requirement but still may be useful to mention.)<br>


<br>
This version can be pulled in either from <a href="http://github.com/weiglewilczek/slf4j" target="_blank">http://github.com/weiglewilczek/slf4j</a> (master) or from <a href="http://github.com/ceki/slf4j" target="_blank">http://github.com/ceki/slf4j</a> (weiglewilczek-master).<br>


<br>
Your comments are most welcome,<br>
<br>
--<br><font color="#888888">
Ceki</font><div><div></div><div class="h5"><br>
_______________________________________________<br>
slf4j-dev mailing list<br>
<a href="mailto:slf4j-dev@qos.ch" target="_blank">slf4j-dev@qos.ch</a><br>
<a href="http://qos.ch/mailman/listinfo/slf4j-dev" target="_blank">http://qos.ch/mailman/listinfo/slf4j-dev</a><br>
</div></div></blockquote></div><br></div>