Hi out there

I just found out that as of Felix 1.6.1 the Bundle.getHeaders() returns a 
Dictionary whose keys are of
type java.util.jar.Attribute.Name. The corresponding code is in 
org.apache.felix.framework.cache.JarRevision:

        Manifest mf = jarFile.getManifest();
            // Create a case insensitive map of manifest attributes.
            return new StringMap(mf.getMainAttributes(), false);

Somehow I doubt that this is the right behavior but perhaps someone can prove 
me wrong :-)
This behavior did not disturb my code as long as it was running on a SUN JVM 
(java 6) but it caused
severe trouble when running on IBM's JVM (java 6). I guess this is because IBM 
and SUN might have
different implementations of equals(Object o) and hashCode() for the class 
java.util.jar.Attribute.Name.
However after changing the suspicious code in JarRevision like this:

        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;

the problem disappeared and it also worked on IBM's JVM.

So can anybody please confirm or deny that this is a bug in Felix 1.6.1. If so 
I will open a JIRA issue.

Kind regards
Alex

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to