You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-commits@incubator.apache.org by ma...@apache.org on 2007/03/07 22:42:52 UTC

svn commit: r515819 - in /incubator/ivy/core/trunk: src/java/org/apache/ivy/ src/java/org/apache/ivy/ant/ src/java/org/apache/ivy/core/cache/ src/java/org/apache/ivy/core/install/ src/java/org/apache/ivy/core/report/ src/java/org/apache/ivy/core/resolv...

Author: maartenc
Date: Wed Mar  7 14:42:50 2007
New Revision: 515819

URL: http://svn.apache.org/viewvc?view=rev&rev=515819
Log:
Partial fix for IVY-366
- Added 'resolveId' concept to ivy core.
- Modified ant tasks to use this resolveId while keeping old behaviour as default.

Modified:
    incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy14.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/Main.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactProperty.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactReport.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheTask.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyReport.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRepositoryReport.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyTask.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheManager.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/install/InstallEngine.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/report/ResolveReport.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/resolve/ResolveEngine.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/resolve/ResolveOptions.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveOptions.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportOutputter.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java
    incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/AntBuildTriggerTest.java
    incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyArtifactPropertyTest.java
    incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java Wed Mar  7 14:42:50 2007
@@ -318,7 +318,10 @@
     /////////////////////////////////////////////////////////////////////////
     
     public ResolvedModuleRevision findModule(ModuleRevisionId mrid) {
-    	return _resolveEngine.findModule(mrid, CacheManager.getInstance(_settings));
+    	ResolveOptions options = new ResolveOptions();
+    	options.setValidate(false);
+    	options.setCache(CacheManager.getInstance(_settings));
+    	return _resolveEngine.findModule(mrid, options);
     }
     
 	public ModuleEntry[] listModuleEntries(OrganisationEntry org) {

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy14.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy14.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy14.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy14.java Wed Mar  7 14:42:50 2007
@@ -134,7 +134,10 @@
 	}
 
 	public ResolvedModuleRevision findModule(ModuleRevisionId id) {
-		return _ivy.getResolveEngine().findModule(id, CacheManager.getInstance(_ivy.getSettings()));
+    	ResolveOptions options = new ResolveOptions();
+    	options.setValidate(false);
+    	options.setCache(CacheManager.getInstance(_ivy.getSettings()));
+		return _ivy.getResolveEngine().findModule(id, options);
 	}
 
 	public IvyNode[] getDependencies(ModuleDescriptor md, String[] confs, File cache, Date date, ResolveReport report, boolean validate, boolean transitive) {

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/Main.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/Main.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/Main.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/Main.java Wed Mar  7 14:42:50 2007
@@ -351,10 +351,15 @@
         try {
             String pathSeparator = System.getProperty("path.separator");
             StringBuffer buf = new StringBuffer(); 
-            XmlReportParser parser = new XmlReportParser();
             Collection all = new LinkedHashSet();
+            CacheManager cacheMgr = ivy.getCacheManager(cache);
+            XmlReportParser parser = new XmlReportParser();
             for (int i = 0; i < confs.length; i++) {
-                Artifact[] artifacts = parser.getArtifacts(md.getModuleRevisionId().getModuleId(), confs[i], cache);
+            	String resolveId = ResolveOptions.getDefaultResolveId(md);
+            	File report = cacheMgr.getConfigurationResolveReportInCache(resolveId, confs[i]);
+            	parser.parse(report);
+
+            	Artifact[] artifacts = parser.getArtifacts();
                 all.addAll(Arrays.asList(artifacts));
             }
             for (Iterator iter = all.iterator(); iter.hasNext();) {
@@ -378,16 +383,21 @@
     	List urls = new ArrayList();
     	
         try {
-            XmlReportParser parser = new XmlReportParser();
             Collection all = new LinkedHashSet();
+            CacheManager cacheMgr = ivy.getCacheManager(cache);
+            XmlReportParser parser = new XmlReportParser();
             for (int i = 0; i < confs.length; i++) {
-                Artifact[] artifacts = parser.getArtifacts(md.getModuleRevisionId().getModuleId(), confs[i], cache);
+            	String resolveId = ResolveOptions.getDefaultResolveId(md);
+            	File report = cacheMgr.getConfigurationResolveReportInCache(resolveId, confs[i]);
+            	parser.parse(report);
+            	
+                Artifact[] artifacts = parser.getArtifacts();
                 all.addAll(Arrays.asList(artifacts));
             }
             for (Iterator iter = all.iterator(); iter.hasNext();) {
                 Artifact artifact = (Artifact)iter.next();
                 
-                urls.add(ivy.getCacheManager(cache).getArchiveFileInCache(artifact).toURL());
+                urls.add(cacheMgr.getArchiveFileInCache(artifact).toURL());
             }
         } catch (Exception ex) {
             throw new RuntimeException("impossible to build ivy cache path: "+ex.getMessage(), ex);

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactProperty.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactProperty.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactProperty.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactProperty.java Wed Mar  7 14:42:50 2007
@@ -20,8 +20,10 @@
 import java.io.File;
 
 import org.apache.ivy.core.IvyPatternHelper;
+import org.apache.ivy.core.cache.CacheManager;
 import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.id.ModuleId;
+import org.apache.ivy.core.resolve.ResolveOptions;
 import org.apache.ivy.core.settings.IvySettings;
 import org.apache.ivy.plugins.report.XmlReportParser;
 import org.apache.tools.ant.BuildException;
@@ -41,6 +43,7 @@
     private String _module;
     private boolean _haltOnFailure = true;
     private File _cache;
+    private String _resolveId;
 
     public String getConf() {
         return _conf;
@@ -84,42 +87,60 @@
     public void setCache(File cache) {
         _cache = cache;
     }
+    public String getResolveId() {
+    	return _resolveId;
+    }
+    public void setResolveId(String resolveId) {
+    	_resolveId = resolveId;
+    }
 
     public void execute() throws BuildException {
         IvySettings settings = getSettings(); 
         
-        _organisation = getProperty(_organisation, settings, "ivy.organisation");
-        _module = getProperty(_module, settings, "ivy.module");
+        _organisation = getProperty(_organisation, settings, "ivy.organisation", _resolveId);
+        _module = getProperty(_module, settings, "ivy.module", _resolveId);
 
-        ensureResolved(isHaltonfailure(), false, getOrganisation(), getModule());
+        ensureResolved(isHaltonfailure(), false, getOrganisation(), getModule(), _resolveId);
         
-        _conf = getProperty(_conf, settings, "ivy.resolved.configurations");
+        _conf = getProperty(_conf, settings, "ivy.resolved.configurations", _resolveId);
         if ("*".equals(_conf)) {
-            _conf = getProperty(settings, "ivy.resolved.configurations");
+            _conf = getProperty(settings, "ivy.resolved.configurations", _resolveId);
             if (_conf == null) {
                 throw new BuildException("bad provided for ivy artifactproperty: * can only be used with a prior call to <resolve/>");
             }
         }
-        _organisation = getProperty(_organisation, settings, "ivy.organisation");
-        _module = getProperty(_module, settings, "ivy.module");
+
+        _organisation = getProperty(_organisation, settings, "ivy.organisation", _resolveId);
+        _module = getProperty(_module, settings, "ivy.module", _resolveId);
+        
         if (_cache == null) {
             _cache = settings.getDefaultCache();
         }
         
-        if (_organisation == null) {
+        if ((_organisation == null) && (_resolveId == null)) {
             throw new BuildException("no organisation provided for ivy artifactproperty: It can either be set explicitely via the attribute 'organisation' or via 'ivy.organisation' property or a prior call to <resolve/>");
         }
-        if (_module == null) {
+        if ((_module == null) && (_resolveId == null)) {
             throw new BuildException("no module name provided for ivy artifactproperty: It can either be set explicitely via the attribute 'module' or via 'ivy.module' property or a prior call to <resolve/>");
         }
         if (_conf == null) {
             throw new BuildException("no conf provided for ivy artifactproperty: It can either be set explicitely via the attribute 'conf' or via 'ivy.resolved.configurations' property or a prior call to <resolve/>");
         }
+        
+        String resolveId = getResolveId();
+        if (resolveId == null) {
+        	resolveId = ResolveOptions.getDefaultResolveId(new ModuleId(_organisation, _module));
+        }
+
         try {
-            XmlReportParser parser = new XmlReportParser();
+        	CacheManager cacheMgr = getIvyInstance().getCacheManager(_cache);
             String[] confs = splitConfs(_conf);
+            XmlReportParser parser = new XmlReportParser();
             for (int i = 0; i < confs.length; i++) {
-                Artifact[] artifacts = parser.getArtifacts(new ModuleId(_organisation, _module), confs[i], _cache);
+            	File report = cacheMgr.getConfigurationResolveReportInCache(resolveId, confs[i]);
+            	parser.parse(report);
+            	
+                Artifact[] artifacts = parser.getArtifacts();
                 for (int j = 0; j < artifacts.length; j++) {
                     Artifact artifact = artifacts[j];
                     String name = IvyPatternHelper.substitute(settings.substitute(getName()), artifact, confs[i]);

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactReport.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactReport.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactReport.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactReport.java Wed Mar  7 14:42:50 2007
@@ -59,6 +59,7 @@
     private String _pattern;
     private boolean _haltOnFailure = true;
     private File _cache;
+    private String _resolveId;
 
     public File getTofile() {
         return _tofile;
@@ -90,6 +91,12 @@
     public void setCache(File cache) {
         _cache = cache;
     }
+    public String getResolveId() {
+    	return _resolveId;
+    }
+    public void setResolveId(String resolveId) {
+    	_resolveId = resolveId;
+    }
 
     public void execute() throws BuildException {
         if (_tofile == null) {
@@ -99,19 +106,19 @@
         Ivy ivy = getIvyInstance();
         IvySettings settings = ivy.getSettings();
 
-        ensureResolved(isHaltonfailure(), false, null, null);
+        ensureResolved(isHaltonfailure(), false, null, null, _resolveId);
 
-        String organisation = getProperty(null, settings, "ivy.organisation");
-        String module = getProperty(null, settings, "ivy.module");
-        String revision = getProperty(Ivy.getWorkingRevision(), settings, "ivy.revision");
+        String organisation = getProperty(null, settings, "ivy.organisation", _resolveId);
+        String module = getProperty(null, settings, "ivy.module", _resolveId);
+        String revision = getProperty(Ivy.getWorkingRevision(), settings, "ivy.revision", _resolveId);
 
         if (_cache == null) {
             _cache = settings.getDefaultCache();
         }
         _pattern = getProperty(_pattern, settings, "ivy.retrieve.pattern");
-        _conf = getProperty(_conf, settings, "ivy.resolved.configurations");
+        _conf = getProperty(_conf, settings, "ivy.resolved.configurations", _resolveId);
         if ("*".equals(_conf)) {
-            _conf = getProperty(settings, "ivy.resolved.configurations");
+            _conf = getProperty(settings, "ivy.resolved.configurations", _resolveId);
             if (_conf == null) {
                 throw new BuildException("bad provided for ivy artifact report task: * can only be used with a prior call to <resolve/>");
             }
@@ -129,11 +136,18 @@
         try {
             String[] confs = splitConfs(_conf);
             CacheManager cacheManager = CacheManager.getInstance(settings, _cache);
+            ModuleDescriptor md = null;
+            if (_resolveId != null) {
+            	md = (ModuleDescriptor) getResolvedDescriptor(_resolveId);
+            } else {
+            	md = (ModuleDescriptor) getResolvedDescriptor(organisation, module, false);
+            }
 			IvyNode[] dependencies = ivy.getResolveEngine()
-            	.getDependencies((ModuleDescriptor) getProject().getReference("ivy.resolved.descriptor"), 
+            	.getDependencies(md, 
             			new ResolveOptions()
             				.setConfs(confs)
             				.setCache(cacheManager)
+            				.setResolveId(_resolveId)
             				.setValidate(doValidate(settings)),
             			null);
 
@@ -142,6 +156,7 @@
             		_pattern, 
             		new RetrieveOptions()
             			.setConfs(confs)
+            			.setResolveId(_resolveId)
             			.setCache(cacheManager));
             
             Map moduleRevToArtifactsMap = new HashMap();

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheTask.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheTask.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheTask.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheTask.java Wed Mar  7 14:42:50 2007
@@ -17,6 +17,7 @@
  */
 package org.apache.ivy.ant;
 
+import java.io.File;
 import java.io.IOException;
 import java.text.ParseException;
 import java.util.ArrayList;
@@ -83,10 +84,14 @@
             }
         } else {
             Message.debug("using stored report to get artifacts list");
-            XmlReportParser parser = new XmlReportParser();
             
+            XmlReportParser parser = new XmlReportParser();
+            CacheManager cacheMgr = getIvyInstance().getCacheManager(getCache());
             for (int i = 0; i < confs.length; i++) {
-                Artifact[] artifacts = parser.getArtifacts(getResolvedModuleId(), confs[i], getCache());
+            	File reportFile = cacheMgr.getConfigurationResolveReportInCache(getResolveId(), confs[i]);
+            	parser.parse(reportFile);
+            	
+                Artifact[] artifacts = parser.getArtifacts();
                 all.addAll(Arrays.asList(artifacts));
             }
         }

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java Wed Mar  7 14:42:50 2007
@@ -213,6 +213,8 @@
     private File _deliveryList;
 
     private boolean _replacedynamicrev = true;
+    
+    private String _resolveId;
 
     public File getCache() {
         return _cache;
@@ -293,14 +295,22 @@
     public void setReplacedynamicrev(boolean replacedynamicrev) {
         _replacedynamicrev = replacedynamicrev;
     }
+    
+    public String getResolveId() {
+    	return _resolveId;
+    }
+    
+    public void setResolveId(String resolveId) {
+    	_resolveId = resolveId;
+    }
 
     public void execute() throws BuildException {
     	Ivy ivy = getIvyInstance();
         IvySettings settings = ivy.getSettings();
         
-        _organisation = getProperty(_organisation, settings, "ivy.organisation");
-        _module = getProperty(_module, settings, "ivy.module");
-        _revision = getProperty(_revision, settings, "ivy.revision");
+        _organisation = getProperty(_organisation, settings, "ivy.organisation", _resolveId);
+        _module = getProperty(_module, settings, "ivy.module", _resolveId);
+        _revision = getProperty(_revision, settings, "ivy.revision", _resolveId);
         _pubRevision = getProperty(_pubRevision, settings, "ivy.deliver.revision");
         if (_cache == null) {
             _cache = settings.getDefaultCache();

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java Wed Mar  7 14:42:50 2007
@@ -23,6 +23,7 @@
 import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.core.report.ResolveReport;
+import org.apache.ivy.core.resolve.ResolveOptions;
 import org.apache.ivy.core.settings.IvySettings;
 import org.apache.ivy.util.Message;
 import org.apache.ivy.util.StringUtils;
@@ -48,6 +49,7 @@
     private String _organisation;
     private String _module;
     private String _revision = "latest.integration";
+    private String _resolveId;
 
     private String _type;
     
@@ -71,7 +73,7 @@
         
         _organisation = getProperty(_organisation, settings, "ivy.organisation");
         _module = getProperty(_module, settings, "ivy.module");
-
+        
         if (isInline()) {
         	_conf = _conf == null ? "*" : _conf;
             if (_organisation == null) {
@@ -80,6 +82,9 @@
             if (_module == null) {
                 throw new BuildException("no module name provided for ivy cache task in inline mode: It can either be set explicitely via the attribute 'module' or via 'ivy.module' property");
             }
+            if (_resolveId == null) {
+            	_resolveId = ResolveOptions.getDefaultResolveId(getResolvedModuleId());
+            }
         	String[] toResolve = getConfsToResolve(getOrganisation(), getModule()+"-caller", _conf, true);
         	if (toResolve.length > 0) {        		
         		Message.verbose("using inline mode to resolve "+getOrganisation()+" "+getModule()+" "+getRevision()+" ("+StringUtils.join(toResolve, ", ")+")");
@@ -89,6 +94,7 @@
         		resolve.setRevision(getRevision());
         		resolve.setInline(true);
         		resolve.setConf(_conf);
+//        		resolve.setResolveId(_resolveId);  TODO
         		resolve.execute();
         	} else {
         		Message.verbose("inline resolve already done for "+getOrganisation()+" "+getModule()+" "+getRevision()+" ("+_conf+")");
@@ -129,6 +135,9 @@
         if (_cache == null) {
             _cache = settings.getDefaultCache();
         }
+        if (_resolveId == null) {
+        	_resolveId = ResolveOptions.getDefaultResolveId(getResolvedModuleId());
+        }
         
         _artifactFilter = FilterHelper.getArtifactTypeFilter(_type);
     }
@@ -213,6 +222,14 @@
 
 	public void setInline(boolean inline) {
 		_inline = inline;
+	}
+	
+	public void setResolveId(String resolveId) {
+		_resolveId = resolveId;
+	}
+	
+	public String getResolveId() {
+		return _resolveId;
 	}
 
 }

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyReport.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyReport.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyReport.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyReport.java Wed Mar  7 14:42:50 2007
@@ -25,7 +25,9 @@
 
 import org.apache.ivy.Ivy;
 import org.apache.ivy.core.IvyPatternHelper;
+import org.apache.ivy.core.cache.CacheManager;
 import org.apache.ivy.core.module.id.ModuleId;
+import org.apache.ivy.core.resolve.ResolveOptions;
 import org.apache.ivy.core.settings.IvySettings;
 import org.apache.ivy.plugins.report.XmlReportOutputter;
 import org.apache.ivy.util.FileUtil;
@@ -56,6 +58,7 @@
     private String _outputpattern;
     private String _xslext = "html";
     private List _params = new ArrayList();
+    private String _resolveId;
 
     public File getTodir() {
         return _todir;
@@ -109,20 +112,25 @@
     public void setOutputpattern(String outputpattern) {
         _outputpattern = outputpattern;
     }
-
+    public String getResolveId() {
+    	return _resolveId;
+    }
+    public void setResolveId(String resolveId) {
+    	_resolveId = resolveId;
+    }
 
     public void execute() throws BuildException {
         Ivy ivy = getIvyInstance();
         IvySettings settings = ivy.getSettings();
         
-        _organisation = getProperty(_organisation, settings, "ivy.organisation");
-        _module = getProperty(_module, settings, "ivy.module");
+        _organisation = getProperty(_organisation, settings, "ivy.organisation", _resolveId);
+        _module = getProperty(_module, settings, "ivy.module", _resolveId);
         if (_cache == null) {
             _cache = settings.getDefaultCache();
         }
-        _conf = getProperty(_conf, settings, "ivy.resolved.configurations");
+        _conf = getProperty(_conf, settings, "ivy.resolved.configurations", _resolveId);
         if (_conf.equals("*")) {
-            _conf = getProperty(settings, "ivy.resolved.configurations");
+            _conf = getProperty(settings, "ivy.resolved.configurations", _resolveId);
         }
         if (_conf == null) {
             throw new BuildException("no conf provided for ivy report task: It can either be set explicitely via the attribute 'conf' or via 'ivy.resolved.configurations' property or a prior call to <resolve/>");
@@ -150,6 +158,10 @@
         if (_module == null) {
             throw new BuildException("no module name provided for ivy report task: It can either be set explicitely via the attribute 'module' or via 'ivy.module' property or a prior call to <resolve/>");
         }
+        if (_resolveId == null) {
+        	_resolveId = ResolveOptions.getDefaultResolveId(new ModuleId(_organisation, _module));
+        }
+        
         try {
             String[] confs = splitConfs(_conf);
             if (_xsl) {
@@ -170,8 +182,9 @@
     }
     
     private void genxml(File cache, String organisation, String module, String[] confs) throws IOException {
+    	CacheManager cacheMgr = getIvyInstance().getCacheManager(_cache);
     	for (int i = 0; i < confs.length; i++) {
-	        File xml = new File(cache, XmlReportOutputter.getReportFileName(new ModuleId(organisation, module), confs[i]));
+	        File xml = cacheMgr.getConfigurationResolveReportInCache(_resolveId, confs[i]);
 
             File out;
             if (_todir != null) {
@@ -228,12 +241,13 @@
         Mapper mapper = new Mapper(getProject());
     	xslt.addMapper(mapper);
         
+    	CacheManager cacheMgr = getIvyInstance().getCacheManager(cache);
         for (int i = 0; i < confs.length; i++) {
-        	String reportFileName = XmlReportOutputter.getReportFileName(new ModuleId(organisation, module), confs[i]);
-        	xslt.setIncludes(reportFileName);
+        	File reportFile = cacheMgr.getConfigurationResolveReportInCache(_resolveId, confs[i]);
+        	xslt.setIncludes(reportFile.getName());
         	
         	FileNameMapper reportMapper = new GlobPatternMapper();
-			reportMapper.setFrom(reportFileName);
+			reportMapper.setFrom(reportFile.getName());
         	reportMapper.setTo(IvyPatternHelper.substitute(_outputpattern, organisation, module, "", "", "", ext, confs[i]));
         	mapper.add(reportMapper);
         }

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRepositoryReport.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRepositoryReport.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRepositoryReport.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRepositoryReport.java Wed Mar  7 14:42:50 2007
@@ -79,6 +79,7 @@
         	_module = PatternMatcher.ANY_EXPRESSION;
         }
         ModuleRevisionId mrid = ModuleRevisionId.newInstance(_organisation, _module, _revision);
+        
         try {
     		ModuleId[] mids = ivy.listModules(new ModuleId(_organisation, _module), settings.getMatcher(_matcher));
     		ModuleRevisionId[] mrids = new ModuleRevisionId[mids.length];
@@ -90,38 +91,43 @@
     			}
 			}
     		DefaultModuleDescriptor md = DefaultModuleDescriptor.newCallerInstance(mrids, true, false);
+    		String resolveId = ResolveOptions.getDefaultResolveId(md);
     		ResolveReport report = ivy.resolve(
     				md, 
     				new ResolveOptions()
+    					.setResolveId(resolveId)
 			    		.setCache(CacheManager.getInstance(settings, _cache))
 			    		.setValidate(doValidate(settings)));
     		
+    		CacheManager cacheMgr = getIvyInstance().getCacheManager(_cache);
     		new XmlReportOutputter().output(report, _cache);
     		if (_graph) {
-    			gengraph(_cache, md.getModuleRevisionId().getOrganisation(), md.getModuleRevisionId().getName());
+    			gengraph(cacheMgr, md.getModuleRevisionId().getOrganisation(), md.getModuleRevisionId().getName());
     		}
     		if (_dot) {
-    			gendot(_cache, md.getModuleRevisionId().getOrganisation(), md.getModuleRevisionId().getName());
+    			gendot(cacheMgr, md.getModuleRevisionId().getOrganisation(), md.getModuleRevisionId().getName());
     		}
     		if (_xml) {
-    			FileUtil.copy(new File(_cache, XmlReportOutputter.getReportFileName(md.getModuleRevisionId().getModuleId(), "default")), new File(_todir, _outputname+".xml"), null);
+    			
+    			FileUtil.copy(cacheMgr.getConfigurationResolveReportInCache(resolveId, "default"), new File(_todir, _outputname+".xml"), null);
     		}
     		if (_xsl) {
-    			genreport(_cache, md.getModuleRevisionId().getOrganisation(), md.getModuleRevisionId().getName());
+    			genreport(cacheMgr, md.getModuleRevisionId().getOrganisation(), md.getModuleRevisionId().getName());
     		}
         } catch (Exception e) {
             throw new BuildException("impossible to generate graph for "+ mrid +": "+e, e);
         }
     }
     
-    private void genreport(File cache, String organisation, String module) throws IOException {        
+    private void genreport(CacheManager cache, String organisation, String module) throws IOException {  
         // first process the report with xslt
         XSLTProcess xslt = new XSLTProcess();
         xslt.setTaskName(getTaskName());
         xslt.setProject(getProject());
         xslt.init();
         
-        xslt.setIn(new File(cache, XmlReportOutputter.getReportFileName(new ModuleId(organisation, module), "default")));
+        String resolveId = ResolveOptions.getDefaultResolveId(new ModuleId(organisation, module));
+        xslt.setIn(cache.getConfigurationResolveReportInCache(resolveId, "default"));
         xslt.setOut(new File(_todir, _outputname+"."+_xslext));
         
         xslt.setStyle(_xslFile);
@@ -141,8 +147,8 @@
         xslt.execute();
     }
 
-    private void gengraph(File cache, String organisation, String module) throws IOException {        
-        gen(cache, organisation, module, getGraphStylePath(cache), "graphml");
+    private void gengraph(CacheManager cache, String organisation, String module) throws IOException {        
+        gen(cache, organisation, module, getGraphStylePath(cache.getCache()), "graphml");
     }
     
     private String getGraphStylePath(File cache) throws IOException {
@@ -153,8 +159,8 @@
         return style.getAbsolutePath();
     }
     
-    private void gendot(File cache, String organisation, String module) throws IOException {        
-        gen(cache, organisation, module, getDotStylePath(cache), "dot");
+    private void gendot(CacheManager cache, String organisation, String module) throws IOException {        
+        gen(cache, organisation, module, getDotStylePath(cache.getCache()), "dot");
     }
     
     private String getDotStylePath(File cache) throws IOException {
@@ -165,15 +171,16 @@
         return style.getAbsolutePath();
     }
     
-    private void gen(File cache, String organisation, String module, String style, String ext) throws IOException {        
+    private void gen(CacheManager cache, String organisation, String module, String style, String ext) throws IOException {        
         XSLTProcess xslt = new XSLTProcess();
         xslt.setTaskName(getTaskName());
         xslt.setProject(getProject());
         xslt.init();
         
-        xslt.setIn(new File(cache, XmlReportOutputter.getReportFileName(new ModuleId(organisation, module), "default")));
+        String resolveId = ResolveOptions.getDefaultResolveId(new ModuleId(organisation, module));
+        xslt.setIn(cache.getConfigurationResolveReportInCache(resolveId, "default"));
         xslt.setOut(new File(_todir, _outputname+"."+ext));
-        xslt.setBasedir(cache);
+        xslt.setBasedir(cache.getCache());
         xslt.setStyle(style);
         xslt.execute();
     }
@@ -279,6 +286,4 @@
 	public void setDot(boolean dot) {
 		_dot = dot;
 	}
-    
-
 }

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java Wed Mar  7 14:42:50 2007
@@ -57,6 +57,7 @@
 	private Boolean _keep = null;
 	private String _failureProperty = null;
     private boolean _useOrigin = false;
+    private String _resolveId = null;
     
     public boolean isUseOrigin() {
     	return _useOrigin;
@@ -185,7 +186,7 @@
 	                throw new BuildException("resolve failed - see output for details");
 	            }
             }            
-            setResolved(report, isKeep());
+            setResolved(report, _resolveId, isKeep());
             
             if (isKeep()) {
             	ModuleDescriptor md = report.getModuleDescriptor();
@@ -207,6 +208,23 @@
 	                getProject().setProperty("ivy.resolved.configurations", _conf);
 	                settings.setVariable("ivy.resolved.configurations", _conf);
 	            }
+	            if (_resolveId != null) {
+		            getProject().setProperty("ivy.organisation." + _resolveId, md.getModuleRevisionId().getOrganisation());
+		            settings.setVariable("ivy.organisation." + _resolveId, md.getModuleRevisionId().getOrganisation());
+		            getProject().setProperty("ivy.module." + _resolveId, md.getModuleRevisionId().getName());
+		            settings.setVariable("ivy.module." + _resolveId, md.getModuleRevisionId().getName());
+		            getProject().setProperty("ivy.revision." + _resolveId, md.getResolvedModuleRevisionId().getRevision());
+		            settings.setVariable("ivy.revision." + _resolveId, md.getResolvedModuleRevisionId().getRevision());
+		            getProject().setProperty("ivy.deps.changed." + _resolveId, String.valueOf(hasChanged));
+		            settings.setVariable("ivy.deps.changed." + _resolveId, String.valueOf(hasChanged));
+		            if (_conf.trim().equals("*")) {
+		                getProject().setProperty("ivy.resolved.configurations." + _resolveId, mergeConfs(md.getConfigurationsNames()));
+		                settings.setVariable("ivy.resolved.configurations." + _resolveId, mergeConfs(md.getConfigurationsNames()));
+		            } else {
+		                getProject().setProperty("ivy.resolved.configurations." + _resolveId, _conf);
+		                settings.setVariable("ivy.resolved.configurations." + _resolveId, _conf);
+		            }
+	            }
             }
         } catch (MalformedURLException e) {
             throw new BuildException("unable to convert given ivy file to url: "+_file+": "+e, e);
@@ -227,7 +245,8 @@
 			.setDate(getPubDate(_pubdate, null))
 			.setUseCacheOnly(_useCacheOnly)
 			.setUseOrigin(_useOrigin)
-			.setTransitive(_transitive);
+			.setTransitive(_transitive)
+			.setResolveId(_resolveId);
 	}
 
 	public String getModule() {
@@ -265,5 +284,11 @@
 	}
 	public void setInline(boolean inline) {
 		_inline = inline;
+	}
+	public String getResolveId() {
+		return _resolveId;
+	}
+	public void setResolveId(String resolveId) {
+		_resolveId = resolveId;
 	}
 }

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyTask.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyTask.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyTask.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyTask.java Wed Mar  7 14:42:50 2007
@@ -30,6 +30,7 @@
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
 import org.apache.ivy.core.report.ResolveReport;
 import org.apache.ivy.core.settings.IvySettings;
+import org.apache.ivy.util.DefaultMessageImpl;
 import org.apache.ivy.util.Message;
 import org.apache.ivy.util.StringUtils;
 import org.apache.tools.ant.BuildException;
@@ -91,7 +92,8 @@
      */
     protected void ensureMessageInitialised() {
         if (!Message.isInitialised()) { 
-            Message.init(new AntMessageImpl(this));
+            //Message.init(new AntMessageImpl(this));
+        	Message.init(new DefaultMessageImpl(100));
         }
 
     }
@@ -124,27 +126,58 @@
         getProject().addReference("ivy.resolved.descriptor."+suffix, md);
         getProject().addReference("ivy.resolved.configurations.ref."+suffix, confs);
     }
+    protected void setResolved(ResolveReport report, String resolveId, boolean keep) {
+    	setResolved(report, keep);
+    	if (resolveId != null) {
+	    	ModuleDescriptor md = report.getModuleDescriptor();
+	    	String[] confs = report.getConfigurations();
+	        getProject().addReference("ivy.resolved.report."+resolveId, report);
+	        getProject().addReference("ivy.resolved.descriptor."+resolveId, md);
+	        getProject().addReference("ivy.resolved.configurations.ref."+resolveId, confs);
+    	}
+    }
     
 	protected void ensureResolved(boolean haltOnFailure, boolean useOrigin, String org, String module) {
-    	ensureResolved(haltOnFailure, useOrigin, true, org, module, null);
+		ensureResolved(haltOnFailure, useOrigin, org, module, null);
+	}
+	protected void ensureResolved(boolean haltOnFailure, boolean useOrigin, String org, String module, String resolveId) {
+    	ensureResolved(haltOnFailure, useOrigin, true, org, module, null, resolveId);
     }
     protected void ensureResolved(boolean haltOnFailure, boolean useOrigin, boolean transitive, String org, String module, String conf) {
+    	ensureResolved(haltOnFailure, useOrigin, true, org, module, null, null);
+    }
+    protected void ensureResolved(boolean haltOnFailure, boolean useOrigin, boolean transitive, String org, String module, String conf, String resolveId) {
         ensureMessageInitialised();
-//        if (org != null  && module != null) {
-//            return;
-//        }
-        String[] confs = getConfsToResolve(org, module, conf, false);
+        
+        String[] confs = null;
+        if (resolveId != null) {
+        	confs = getConfsToResolve(resolveId, conf);
+        } else {
+        	confs = getConfsToResolve(org, module, conf, false);
+        }
         
         if (confs.length > 0)  {
         	IvyResolve resolve = createResolve(haltOnFailure, useOrigin);
         	resolve.setTransitive(transitive);
         	resolve.setConf(StringUtils.join(confs, ", "));
+        	resolve.setResolveId(resolveId);
         	resolve.execute();
         } 
     }
     
     protected String[] getConfsToResolve(String org, String module, String conf, boolean strict) {
-        ModuleDescriptor reference = (ModuleDescriptor) getResolvedDescriptor(org, module, strict); 
+        ModuleDescriptor reference = (ModuleDescriptor) getResolvedDescriptor(org, module, strict);
+        String[] rconfs = (String[]) getReference("ivy.resolved.configurations.ref", org, module, strict);
+        return getConfsToResolve(reference, conf, rconfs);
+    }
+    
+    protected String[] getConfsToResolve(String resolveId, String conf) {
+        ModuleDescriptor reference = (ModuleDescriptor) getResolvedDescriptor(resolveId);
+        String[] rconfs = (String[]) getProject().getReference("ivy.resolved.configurations.ref." + resolveId);
+        return getConfsToResolve(reference, conf, rconfs);
+    }
+
+    private String[] getConfsToResolve(ModuleDescriptor reference, String conf, String[] rconfs) {
 		Message.debug("calculating configurations to resolve");
         
         if (reference == null)  {
@@ -155,7 +188,6 @@
         		return splitConfs(conf);
         	}
         } else if (conf != null) {
-        	String[] rconfs = getResolvedConfigurations(org, module, strict);
         	String[] confs;
         	if ("*".equals(conf)) {
         		confs = reference.getConfigurationsNames();
@@ -180,6 +212,13 @@
 		return (String[]) getReference("ivy.resolved.configurations.ref", org, module, strict);
 	}
     
+    protected Object getResolvedDescriptor(String resolveId) {
+    	Object result = getProject().getReference("ivy.resolved.descriptor." + resolveId);
+        if (result == null) {
+        	throw new BuildException("ModuleDescriptor for resolve with id '" + resolveId + "' not found.");
+        }
+        return result;
+    }
 	protected Object getResolvedDescriptor(String org, String module) {
 		return getResolvedDescriptor(org, module, false);
 	}
@@ -268,6 +307,22 @@
         }
     }
     
+    protected String getProperty(String value, IvySettings ivy, String name, String resolveId) {
+    	if (resolveId == null) {
+    		return getProperty(value, ivy, name);
+    	} else {
+    		return getProperty(value, ivy, name + "." + resolveId);
+    	}
+    }
+    
+    protected String getProperty(IvySettings ivy, String name, String resolveId) {
+    	if (resolveId == null) {
+    		return getProperty(ivy, name);
+    	} else {
+    		return getProperty(ivy, name + "." + resolveId);
+    	}
+    }
+
     protected String getProperty(IvySettings ivy, String name) {        
         String val =  ivy.getVariable(name);        
         if (val == null) {

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheManager.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheManager.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheManager.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheManager.java Wed Mar  7 14:42:50 2007
@@ -60,6 +60,10 @@
     public File getIvyFileInCache(ModuleRevisionId mrid) {
         return new File(_cache, IvyPatternHelper.substitute(_settings.getCacheIvyPattern(), DefaultArtifact.newIvyArtifact(mrid, null)));
     }
+    
+    public File getConfigurationResolveReportInCache(String resolveId, String conf) {
+    	return new File(_cache, resolveId + "-" + conf + ".xml");
+    }
 
     /**
      * Returns a File object pointing to where the artifact can be found on the local file system.

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/install/InstallEngine.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/install/InstallEngine.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/install/InstallEngine.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/install/InstallEngine.java Wed Mar  7 14:42:50 2007
@@ -91,6 +91,7 @@
         	_resolveEngine.setDictatorResolver(fromResolver);
             
             DefaultModuleDescriptor md = new DefaultModuleDescriptor(ModuleRevisionId.newInstance("apache", "ivy-install", "1.0"), _settings.getStatusManager().getDefaultStatus(), new Date());
+            String resolveId = ResolveOptions.getDefaultResolveId(md);
             md.addConfiguration(new Configuration("default"));
             md.addConflictManager(new ModuleId(ExactPatternMatcher.ANY_EXPRESSION, ExactPatternMatcher.ANY_EXPRESSION), ExactPatternMatcher.INSTANCE, new NoConflictManager());
             
@@ -111,12 +112,13 @@
             }                       
             
             // resolve using appropriate resolver
-            ResolveReport report = new ResolveReport(md);
+            ResolveReport report = new ResolveReport(md, resolveId);
             
             Message.info(":: resolving dependencies ::");
             IvyNode[] dependencies = _resolveEngine.getDependencies(
             		md, 
             		new ResolveOptions()
+            			.setResolveId(resolveId)
             			.setConfs(new String[] {"default"})
             			.setCache(CacheManager.getInstance(_settings, cache)), 
             		report);

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java Wed Mar  7 14:42:50 2007
@@ -32,12 +32,14 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.ivy.core.cache.CacheManager;
 import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
 import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.core.resolve.IvyNode;
 import org.apache.ivy.core.resolve.ResolveEngine;
+import org.apache.ivy.core.resolve.ResolveOptions;
 import org.apache.ivy.plugins.report.XmlReportOutputter;
 import org.apache.ivy.plugins.report.XmlReportParser;
 import org.apache.ivy.util.Message;
@@ -59,17 +61,21 @@
 	private List _modulesIds;
 	private List _previousDeps;
 
-	public ConfigurationResolveReport(ResolveEngine resolveEngine, ModuleDescriptor md, String conf, Date date, File cache) {
+	public ConfigurationResolveReport(ResolveEngine resolveEngine, ModuleDescriptor md, String conf, Date date, ResolveOptions options) {
 		_resolveEngine = resolveEngine;
     	_md = md;
     	_conf = conf;
     	_date = date;
 
 		// parse previous deps from previous report file if any
-        File previousReportFile = new File(cache, XmlReportOutputter.getReportFileName(md.getModuleRevisionId().getModuleId(), conf));
+    	CacheManager cache = options.getCache();
+    	String resolveId = options.getResolveId();
+        File previousReportFile = cache.getConfigurationResolveReportInCache(resolveId, conf);
 		if (previousReportFile.exists()) {
 			try {
-				_previousDeps = Arrays.asList(new XmlReportParser().getDependencyRevisionIds(md.getModuleRevisionId().getModuleId(), conf, cache));
+				XmlReportParser parser = new XmlReportParser();
+				parser.parse(previousReportFile);
+				_previousDeps = Arrays.asList(parser.getDependencyRevisionIds());
 			} catch (Exception e) {
 				_previousDeps = null;
 			}

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/report/ResolveReport.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/report/ResolveReport.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/report/ResolveReport.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/report/ResolveReport.java Wed Mar  7 14:42:50 2007
@@ -30,6 +30,7 @@
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
 import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.core.resolve.IvyNode;
+import org.apache.ivy.core.resolve.ResolveOptions;
 import org.apache.ivy.plugins.report.ReportOutputter;
 import org.apache.ivy.util.filter.Filter;
 
@@ -45,9 +46,15 @@
 	private List _artifacts;
 	private long _resolveTime;
 	private long _downloadTime;
+	private String _resolveId;
 	
     public ResolveReport(ModuleDescriptor md) {
         _md = md;
+        _resolveId = ResolveOptions.getDefaultResolveId(md);
+    }
+    public ResolveReport(ModuleDescriptor md, String resolveId) {
+    	_md = md;
+    	_resolveId = resolveId;
     }
     public void addReport(String conf, ConfigurationResolveReport report) {
         _confReports.put(conf, report);
@@ -200,5 +207,8 @@
 	}
 	public long getDownloadTime() {
 		return _downloadTime;
+	}
+	public String getResolveId() {
+		return _resolveId;
 	}
 }

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/resolve/ResolveEngine.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/resolve/ResolveEngine.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/resolve/ResolveEngine.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/resolve/ResolveEngine.java Wed Mar  7 14:42:50 2007
@@ -103,12 +103,15 @@
      */
 	public ResolveReport resolve(final ModuleRevisionId mrid, ResolveOptions options, boolean changing) throws ParseException, IOException {
 		DefaultModuleDescriptor md;
+		
 		String[] confs = options.getConfs();
 		if (confs.length == 1 && confs[0].equals("*")) {
-			ResolvedModuleRevision rmr = findModule(mrid, options.getCache());
+			// create new resolve options because this is a different resolve than the real resolve
+			// (which will be a resolve of a newCallerInstance module)
+			ResolvedModuleRevision rmr = findModule(mrid, new ResolveOptions(options));
 			if (rmr == null) {
 				md = DefaultModuleDescriptor.newCallerInstance(mrid, confs, options.isTransitive(), changing);
-				return new ResolveReport(md){
+				return new ResolveReport(md, options.getResolveId()) {
 					public boolean hasError() {
 						return true;
 					}
@@ -147,7 +150,7 @@
 
         return resolve(md, options);
     }
-
+    
     /**
      * Resolve dependencies of a module described by a module descriptor
      * 
@@ -173,13 +176,17 @@
             }
             options.setConfs(confs);
             
+            if (options.getResolveId() == null) {
+            	options.setResolveId(ResolveOptions.getDefaultResolveId(md));
+            }
+            
             _eventManager.fireIvyEvent(new StartResolveEvent(md, confs));
             
             long start = System.currentTimeMillis();
             Message.info(":: resolving dependencies :: "+md.getResolvedModuleRevisionId()+(options.isTransitive()?"":" [not transitive]"));
             Message.info("\tconfs: "+Arrays.asList(confs));
             Message.verbose("\tvalidate = "+options.isValidate());
-            ResolveReport report = new ResolveReport(md);
+            ResolveReport report = new ResolveReport(md, options.getResolveId());
 
             // resolve dependencies
             IvyNode[] dependencies = getDependencies(md, options, report);
@@ -367,7 +374,7 @@
                 if (report != null) {
                     confReport = report.getConfigurationReport(confs[i]);
                     if (confReport == null) {
-                        confReport = new ConfigurationResolveReport(this, md, confs[i], reportDate, cacheManager.getCache());
+                        confReport = new ConfigurationResolveReport(this, md, confs[i], reportDate, options);
                         report.addReport(confs[i], confReport);
                     }
                 }
@@ -767,21 +774,24 @@
         return false;
     }
 
-	public ResolvedModuleRevision findModule(ModuleRevisionId id, CacheManager cache) {
+	public ResolvedModuleRevision findModule(ModuleRevisionId id, ResolveOptions options) {
 		DependencyResolver r = _settings.getResolver(id.getModuleId());
 		if (r == null) {
 			throw new IllegalStateException("no resolver found for "+id.getModuleId());
 		}
         DefaultModuleDescriptor md = DefaultModuleDescriptor.newCallerInstance(id, new String[] {"*"}, false, false);
+        
+        if (options.getResolveId() == null) {
+        	options.setResolveId(ResolveOptions.getDefaultResolveId(md));
+        }
+        
 		try {
 			return r.getDependency(
 					new DefaultDependencyDescriptor(id, true), 
 					new ResolveData(
 							this, 
-							new ResolveOptions()
-								.setValidate(false)
-								.setCache(cache), 
-							new ConfigurationResolveReport(this, md, "default", null, cache.getCache())));
+							options, 
+							new ConfigurationResolveReport(this, md, "default", null, options)));
 		} catch (ParseException e) {
 			throw new RuntimeException("problem while parsing repository module descriptor for "+id+": "+e, e);
 		}

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/resolve/ResolveOptions.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/resolve/ResolveOptions.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/resolve/ResolveOptions.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/resolve/ResolveOptions.java Wed Mar  7 14:42:50 2007
@@ -20,6 +20,8 @@
 import java.util.Date;
 
 import org.apache.ivy.core.cache.CacheManager;
+import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
+import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.util.filter.Filter;
 import org.apache.ivy.util.filter.FilterHelper;
 
@@ -86,6 +88,10 @@
 	 * A filter to use to avoid downloading all artifacts.
 	 */
 	private Filter artifactFilter = FilterHelper.NO_FILTER;
+	/**
+	 * The id used to store the resolve information.
+	 */
+	private String resolveId;
 	
 	public ResolveOptions() {
 	}
@@ -102,6 +108,7 @@
 		outputReport = options.outputReport;
 		useOrigin = options.useOrigin;
 		artifactFilter = options.artifactFilter;
+		resolveId = options.resolveId;
 	}
 	
 	public Filter getArtifactFilter() {
@@ -180,5 +187,19 @@
 	public ResolveOptions setUseOrigin(boolean useOrigin) {
 		this.useOrigin = useOrigin;
 		return this;
+	}
+	public String getResolveId() {
+		return resolveId;
+	}
+	public ResolveOptions setResolveId(String resolveId) {
+		this.resolveId = resolveId;
+		return this;
+	}
+	public static String getDefaultResolveId(ModuleDescriptor md) {
+    	ModuleId module = md.getModuleRevisionId().getModuleId();
+    	return module.getOrganisation() + "-" + module.getName();
+	}
+	public static String getDefaultResolveId(ModuleId moduleId) {
+    	return moduleId.getOrganisation() + "-" + moduleId.getName();
 	}
 }

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java Wed Mar  7 14:42:50 2007
@@ -41,6 +41,7 @@
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
 import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
+import org.apache.ivy.core.resolve.ResolveOptions;
 import org.apache.ivy.core.settings.IvySettings;
 import org.apache.ivy.plugins.parser.ModuleDescriptorParser;
 import org.apache.ivy.plugins.parser.ModuleDescriptorParserRegistry;
@@ -212,6 +213,10 @@
 	public Map determineArtifactsToCopy(ModuleRevisionId mrid, String destFilePattern, RetrieveOptions options) throws ParseException, IOException {
 		ModuleId moduleId = mrid.getModuleId();
 		
+		if (options.getResolveId() == null) {
+			options.setResolveId(ResolveOptions.getDefaultResolveId(moduleId));
+		}
+		
         CacheManager cacheManager = getCacheManager(options);
         String[] confs = getConfs(mrid, options);
         String destIvyPattern = IvyPatternHelper.substituteVariables(options.getDestIvyPattern(), _settings.getVariables());
@@ -223,9 +228,13 @@
         XmlReportParser parser = new XmlReportParser();
         for (int i = 0; i < confs.length; i++) {
             final String conf = confs[i];
-            Collection artifacts = new ArrayList(Arrays.asList(parser.getArtifacts(moduleId, conf, cacheManager.getCache())));
+
+            File report = cacheManager.getConfigurationResolveReportInCache(options.getResolveId(), conf);
+            parser.parse(report);
+        	
+            Collection artifacts = new ArrayList(Arrays.asList(parser.getArtifacts()));
             if (destIvyPattern != null) {
-                ModuleRevisionId[] mrids = parser.getRealDependencyRevisionIds(moduleId, conf, cacheManager.getCache());
+                ModuleRevisionId[] mrids = parser.getRealDependencyRevisionIds();
                 for (int j = 0; j < mrids.length; j++) {
                     artifacts.add(DefaultArtifact.newIvyArtifact(mrids[j], null));
                 }

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveOptions.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveOptions.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveOptions.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveOptions.java Wed Mar  7 14:42:50 2007
@@ -71,6 +71,12 @@
 	 */
 	private boolean makeSymlinks = false;
 	
+	/**
+	 * The id used to store the resolve information.
+	 */
+	private String resolveId;
+
+	
 	public Filter getArtifactFilter() {
 		return artifactFilter;
 	}
@@ -120,6 +126,12 @@
 		this.useOrigin = useOrigin;
 		return this;
 	}
-	
+	public String getResolveId() {
+		return resolveId;
+	}
+	public RetrieveOptions setResolveId(String resolveId) {
+		this.resolveId = resolveId;
+		return this;
+	}
 	
 }

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportOutputter.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportOutputter.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportOutputter.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportOutputter.java Wed Mar  7 14:42:50 2007
@@ -31,6 +31,7 @@
 
 import org.apache.ivy.Ivy;
 import org.apache.ivy.core.cache.ArtifactOrigin;
+import org.apache.ivy.core.cache.CacheManager;
 import org.apache.ivy.core.module.descriptor.License;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
 import org.apache.ivy.core.module.id.ModuleId;
@@ -59,18 +60,15 @@
     public void output(ResolveReport report, File destDir) {
         String[] confs = report.getConfigurations();
         for (int i = 0; i < confs.length; i++) {
-            output(report.getConfigurationReport(confs[i]), confs, destDir);
+            output(report.getConfigurationReport(confs[i]), report.getResolveId(), confs, destDir);
         }
     }
     
-    public void output(ConfigurationResolveReport report, File destDir) {
-    	output(report, new String[] {report.getConfiguration()}, destDir);
-    }
-    
-    public void output(ConfigurationResolveReport report, String[] confs, File destDir) {
+    public void output(ConfigurationResolveReport report, String resolveId, String[] confs, File destDir) {
     	try {
     	    destDir.mkdirs();
-    		File reportFile = new File(destDir, getReportFileName(report));
+    	    CacheManager cacheMgr = new CacheManager(null, destDir);
+    		File reportFile = cacheMgr.getConfigurationResolveReportInCache(resolveId, report.getConfiguration());
     		OutputStream stream = new FileOutputStream(reportFile);
     		output(report, confs, stream);
     		stream.close();
@@ -238,18 +236,4 @@
 		}
 		return buf.toString();
 	}
-
-	public static String getReportFileName(ConfigurationResolveReport report) {
-		return getReportFileName(
-				report.getModuleDescriptor().getModuleRevisionId().getModuleId(), 
-				report.getConfiguration());
-	}
-
-	public static String getReportFileName(ModuleId mid, String conf) {
-		return 
-			mid.getOrganisation()
-			+ "-" + mid.getName()
-			+ "-" + conf+".xml";
-	}
-
 }

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java Wed Mar  7 14:42:50 2007
@@ -18,7 +18,6 @@
 package org.apache.ivy.plugins.report;
 
 import java.io.File;
-import java.io.IOException;
 import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Date;
@@ -33,7 +32,6 @@
 import org.apache.ivy.Ivy;
 import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.DefaultArtifact;
-import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.util.extendable.ExtendableItemHelper;
 import org.xml.sax.Attributes;
@@ -70,7 +68,6 @@
                 private boolean _default;
                 private SortedMap _revisionsMap = new TreeMap(); // Use a TreeMap to order by position (position = key)
                 private List _revisionArtifacts = null;
-                private int _maxPos;
                 
                 public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
                     if ("module".equals(qName)) {
@@ -147,65 +144,34 @@
             return _realMrids;
         }
     }
+    
+    private SaxXmlReportParser parser = null;
 
-	public Artifact[] getArtifacts(ModuleId moduleId, String conf, File cache) throws ParseException, IOException {
-		return getArtifacts(getReportFile(moduleId, conf, cache));
-    }
+    public void parse(File report) throws ParseException {
+    	if (!report.exists()) {
+    		throw new IllegalStateException("Report file '" + report.getAbsolutePath() + "' does not exist.");
+    	}
 
-	private Artifact[] getArtifacts(File report) throws ParseException {
-		try {
-			SaxXmlReportParser parser = new SaxXmlReportParser(report);
+    	parser = new SaxXmlReportParser(report);
+    	try {
 			parser.parse();
-            return (Artifact[])parser.getArtifacts().toArray(new Artifact[parser.getArtifacts().size()]);
-        } catch (Exception ex) {
-            ParseException pe = new ParseException("failed to parse report: "+report+": "+ex.getMessage(), 0);
-            pe.initCause(ex);
-            throw pe;
-        }
-	}
-        
-    public ModuleRevisionId[] getDependencyRevisionIds(ModuleId moduleId, String conf, File cache) throws ParseException, IOException {
-        return getDependencyRevisionIds(getReportFile(moduleId, conf, cache));
-    }
-
-    private ModuleRevisionId[] getDependencyRevisionIds(File report) throws ParseException {
-        try {
-            SaxXmlReportParser parser = new SaxXmlReportParser(report);
-            parser.parse();
-            return (ModuleRevisionId[])parser.getModuleRevisionIds().toArray(new ModuleRevisionId[parser.getModuleRevisionIds().size()]);
-        } catch (Exception ex) {
-            ParseException pe = new ParseException("failed to parse report: "+report+": "+ex.getMessage(), 0);
-            pe.initCause(ex);
+		} catch (Exception e) {
+            ParseException pe = new ParseException("failed to parse report: "+report+": "+e.getMessage(), 0);
+            pe.initCause(e);
             throw pe;
-        }
-    }
-        
-    /**
-     * Returns all the mrids of the dependencies which have a real module descriptor, i.e. not a default one
-     */
-    public ModuleRevisionId[] getRealDependencyRevisionIds(ModuleId moduleId, String conf, File cache) throws ParseException, IOException {
-        return getRealDependencyRevisionIds(getReportFile(moduleId, conf, cache));
+		}
     }
-
-    private ModuleRevisionId[] getRealDependencyRevisionIds(File report) throws ParseException {
-        try {
-            SaxXmlReportParser parser = new SaxXmlReportParser(report);
-            parser.parse();
-            return (ModuleRevisionId[])parser.getRealModuleRevisionIds().toArray(new ModuleRevisionId[parser.getRealModuleRevisionIds().size()]);
-        } catch (Exception ex) {
-            ParseException pe = new ParseException("failed to parse report: "+report+": "+ex.getMessage(), 0);
-            pe.initCause(ex);
-            throw pe;
-        }
+    
+    public Artifact[] getArtifacts() {
+    	return (Artifact[]) parser.getArtifacts().toArray(new Artifact[parser.getArtifacts().size()]);
     }
-        
-    private File getReportFile(ModuleId moduleId, String conf, File cache) {
-    	File report = new File(cache, XmlReportOutputter.getReportFileName(moduleId, conf));
-    	if (!report.exists()) {
-    		throw new IllegalStateException("no report file found for "+moduleId+" "+conf+" in "+cache+": ivy was looking for "+report);
-    	}
-    	return report;
+    
+    public ModuleRevisionId[] getDependencyRevisionIds() {
+    	return (ModuleRevisionId[])parser.getModuleRevisionIds().toArray(new ModuleRevisionId[parser.getModuleRevisionIds().size()]);
     }
     
+    public ModuleRevisionId[] getRealDependencyRevisionIds() {
+    	return (ModuleRevisionId[])parser.getRealModuleRevisionIds().toArray(new ModuleRevisionId[parser.getRealModuleRevisionIds().size()]);
+    }
 }
 

Modified: incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/AntBuildTriggerTest.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/AntBuildTriggerTest.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/AntBuildTriggerTest.java (original)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/AntBuildTriggerTest.java Wed Mar  7 14:42:50 2007
@@ -27,18 +27,18 @@
 
 public class AntBuildTriggerTest extends TestCase {
 	public void test() throws Exception {
-		assertFalse(new File("test/triggers/ant-build/local/A/A.jar").exists());		
+		assertFalse(new File("test/triggers/ant-build/A/A.jar").exists());
 
 		Ivy ivy = new Ivy();
 		ivy.configure(new File("test/triggers/ant-build/ivyconf.xml"));
-		
+
 		ResolveReport r = ivy.resolve(new File("test/triggers/ant-build/B/ivy.xml"));
 		assertFalse(r.hasError());
-		
+
 		// should have triggered an A publish
-		assertTrue(new File("test/triggers/ant-build/local/A/A.jar").exists());		
+		assertTrue(new File("test/triggers/ant-build/local/A/A.jar").exists());
 	}
-	
+
 	protected void tearDown() throws Exception {
 		FileUtil.forceDelete(new File("test/triggers/ant-build/local/A"));
 		FileUtil.forceDelete(new File("test/triggers/ant-build/cache"));

Modified: incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyArtifactPropertyTest.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyArtifactPropertyTest.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyArtifactPropertyTest.java (original)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyArtifactPropertyTest.java Wed Mar  7 14:42:50 2007
@@ -21,6 +21,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.taskdefs.Delete;
 
@@ -64,4 +65,34 @@
         assertNotNull(val);
         assertEquals("build/cache/mod1.2/mod1.2-2.0.jar", val);
     }
+    
+    public void testWithResolveId() throws Exception {
+    	IvyResolve resolve = new IvyResolve();
+    	resolve.setProject(_project);
+    	resolve.setCache(_cache);
+    	resolve.setFile(new File("test/java/org/apache/ivy/ant/ivy-simple.xml"));
+    	resolve.setResolveId("abc");
+    	resolve.execute();
+    	
+        _prop.setName("[module].[artifact]-[revision]");
+        _prop.setValue("${cache.dir}/[module]/[artifact]-[revision].[type]");
+        _prop.setResolveId("abc");
+        _prop.execute();
+
+        String val = _project.getProperty("mod1.2.mod1.2-2.0");
+        assertNotNull(val);
+        assertEquals("build/cache/mod1.2/mod1.2-2.0.jar", val);
+    }
+
+    public void testWithResolveIdWithoutResolve() throws Exception {
+    	try {
+	        _prop.setName("[module].[artifact]-[revision]");
+	        _prop.setValue("${cache.dir}/[module]/[artifact]-[revision].[type]");
+	        _prop.setResolveId("abc");
+	        _prop.execute();
+	        fail("Task should have failed because no resolve was performed!");
+    	} catch (BuildException e) {
+    		// this is expected!
+    	}
+   }
 }

Modified: incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java?view=diff&rev=515819&r1=515818&r2=515819
==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java (original)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java Wed Mar  7 14:42:50 2007
@@ -1135,7 +1135,7 @@
         assertEquals(0, crr.getDownloadReports(ModuleRevisionId.newInstance("org1", "mod1.2", "2.0")).length);
         assertEquals(1, crr.getDownloadReports(ModuleRevisionId.newInstance("org1", "mod1.2", "2.1")).length);
         
-        File r = new File(_cache, XmlReportOutputter.getReportFileName(mrid.getModuleId(), "default"));
+        File r = new File(_cache, ResolveOptions.getDefaultResolveId(mrid.getModuleId()) + "-default.xml");
         assertTrue(r.exists());
         final boolean[] found = new boolean[] {false};
         SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
@@ -1175,7 +1175,7 @@
         assertEquals(1, crr.getDownloadReports(ModuleRevisionId.newInstance("org1", "mod1.2", "2.1")).length);
         
         ModuleRevisionId mrid = ModuleRevisionId.newInstance("org4", "mod4.1", "4.14");
-        File r = new File(_cache, XmlReportOutputter.getReportFileName(mrid.getModuleId(), "default"));
+        File r = new File(_cache, ResolveOptions.getDefaultResolveId(mrid.getModuleId()) + "-default.xml");
         assertTrue(r.exists());
         final boolean[] found = new boolean[] {false};
         SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
@@ -1767,7 +1767,7 @@
         assertNotNull(crr);
         assertEquals(1, crr.getDownloadReports(depId).length);
         
-        File r = new File(_cache, XmlReportOutputter.getReportFileName(mrid.getModuleId(), "A"));
+        File r = new File(_cache, ResolveOptions.getDefaultResolveId(mrid.getModuleId()) + "-A.xml");
         assertTrue(r.exists());
         final boolean[] found = new boolean[] {false};
         SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
@@ -1840,7 +1840,7 @@
         assertNotNull(crr);
         assertEquals(1, crr.getDownloadReports(depId).length);
         
-        File r = new File(_cache, XmlReportOutputter.getReportFileName(mrid.getModuleId(), "default"));
+        File r = new File(_cache, ResolveOptions.getDefaultResolveId(mrid.getModuleId()) + "-default.xml");
         assertTrue(r.exists());
         final boolean[] found = new boolean[] {false};
         SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();