Bundle.getHeaders() returns a Dictionary<java.util.jar.Attribute.Name,String>
-----------------------------------------------------------------------------
Key: FELIX-1130
URL: https://issues.apache.org/jira/browse/FELIX-1130
Project: Felix
Issue Type: Bug
Components: Framework
Affects Versions: felix-1.6.1
Environment: IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 AIX ppc64-64
jvmap6460-20090215_29883 (JIT enabled, AOT enabled)
Reporter: Alexander Berger
Bundle.getHeaders() returns a Dictionary whose key type is
java.util.jar.Attribute.Name but the key type should be
java.lang.String. For some unknown reasons (I guess different implementations
of equals() and hashCode()) this
causes no problems with SUN's JRE but a lot of trouble with IBM's JRE.
Especially bundles that rely on bundle
headers (like for example Felix SCR) do not work on IBM's JRE due to this bug.
The suspicious code is in the getManifestHeader() member of
org.apache.felix.framework.cache.JarRevision and DirectoryRevision:
Manifest mf = jarFile.getManifest();
// Create a case insensitive map of manifest attributes.
return new StringMap(mf.getMainAttributes(), false);
So either org.apache.felix.framework.cache.JarRevision and DirectoryRevision
should be changed in order for
their getManifestHeader() member to return a Dictionary<String,String>
Manifest mf = jarFile.getManifest();
// Create a case insensitive map of manifest attributes.
final Attributes attributes = mf.getMainAttributes();
final StringMap m = new StringMap(false);
for ( final Object name : attributes.keySet() ) {
final String text = name.toString();
m.put(text, attributes.getValue(text));
}
return m;
or as Richard suggested the org.apache.felix.framework.util.StringMap
class should override putAll(Map) and ensure that all keys are of type String
(like StringMap.put(...)) does.
Corresponding mailing list entries:
http://www.mail-archive.com/[email protected]/msg04248.html
http://www.mail-archive.com/[email protected]/msg04249.html
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.