ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jim Bonanno (JIRA)" <>
Subject [jira] Commented: (IVY-885) Invalid URL when using dynamic ranges
Date Fri, 22 Aug 2008 16:00:46 GMT


Jim Bonanno commented on IVY-885:

Thanks!  I will give that a try. I think that will help.

I have been trying to modify the IvyPatternHelper to escape the org, module, and revision
in the substitute method if the protocol is http, https or file. Then in the BasicURLHandler
I only validate the URL is a valid URI. So far this looks promising. There was one special
case where I have to make sure the revision value is not equal to getTokenString(REVISION_KEY),
for example.

This solution will assume that the pattern in the ivy file is properly escaped to avoid the
situation Maarten noted.

> Invalid URL when using dynamic ranges
> -------------------------------------
>                 Key: IVY-885
>                 URL:
>             Project: Ivy
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.0-beta-1
>            Reporter: Jim Bonanno
> Sorry to have two url issues in one day. 
> We are using ivy's ranges to resolve our modules. Ivy first tries to see if the specified
version exists before listing the repository. The issue that we hit was when using the range
[1,2[. The first request is http://myhost/my-repo/org/module/ivys/ivy-[1,2[.xml.
> This URL is not properly escaped, but apache apparently is very forgiving. When we hosted
the ivy repository with another web server that validated the urls the returned status code
was not a 404.
> We are working around the problem by again using URI to build the URL so it gets properly
escaped. There seems to be some tricks to using the URI class. For example, the constructor
that takes a string requires the string is already rfc 2396 compliant. The other constructors
will actually escape the URL.
> Here is the modifications we made to the BasicURLHandler.
>         if ( url.getProtocol() == "http" || url.getProtocol() == "https") {
>             try {
>                 URI uri = new URI(url.getProtocol(), null, url.getHost(), url.getPort(),
url.getPath(), null, null);
>                 url = uri.toURL();
>             }
>             catch ( URISyntaxException e ) {
>                 IOException ioe = new IOException("Couldn't open connection to '" + url.toString()
+ "'");
>                 ioe.initCause(e);
>                 throw ioe;
>             }
>         }
>         con = url.openConnection();
> which results in a request http://myhost/my-repo/org/module/ivys/ivy-%5B1,2%5B.xml.

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

View raw message