Okay - I think this is an issue / bug
V2.2.7

In org.apache.cxf.transport.http.AbstractHTTPDestination.setupMessage() 
- line 322 :
inMessage.put(Message.QUERY_STRING, req.getQueryString());

HttpServletRequest.getQueryString() is called to put the query string into the 
message, that is propagated through the CXF stack

However the tomcat 6 and Jetty implementations of getQueryString() strip all 
characters after and including a "#" in the query string

Hence if a request has 
/blah?uri=http://some.uri/#thing&hello=world

The query string set in the message is only
uri=http://some.uri/

so both the uri fragment and any following query parameters are lost.

The use of getQueryString is thus application server dependant and cannot be 
relied upon to get the query string accurately

Big issue for me - as I am building a large semantic web, web service where 
many resource URIs being passed around have #fragments in them to indicate 
predicates and class types. 

Cheers
Paul




-----Original Message-----
From: Paul Wilton [mailto:[email protected]] 
Sent: 14 April 2010 15:05
To: [email protected]; Sergey Beryozkin
Subject: #fragment being stripped from QueryParam that is a uri in JAX-RS method

Hi 
I am experiencing some unexpected behaviour when mapping a String
@QueryParam where the QueryParam is a URI with a #fragment at the end.

Given the method signature :

    @GET
    @Path("/resource")
    public Response getResource(@QueryParam("uri")String resourceURI) 

if the request is:
GET /resource?uri=http://some.resource.uri/blah#thing

The value set in the resourceURI String variable is
"http://some.resource.uri/blah";  not "
http://some.resource.uri/blah#thing";

This also occurs if an additional query param is passed in the request,
e.g.
GET /resource?uri=http://some.resource.uri/blah#thing&hello=1

I am using CXF 2.2.7   - is this a bug ?  I can see no valid reason for
stripping the uri #fragment

Thanks
Paul






This e-mail (and any attachments) is confidential and may contain personal 
views which are not the views of the BBC unless specifically stated. If you 
have received it in error, please delete it from your system. Do not use, copy 
or disclose the information in any way nor act in reliance on it and notify the 
sender immediately.
 
Please note that the BBC monitors e-mails sent or received. Further 
communication will signify your consent to this

This e-mail has been sent by one of the following wholly-owned subsidiaries of 
the BBC:
 
BBC Worldwide Limited, Registration Number: 1420028 England, Registered 
Address: BBC Media Centre, 201 Wood Lane, London, W12 7TQ
BBC World News Limited, Registration Number: 04514407 England, Registered 
Address: BBC Media Centre, 201 Wood Lane, London, W12 7TQ
BBC World Distribution Limited, Registration Number: 04514408, Registered 
Address: BBC Media Centre, 201 Wood Lane, London, W12 7TQ

 
 

Reply via email to