I was looking at the OSGi information that's used for the javamail jars,
and it appears to be currently incomplete, and possibly even incorrect,
if I'm interpreting the information correct.
Javamail is split between a spec component, which is in the Geronimo
specs tree, and a provider component that has its own source tree and
build. The specs component builds a specs jar. The javamail component
builds a provider jar (which has a dependency on the specs jar) and a
mail uber-jar that merges the spec and provider jars into a single jar
file.
Currently, only the javamail specs is building with OSGi information in
the manifest. Here is the manifest from the jar file:
Manifest-Version: 1.0
Built-By: Rick McGuire
Created-By: Apache Maven Bundle Plugin
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Import-Package: javax.activation,javax.mail;version="1.4",javax.mail.e
vent;version="1.4",javax.mail.internet;version="1.4",javax.mail.searc
h;version="1.4",javax.mail.util;version="1.4"
Bnd-LastModified: 1214586504570
Export-Package: javax.mail.search;uses:="javax.mail";version="1.4",jav
ax.mail.util;uses:="javax.mail.internet,javax.activation";version="1.
4",javax.mail.event;uses:="javax.mail";version="1.4",javax.mail.inter
net;uses:="javax.activation,javax.mail,org.apache.geronimo.mail.util"
;version="1.4",javax.mail;uses:="javax.mail.search,javax.mail.event,j
avax.activation";version="1.4"
Bundle-Version: 1.4.0.SNAPSHOT
Bundle-Name: geronimo-javamail_1.4_spec
Bundle-Description: Javamail 1.4 Specification
Build-Jdk: 1.5.0_11
Private-Package: org.apache.geronimo.mail.handlers;version="1.4-SNAPSH
OT",org.apache.geronimo.mail.util;version="1.4-SNAPSHOT"
Bundle-DocURL: http://www.apache.org
Bundle-ManifestVersion: 2
Bundle-Vendor: The Apache Software Foundation
Bundle-SymbolicName: org.apache.geronimo.specs.geronimo-javamail_1.4_s
pec
Implementation-Title: Apache Geronimo
Tool: Bnd-0.0.227
Implementation-Version: 1.4-SNAPSHOT
The classes in org.apache.geronimo.mail.handlers and
org.apache.geronimo.mail.util are defined as Private-Package. I'm not
sure this is correct, since the Providers jar file uses those classes.
The merged uber-jar can probably make these private, but I think the
provider requirement would not allow this. Am I correct here?
Neither the javamail provider jar or mail uber-jar have any OSGi bundle
information. I suspect it needs to be added, since any application that
wishes to use javamail for more than just the javax.mail.* classes
(e.g., to send mail) would need to pull in either the provider bundle or
the mail uber jar bundle.
I'd like to take a stab at fixing this, but I'm not really what the
requirements are for the OSGi enablement. Do we have a documented set
of instructions anywhere?
Rick