camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From flaroche <flaro...@gmail.com>
Subject Re: [CXF RS] CXF producers using HttpApi and URI substitutions
Date Tue, 16 Sep 2014 12:43:12 GMT
Hi Sergey,

I have a pull request ready for it, it was really nothing ;)

What I don't see so well now is the opening of an adjustment request.
Should I just submit the pull request with the comment in it or is it some
more process more strict ?

Best regards,

François



2014-09-12 23:03 GMT+02:00 Sergey Beryozkin-3 [via Camel] <
ml-node+s465427n5756457h30@n5.nabble.com>:

> Hi François
>
> On 12/09/14 14:08, flaroche wrote:
>
> > Hi everyone,
> >
> > I had an error a few days ago, and after investigations, here's what it
> was
> > :
> >
> > 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")
> > ....
> >
> > This array would have to be retrieved in the
> CxfRsProducer#invokeHttpClient
> > (as it is done in the invokeProxyClient method) and passed all the way
> to
> > the UriBuilder in the WebClient.
>
> WebClient itself can not be constructed with a URI containing template
> vars but its .path() method can take a path with templates alongside an
> array of objects.
> Another approach could be to use UriBuilder to resolve the templates
> first and then create use the resolve address as an effective address to
> get a factory bean.
> The former option is probably simpler, the code there already does
>
> if (path != null) {
>     client.path(path);
> }
>
> Can you please open a minor enhancement request ? A patch would be
> welcome too :-), should be few lines only, as you suggested, take the
> array, and if it is available, pass it to the client.path()
>
> Thanks, Sergey
>
> >
> > What do you think of it ?
> >
> > Best regards,
> >
> > François
> >
> >
> >
> >
> > --
> > View this message in context:
> http://camel.465427.n5.nabble.com/CXF-RS-CXF-producers-using-HttpApi-and-URI-substitutions-tp5756419.html
> > Sent from the Camel - Users mailing list archive at Nabble.com.
> >
>
>
> --
> Sergey Beryozkin
>
> Talend Community Coders
> http://coders.talend.com/
>
> Blog: http://sberyozkin.blogspot.com
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://camel.465427.n5.nabble.com/CXF-RS-CXF-producers-using-HttpApi-and-URI-substitutions-tp5756419p5756457.html
>  To unsubscribe from [CXF RS] CXF producers using HttpApi and URI
> substitutions, click here
> <http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5756419&code=Zmxhcm9jaGVAZ21haWwuY29tfDU3NTY0MTl8LTE1NzU4MjMzMjU=>
> .
> NAML
> <http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>




--
View this message in context: http://camel.465427.n5.nabble.com/CXF-RS-CXF-producers-using-HttpApi-and-URI-substitutions-tp5756419p5756579.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message