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();