Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-6807

Message headers with uppercase letters not matched by jxpath

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 2.10.4
    • 2.15.0
    • None
    • None
    • JXPath used as Expression language

    • Patch Available
    • Unknown

    Description

      DefaultMessage uses CaseInsensitiveMap for storing headers. If header name contains uppercase characters, then jxpath expression with correct case will not match.

      E.g. header named fooBarBaz on "in" message will not be matched by following jxpath expression:

      <jxpath>/in/headers/fooBarBaz = something</jxpath>
      

      JXPath evaluates nodes that match the fooBarBaz name and uses the keySet() to obtain candidates. The problem is that CaseInsensitiveMap.keySet() returns the converted internal keys, instead of the original keys.

      Is it possible to override the keySet() method of CaseInsensitiveMap to return the original keys? Then a user will not be unpleasantly surprised that his key is not in the key set.

      CaseInsensitiveMap.java
      @Override
      public Set<String> keySet()
      {
          return originalKeys.values();
      }
      

      There are two workarounds possible but neither of them is nice in my eyes.

      1. use only lowercase header names
      2. register custom DynamicPropertyHandler in JXPath

      Ad 1. this probably wasn't the intention. User must rely on implementation of private method CaseInsensitiveMap.assembleKey(). This then defeats the purpose of case insensitiveness.

      Ad 2. custom property handler must be registered via JXPathIntrospector.registerDynamicClass() "in the start", e.g. before anybody calls JXPathIntrospector.getBeanInfo(). In our projects it was enough to declare an extra eagerly-instantiated singleton Spring bean.

      <bean class="CaseInsensitiveMapPropertyHandler"
      		init-method="init"
      		autowire-candidate="false"
      		lazy-init="false" />
      

      Attachments

        Issue Links

          Activity

            People

              davsclaus Claus Ibsen
              pjanata Petr Janata
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: