I have been experimenting with Camel 2.14.0 and the REST DSL using the
servlet component.
I have followed the code in the example, however for reasons of my own I'd
like to use a different servlet name than the default of CamelServlet. This
works fine with vanilla servlet:/// URIs - add ?servletName=my-servlet and
all is good.

To do this with the REST DSL I use the following:

restConfiguration().component("servlet").endpointProperty("servletName",
"my-servlet");
rest("/rest").post().otherDSLStatements;

Contrary to what I thought, endpointProperty and not componentProperty sees
this property added to the URI. 

The problem is, it doesn't work.
I stepped through the code and it appears the problem is that the URI that
gets constructed for my post prior to being turned into a rest:// URI looks
something like:
servlet:///rest?httpMethodRestrict=POST?servletName=my-servlet.

Which doesn't get correctly parsed by URISupport.parseQuery() since it
doesn't separate the second key/value pair using an ampersand ('&') as you
might expect.

The code from ServletComponent looks like this (lines 194-197):

        String url = "servlet:///%s?httpMethodRestrict=%s";
        if (!query.isEmpty()) {
            url = url + "?" + query;
        }

I can also confirm that using the debugger and changing the second '?' to
'&' results in the behaviour that I'd expect to see, which is that
my-servlet actually handles the request.

I don't think I'm doing anything screwy here, can anyone else confirm
they've had similar problems or not? I think it's a bug but following
etiquette I'm posting here first and not raising issues in Jira immediately.

Regards,
Rod



--
View this message in context: 
http://camel.465427.n5.nabble.com/Servlet-Component-with-REST-DSL-problem-in-URI-query-string-construction-tp5759228.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to