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

When using CXFRS with simple HTTP api, variable replacement should be available

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • None
    • 2.15.0
    • camel-cxf
    • None
    • Patch Available
    • Unknown

    Description

      I am calling an endpoint using cxfrs client with the http api. So I have
      something like that in the DSL :

      ....
      .setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, constant(true))
      .setHeader(Exchange.HTTP_PATH, simple("/endpoint/${header.myHeader}"))
      .setHeader(Exchange.HTTP_METHOD, constant(POST))
      .to("cxfrs:bean:myClient")
      ....

      This usually works fine.

      I had a somewhat nasty error when someone did a copy paste of my server,
      with the variable substitution style (something like /endpoint/

      {myVariable})

      at that point, ${header.myHeader} resolved to {myVariable}

      , thus the url the
      client will try to resolve is /endpoint/

      {myVariable}. When trying to parse
      this URL, CXF will not be happy, since there is no value to replace what it
      thinks to be a variable, and will throw an IllegalArgumentException with
      message Unresolved variables; only 0 value(s) given for 1 unique
      variable(s).

      After looking a bit in the code, I understood better what happens.

      In order to avoid that, it would be nice to use the mechanism of CXF to
      replace variables in URI.

      In the DSL, we would have something like :

      ....
      .setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, constant(true))
      .setHeader(CxfConstants.CAMEL_CXF_RS_VAR_VALUES,
      simple("[${header.myHeader}]"))
      .setHeader(Exchange.HTTP_PATH, constant("/endpoint/{myVariable}

      "))
      .setHeader(Exchange.HTTP_METHOD, constant("POST"))
      .to("cxfrs:bean:myClient")
      ....

      Attachments

        Activity

          People

            njiang Willem Jiang
            flaroche François LAROCHE
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: