url encoding goes wrong in 
org.apache.camel.component.rss.RssComponent#afterConfiguration
-----------------------------------------------------------------------------------------

                 Key: CAMEL-3114
                 URL: https://issues.apache.org/activemq/browse/CAMEL-3114
             Project: Apache Camel
          Issue Type: Bug
    Affects Versions: 2.4.0
         Environment: jdk: Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
platform: linux (ubuntu 10.04)
            Reporter: Ernst Bunders


The method org.apache.camel.component.rss.RssComponent#afterConfiguration 
creates the Url that will be used to fetch the rss feed. We find that with some 
url's url encoding goes wrong.

consider this url: 
http://api.flickr.com/services/feeds/photos_public.gne?id=23353...@n05&tags=lowlands&lang=en-us&format=rss_200

AfterConfiguration() calls org.apache.camel.util.URISupport#createRemainingURI 
This method first calls org.apache.camel.util.URISupport#createQueryString, 
which is a method that will iterate over a map of request parameters, escape 
each param name and value using java.net.URLEncoder#encode, and put them 
together with all the & and = stuff to form the query string.
Then it calls org.apache.camel.util.URISupport#createURIWithQuery Which is a 
method that takes a URI (the base url) and the constructed query string, and 
simply creates a new URI with that, returning the toString() output from that.

So this is what the output of this procedure looks like: 
http://api.flickr.com/services/feeds/photos_public.gne?format=rss_200&id=23353282%2540N05&lang=en-us&tags=lowlands

1 the @ sign was escaped by org.apache.camel.util.URISupport#createQueryString, 
creating a query string like: 
id=23353282%40N05&tags=lowlands&lang=en-us&format=rss_200 (which is good)
2 the URI constructor then finds the % in %40 and escapes that again! creating 
a url like: 
http://api.flickr.com/services/feeds/photos_public.gne?format=rss_200&id=23353282%2540N05&lang=en-us&tags=lowlands
 

Which predictably fails...

I did some tests with the URI constructor, and it seems it only escapes % 
chars, everything else is left alone.

I attach a groovy script that demonstrates the problem

regards,

Ernst Bunders

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to