camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem Jiang <willem.ji...@gmail.com>
Subject Re: CXF-RS, @QueryParam and @HeaderParam
Date Thu, 14 Apr 2011 05:04:53 GMT
Hi,

I can reproduce the error by add a simple unit test for the cxfrs route, 
so I create a JIRA CAMEL-3860 of it.

Just one more note, it is not a good idea to use camel-cxfrs build a 
proxy is you don't change the request, as you can simple use camel-jetty 
and camel-http to a simple http proxy.

[1]https://issues.apache.org/jira/browse/CAMEL-3860

Willem

On 4/14/11 6:55 AM, robinhowlett wrote:
> In my context.xml I have defined a jaxrs:server with serviceBean referenced,
> and both a cxf:rsServer and cxf:rsClient.
>
>
>      	
>      		
>      	
>
>
>
>
>
>
>
>
>
>
>      	
>
>
> My route is defined in RestTestRouteBuilder using Java DSL and is just:
>
> from("cxfrs://bean://rsServer").to("cxfrs://bean//rsClient");
>
> My test case is using the producerTemplate to send to the cxfrs endpoint
> defined by the cxf:rsServer and I include query parameters. A Processor sets
> the ExchangePattern as InOut, and the inMessage has a HTTP_METHOD header set
> to "GET" and a Response Class header to InputStream
>
> Exchange exchange =
> template.send("cxfrs://http://localhost:9000/route/test/query?httpClientAPI=true&id=12&orgId=34",
> new Processor() {
>                  public void process(Exchange exchange) throws Exception {
>                      exchange.setPattern(ExchangePattern.InOut);
>                      Message inMessage = exchange.getIn();
>                      inMessage.setHeader(Exchange.HTTP_METHOD, "GET");
>
> inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS,
> InputStream.class);
>                      inMessage.setBody(null);
>          }
>
> });
>
> String response = exchange.getOut().getBody(String.class);
> assertNotNull("The response should not be null ", response);
> assertEquals("The response value is incorrect", "test", response);
>
> My CXF service bean has paths set correctly and my "query" method is
> expecting two @QueryParams
>
> @Path("/test")
> public class QueryService {
> ...
>          @GET
> 	@Path("/query")
> 	public Response getSomething(@QueryParam("id") String id,
> @QueryParam("orgId") String orgId) {
> 		System.out.println(id);
> 		System.out.println(orgId);
> 		return "test";
> 	}
> ...
> }
>
> However when I run the test, the QueryParams are receving nothing (null);
> after many tries, I realized that the parameters that were set on the URL
> are actually coming in as of type @HeaderParam
> ...
>          @GET
> 	@Path("/query")
> 	public Response getSomething(@HeaderParam("id") String id,
> @HeaderParam("orgId") String orgId) {
> 		System.out.println(id);
> 		System.out.println(orgId);
> 		return "test";
> 	}
> ...
>
> What's happening to convert those to type @HeaderParam and how can I get
> them as of type @QueryParam?
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/CXF-RS-QueryParam-and-HeaderParam-tp4301808p4301808.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>


-- 
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
          http://jnn.javaeye.com (Chinese)
Twitter: willemjiang

Connect at CamelOne May 24-26
The Open Source Integration Conference
http://camelone.com

Mime
View raw message