You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by ma...@apache.org on 2011/01/24 16:32:42 UTC

svn commit: r1062831 - in /ant/ivy/core/trunk: CHANGES.txt src/java/org/apache/ivy/ant/IvyRetrieve.java src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java src/java/org/apache/ivy/core/retrieve/RetrieveOptions.java

Author: maartenc
Date: Mon Jan 24 15:32:42 2011
New Revision: 1062831

URL: http://svn.apache.org/viewvc?rev=1062831&view=rev
Log:
IMPROVEMENT: ivy:retrieve can now convert 'dotted'-organisation names into a directory tree.

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRetrieve.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveOptions.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=1062831&r1=1062830&r2=1062831&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Mon Jan 24 15:32:42 2011
@@ -117,6 +117,8 @@ for detailed view of each issue, please 
 - NEW: ivy:resolve and post resole task can now have inlined dependencies declaration.
 - NEW: Import Bushel into Ivy core (IVY-1241)
 
+- IMPROVEMENT: ivy:retrieve can now convert 'dotted'-organisation names into a directory tree.
+
 - FIX: Dynamic version resolution result can be incorrect when ivy metadata contains extra attributes (IVY-1236)
 - FIX: NullPointerException in FileUtil#forceDelete.
 - FIX: XmlModuleDescriptorUpdater is a mess that produces broken xmls in many cases (IVY-1010)

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRetrieve.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRetrieve.java?rev=1062831&r1=1062830&r2=1062831&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRetrieve.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRetrieve.java Mon Jan 24 15:32:42 2011
@@ -35,6 +35,10 @@ public class IvyRetrieve extends IvyPost
             RetrieveOptions.OVERWRITEMODE_NEWER, RetrieveOptions.OVERWRITEMODE_DIFFERENT
     });
 
+    private static final Collection DIRMODE_VALUES = Arrays.asList(new String[] {
+            RetrieveOptions.DIRMODE_FLAT, RetrieveOptions.DIRMODE_TREE
+    });
+
     private String pattern;
 
     private String ivypattern = null;
@@ -45,6 +49,8 @@ public class IvyRetrieve extends IvyPost
     
     private String overwriteMode = RetrieveOptions.OVERWRITEMODE_NEWER;
 
+    private String dirMode = RetrieveOptions.DIRMODE_FLAT;
+
     public String getPattern() {
         return pattern;
     }
@@ -74,6 +80,7 @@ public class IvyRetrieve extends IvyPost
                     .setArtifactFilter(artifactFilter)
                     .setSync(sync)
                     .setOverwriteMode(getOverwriteMode())
+                    .setDirMode(getDirMode())
                     .setUseOrigin(isUseOrigin())
                     .setMakeSymlinks(symlink)
                     .setResolveId(getResolveId()));
@@ -124,4 +131,16 @@ public class IvyRetrieve extends IvyPost
     public String getOverwriteMode() {
         return overwriteMode;
     }
+
+    public void setDirMode(String dirMode) {
+        if (!DIRMODE_VALUES.contains(dirMode)) {
+            throw new IllegalArgumentException("invalid dirMode value '" + dirMode + "'. "
+                + "Valid values are " + DIRMODE_VALUES);
+        }
+        this.dirMode = dirMode;
+    }
+
+    public String getDirMode() {
+        return dirMode;
+    }
 }

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java?rev=1062831&r1=1062830&r2=1062831&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java Mon Jan 24 15:32:42 2011
@@ -304,9 +304,20 @@ public class RetrieveEngine {
                     continue; // skip this artifact, the filter didn't accept it!
                 }
 
-                String destFileName = IvyPatternHelper.substitute(destPattern, 
-                        artifact.getArtifact().getModuleRevisionId(), artifact.getArtifact(), 
-                        conf, artifact.getArtifactOrigin());
+                String destFileName;
+                if (RetrieveOptions.DIRMODE_FLAT.equals(options.getDirMode())) {
+                    destFileName = IvyPatternHelper.substitute(destPattern,
+                            artifact.getArtifact().getModuleRevisionId(), artifact.getArtifact(),
+                            conf, artifact.getArtifactOrigin());
+                } else if (RetrieveOptions.DIRMODE_TREE.equals(options.getDirMode())) {
+                    ModuleRevisionId mRevId = artifact.getArtifact().getModuleRevisionId();
+                    String org = mRevId.getOrganisation() == null ? null : mRevId.getOrganisation().replace('.', '/');
+                    destFileName = IvyPatternHelper.substitute(destPattern, org, mRevId.getName(), mRevId.getBranch(),
+                            mRevId.getRevision(), artifact.getName(), artifact.getType(), artifact.getExt(), conf,
+                            artifact.getArtifactOrigin(), mrid.getExtraAttributes(), artifact.getArtifact().getExtraAttributes());
+                } else {
+                    throw new IllegalArgumentException("Unsupported dirMode: " + options.getDirMode());
+                }
 
                 Set dest = (Set) artifactsToCopy.get(artifact);
                 if (dest == null) {

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveOptions.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveOptions.java?rev=1062831&r1=1062830&r2=1062831&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveOptions.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveOptions.java Mon Jan 24 15:32:42 2011
@@ -31,6 +31,9 @@ public class RetrieveOptions extends Log
     public static final String OVERWRITEMODE_ALWAYS = "always";
     public static final String OVERWRITEMODE_NEWER = "newer";
     public static final String OVERWRITEMODE_DIFFERENT = "different";
+
+    public static final String DIRMODE_FLAT = "flat";
+    public static final String DIRMODE_TREE = "tree";
     
     /**
      * The names of configurations to retrieve. If the array consists only of '*', then all
@@ -69,11 +72,22 @@ public class RetrieveOptions extends Log
      */
     private boolean makeSymlinks = false;
 
+    private String dirMode = DIRMODE_FLAT;
+
     /**
      * The id used to store the resolve information.
      */
     private String resolveId;
 
+    public String getDirMode() {
+        return dirMode == null ? DIRMODE_FLAT : dirMode;
+    }
+
+    public RetrieveOptions setDirMode(String dirMode) {
+        this.dirMode = dirMode;
+        return this;
+    }
+
     public Filter getArtifactFilter() {
         return artifactFilter;
     }