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/03/29 00:24:39 UTC

svn commit: r642425 - in /ant/ivy/core/trunk: CHANGES.txt src/java/org/apache/ivy/ant/IvyPostResolveTask.java test/java/org/apache/ivy/ant/IvyRetrieveBuildFile.xml test/java/org/apache/ivy/ant/IvyRetrieveBuildFileTest.java

Author: maartenc
Date: Fri Mar 28 16:24:38 2008
New Revision: 642425

URL: http://svn.apache.org/viewvc?rev=642425&view=rev
Log:
FIX: multiple cleancache and inline retrieve error (IVY-778)

Added:
    ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyRetrieveBuildFile.xml
    ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyRetrieveBuildFileTest.java
Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=642425&r1=642424&r2=642425&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Fri Mar 28 16:24:38 2008
@@ -75,6 +75,7 @@
 - IMPROVEMENT: Parse description and home page from poms (IVY-767)
 - IMPROVEMENT: Smarter determination if an expression is exact or not for RegexpPatternMatcher and GlobPatternMatcher
 
+- FIX: multiple cleancache and inline retrieve error (IVY-778)
 - FIX: buildlist evicts modules with the same name, but different organisation (IVY-731)
 - FIX: Out of memory/Stack overflow for new highly coupled project (IVY-595)
 - FIX: Compatibility with maven's dependencyMangement (IVY-753) (not completed yet)

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java?rev=642425&r1=642424&r2=642425&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java Fri Mar 28 16:24:38 2008
@@ -20,8 +20,10 @@
 import java.io.File;
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.Iterator;
 
 import org.apache.ivy.Ivy;
+import org.apache.ivy.core.cache.ResolutionCacheManager;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
 import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
@@ -245,7 +247,24 @@
             } else {
                 confs = splitConfs(conf);
             }
+            
             HashSet rconfsSet = new HashSet(Arrays.asList(rconfs));
+            
+            // for each resolved configuration, check if the report still exists
+            ResolutionCacheManager cache = getSettings().getResolutionCacheManager();
+            for (Iterator it = rconfsSet.iterator(); it.hasNext(); ) {
+                String resolvedConf = (String) it.next();
+                String resolveId = getResolveId();
+                if (resolveId == null) {
+                    resolveId = ResolveOptions.getDefaultResolveId(reference);
+                }
+                File report = cache.getConfigurationResolveReportInCache(resolveId, resolvedConf);
+                if (!report.exists()) {
+                    // the report doesn't exist any longer, we have to recreate it...
+                    it.remove();
+                }
+            }
+            
             HashSet confsSet = new HashSet(Arrays.asList(confs));
             Message.debug("resolved configurations:   " + rconfsSet);
             Message.debug("asked configurations:      " + confsSet);

Added: ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyRetrieveBuildFile.xml
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyRetrieveBuildFile.xml?rev=642425&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyRetrieveBuildFile.xml (added)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyRetrieveBuildFile.xml Fri Mar 28 16:24:38 2008
@@ -0,0 +1,35 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.    
+-->
+<project xmlns:ivy="antlib:org.apache.ivy.ant" basedir="../../../../../..">
+  <target name="setUp">
+    <property name="ivy.cache.repository" value="build/cache" />
+  </target>
+
+  <target name="tearDown">
+  	<delete dir="build/cache" />
+  </target>
+
+  <target name="testMultipleInlineRetrievesWithCacheCleaning">
+  	<ivy:settings file="test/repositories/ivysettings.xml" />
+  	<ivy:retrieve organisation="org1" module="mod1.2" revision="2.0" inline="true" keep="true" />
+  	<ivy:cleancache />
+  	<ivy:retrieve organisation="org1" module="mod1.2" revision="2.0" inline="true" keep="true" />
+  </target>
+
+</project>
\ No newline at end of file

Added: ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyRetrieveBuildFileTest.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyRetrieveBuildFileTest.java?rev=642425&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyRetrieveBuildFileTest.java (added)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyRetrieveBuildFileTest.java Fri Mar 28 16:24:38 2008
@@ -0,0 +1,36 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.ivy.ant;
+
+import org.apache.ivy.core.report.ResolveReport;
+import org.apache.tools.ant.BuildFileTest;
+
+public class IvyRetrieveBuildFileTest extends BuildFileTest {
+    
+    protected void setUp() throws Exception {
+        configureProject("test/java/org/apache/ivy/ant/IvyRetrieveBuildFile.xml");
+    }
+    
+    public void testMultipleInlineRetrievesWithCacheCleaning() {
+        executeTarget("testMultipleInlineRetrievesWithCacheCleaning");
+        ResolveReport report = (ResolveReport) getProject().getReference("ivy.resolved.report");
+        assertNotNull(report);
+        assertFalse(report.hasError());
+        assertEquals(1, report.getDependencies().size());
+    }
+}