[
https://issues.apache.org/jira/browse/IVY-885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12624882#action_12624882
]
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: https://issues.apache.org/jira/browse/IVY-885
> 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.