[
https://issues.apache.org/jira/browse/IVY-1142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12780590#action_12780590
]
Andreas Axelsson commented on IVY-1142:
---------------------------------------
Absolutely, is the patch format ok? It's the default mercurial (hg diff)
output format.
Cheers,
/axl
> ivy:retrieve sync="true" does nothing if first variable is optional
> -------------------------------------------------------------------
>
> Key: IVY-1142
> URL: https://issues.apache.org/jira/browse/IVY-1142
> Project: Ivy
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.1.0
> Environment: Not relevant
> Reporter: Andreas Axelsson
> Attachments: IVY-1142.patch
>
> Original Estimate: 1h
> Remaining Estimate: 1h
>
> if the ivy.retrieve.pattern contains an optional parameter as the first
> parameter, the sync feature of ivy:retrieve will get a path with a trailing
> '(' causing it to find nothing to sync, leaving old files still in the
> retrieve path.
> Example:
> ivy.retrieve.pattern = lib/([type]/)/[artifact].[ext]
> sync will try to match orphaned files against lib/( which obviously contains
> nothing.
> The problem is in IvyPatternHelper.java getTokenRoot(), which only checks for
> the first '[', but in the pattern above it needs to check for the first '('.
> I could see that nothing but the Resolver uses this function so it looks like
> it'll be pretty safe to just fix the check. I've attached a suggested fix
> below. I rarely touch java, so there might be simpler ways to do it, but at
> least it works.
> diff -r 616a4e764dd1 src/java/org/apache/ivy/core/IvyPatternHelper.java
> --- a/src/java/org/apache/ivy/core/IvyPatternHelper.java Fri Nov 20
> 11:38:53 2009 +0100
> +++ b/src/java/org/apache/ivy/core/IvyPatternHelper.java Fri Nov 20
> 12:54:27 2009 +0100
> @@ -472,7 +472,15 @@
> }
> public static String getTokenRoot(String pattern) {
> - int index = pattern.indexOf('[');
> + int[] delimiters = {'[', '('};
> + for (int index = 0; index < delimiters.length; ++index) {
> + pattern = getTokenRoot(pattern, delimiters[index]);
> + }
> + return pattern;
> + }
> +
> + private static String getTokenRoot(String pattern, int delimiter) {
> + int index = pattern.indexOf(delimiter);
> if (index == -1) {
> return pattern;
> } else {
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.