[
https://issues.apache.org/jira/browse/FELIX-1130?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexander Berger closed FELIX-1130.
-----------------------------------
Thanks Richard.
As the patch is very simple and is identically with the one I use for Felix
1.6.1 I close this issue as it works.
> 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
> Assignee: Richard S. Hall
> Fix For: felix-2.0.0
>
>
> 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.