Hi

It works fine :)
When you want to copy headers from one map to another you need to do
it correctly using the EntrySet

        Map<String, Object> other = new HashMap<String, Object>();
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            String key = entry.getKey();
            Object value = entry.getValue();
            other.put(key, value);
        }

Or use putAll etc.

        Map<String, Object> other = new HashMap<String, Object>();
        other.putAll(map);

Or pass it in the constructor

        Map<String, Object> other = new HashMap<String, Object>(map);



On Thu, Jan 7, 2010 at 6:14 PM, Lewin Chan <[email protected]> wrote:
> Hi,
>
> I'm wondering if CaseInsensitiveMap is behaving as designed, or if I have 
> uncovered an issue
>
> I'm trying (best not to ask why :) )
>
>  private static void copyHeaders(org.apache.camel.Message in, 
> MyInterimMessageType out) {
>    Map<String, Object> hdrs = in.getHeaders();
>    for (String s : hdrs.keySet()) {
>      out.addHeader(s, in.getHeader(s, String.class));
>    }
>  }
>
> If previously in my route I have added headers to the message whose keys are 
> CamelCase, this is not preserved in my MyInterimMessageType headers, they are 
> all lower case.
>
> Looking at the source; surely CaseInsensitiveMap should override the keySet() 
> method from HashMap so that it returns the original keys rather than all the 
> lower case keys.
>
> I can work around this behaviour in code of course, I'm just trying to 
> ascertain if this behaviour is intended.
>
> Regards
> Lewin
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Reply via email to