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 2008/09/04 08:08:01 UTC

svn commit: r691877 - in /ant/ivy/core/trunk: CHANGES.txt src/java/org/apache/ivy/util/ConfigurationUtils.java test/java/org/apache/ivy/ant/IvyResolveTest.java

Author: maartenc
Date: Wed Sep  3 23:08:00 2008
New Revision: 691877

URL: http://svn.apache.org/viewvc?rev=691877&view=rev
Log:
FIX: Enable consistent support of the configuration negation operator (IVY-894)

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/src/java/org/apache/ivy/util/ConfigurationUtils.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyResolveTest.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=691877&r1=691876&r2=691877&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Wed Sep  3 23:08:00 2008
@@ -111,6 +111,7 @@
 - IMPROVEMENT: Add a memory cache for the module descriptor that are parsed from the cache (IVY-883)
 - IMPROVEMENT: Improve performance (IVY-872)
 
+- FIX: Enable consistent support of the configuration negation operator (IVY-894)
 - FIX: add variable expansion in extra attributes (IVY-798)
 - FIX: Invalid URL when using dynamic ranges (IVY-885)
 - FIX: can't use gotoNode with a node which has not been visited yet (IVY-874)

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/util/ConfigurationUtils.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/util/ConfigurationUtils.java?rev=691877&r1=691876&r2=691877&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/util/ConfigurationUtils.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/util/ConfigurationUtils.java Wed Sep  3 23:08:00 2008
@@ -20,6 +20,7 @@
 import java.util.Arrays;
 import java.util.LinkedHashSet;
 import java.util.Set;
+import java.util.Iterator;
 
 import org.apache.ivy.core.module.descriptor.Configuration;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
@@ -61,6 +62,7 @@
         }
 
         Set result = new LinkedHashSet();
+        Set excluded = new LinkedHashSet();
         for (int i = 0; i < confs.length; i++) {
             if ("*".equals(confs[i])) {
                 result.addAll(Arrays.asList(md.getConfigurationsNames()));
@@ -78,10 +80,15 @@
                         result.add(all[j].getName());
                     }
                 }
+            } else if (confs[i].startsWith("!")) {
+                excluded.add(confs[i].substring( 1 ));
             } else {
                 result.add(confs[i]);
             }
         }
+        for (Iterator iter = excluded.iterator(); iter.hasNext();) {
+            result.remove(iter.next());
+        }
 
         return (String[]) result.toArray(new String[result.size()]);
     }

Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyResolveTest.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyResolveTest.java?rev=691877&r1=691876&r2=691877&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyResolveTest.java (original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyResolveTest.java Wed Sep  3 23:08:00 2008
@@ -388,6 +388,17 @@
         assertNotNull(project.getReference("ivy.resolved.configurations.ref.testWithResolveId"));
     }
 
+    public void testExcludedConf() throws Exception {
+        resolve.setFile(new File("test/java/org/apache/ivy/ant/ivy-multiconf.xml"));
+        resolve.setConf("*,!default");
+        resolve.execute();
+
+        assertTrue(getIvyFileInCache(
+            ModuleRevisionId.newInstance("org1", "mod1.1", "2.0")).exists());
+        assertFalse(getIvyFileInCache(
+            ModuleRevisionId.newInstance("org1", "mod1.2", "2.0")).exists());
+    }
+
     public void testResolveWithAbsoluteFile() {
         // IVY-396
         File ivyFile = new File("test/java/org/apache/ivy/ant/ivy-simple.xml");