[
https://issues.apache.org/jira/browse/FELIX-682?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12623005#action_12623005
]
Sahoo commented on FELIX-682:
-----------------------------
Marcel,
Why do you say what I specify is non-compliant? Are you getting confused by
presence of "=". That was the output of headers command of Felix shell.
Download the test case and look at the manifest file that gets generated by
"mvn install."
Look at http://java.sun.com/j2se/1.4.2/docs/guide/extensions/versioning.html. A
jar can't have multiple Implementation-Version attribute in its manifest
header. One can definitely write a custom class loader that looks for the
information in some other place instead of relying on manifest entries for
these entries, but that seems so unrealistic because the same jar when used in
non-OSGi environment would yield different result.
Richard,
Yes, we have some non-OSGi clients that use Package API.
Marcel, Richard,
Yes, I understand Package API has limitations and OSGi has better facilities,
but if we stick to the original use case of Java extensions
(http://java.sun.com/j2se/1.4.2/docs/guide/extensions/versioning.html), then
they are still useful. The original intention was something like this:
A particular technology defines a namespace. The namespace is identified by the
primary package name of the APIs defined by that technology. e.g., JAXB
specification defines javax.xml.bind namespace. The JAXB implementation jar
supplied by Sun Microsystems can then have following manifest entries:
Extension-Name: javax.xml.bind
Specification-Title: Java API for XML Binding
Specification-Version: 2.1
Specification-Vendor: Sun Microsystems, Inc.
Implementation-Version: foobar
Implementation-Vendor-Id: com.sun
Such a bundle should also include JAXB API classes. Only then, when user asks
javax.xml.bind.SomeClass.class.getPackage().getImplementationVersion(), will
they get foobar.
> Package.getImplementationVersion returns null for package loaded by Felix
> -------------------------------------------------------------------------
>
> Key: FELIX-682
> URL: https://issues.apache.org/jira/browse/FELIX-682
> Project: Felix
> Issue Type: Bug
> Components: Framework
> Affects Versions: felix-1.0.4
> Environment: NA
> Reporter: Sahoo
> Fix For: felix-1.2.0
>
> Attachments: Felix-682.zip
>
>
> Even though MANIFEST.MF has proper entry for Implementation-Version,
> Package.getImplementationVersion() returns null. A reproducible test case is
> attached. It is described below:
> public class Foo implements BundleActivator {
> public void start(BundleContext context) throws Exception {
> Package p = getClass().getPackage();
> System.out.println(p);
> System.out.println(p.getImplementationVersion());
> }
> }
> The headers for this bundle are:
> osgi-test1 (10)
> ---------------
> Tool = Bnd-0.0.255
> Bundle-Activator = sahoo.osgitest1.Foo
> Implementation-Version = 1.0-SNAPSHOT
> Implementation-Vendor-Id = sahoo
> Bundle-Version = 1.0.0.SNAPSHOT
> Build-Jdk = 1.5.0_13-rev
> Implementation-Title = osgi-test1
> Created-By = Apache Maven Bundle Plugin
> Bundle-ManifestVersion = 2
> Manifest-Version = 1.0
> Bnd-LastModified = 1218821794953
> Private-Package = sahoo.osgitest1
> Bundle-Name = osgi-test1
> Built-By = ss141213
> Import-Package = org.osgi.framework;version="1.3"
> Bundle-SymbolicName = sahoo.osgi-test1
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.