in org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/resolve/IvyResolver.java [124:191]
public IStatus resolve(Ivy ivy, ModuleDescriptor md, IProgressMonitor monitor, int step) {
computeConfs(confInput, md);
try {
ivy.pushContext();
IvyDEMessage.info("Resolving " + toString());
IvyResolveJobListener ivyResolveJobListener = new IvyResolveJobListener(monitor, step);
ivy.getEventManager().addIvyListener(ivyResolveJobListener);
monitor.setTaskName("Resolve of " + toString());
ResolveResult result = new ResolveResult();
// context Classloader hook for commons logging used by httpclient
// It will also be used by the SaxParserFactory in Ivy
ClassLoader old = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(IvyResolver.class.getClassLoader());
try {
if (usePreviousResolveIfExist) {
result = resolveWithPrevious(ivy, md);
} else {
result = doResolve(ivy, md);
}
if (result.getProblemMessages().isEmpty()) {
// only continue if we resolved correctly
IStatus retrieveStatus = maybeRetrieve(ivy, md, result, monitor);
if (!retrieveStatus.isOK()) {
return retrieveStatus;
}
postResolveOrRefresh(ivy, md, result, monitor);
}
} catch (ParseException e) {
String errorMsg = "Error while parsing the Ivy file from " + this.toString() + "\n"
+ e.getMessage();
IvyDEMessage.error(errorMsg);
return new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR, errorMsg, e);
} catch (Exception e) {
String errorMsg = "Error while resolving dependencies for " + this.toString()
+ "\n" + e.getMessage();
IvyDEMessage.error(errorMsg);
return new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR, errorMsg, e);
} finally {
Thread.currentThread().setContextClassLoader(old);
ivy.getEventManager().removeIvyListener(ivyResolveJobListener);
}
if (!result.getProblemMessages().isEmpty()) {
MultiStatus multiStatus = new MultiStatus(IvyPlugin.ID, IStatus.ERROR,
"Impossible to resolve dependencies of " + md.getModuleRevisionId(), null);
for (String s : result.getProblemMessages()) {
multiStatus.add(new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR,
s, null));
}
return multiStatus;
}
return Status.OK_STATUS;
} catch (Throwable e) {
return new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR, "The resolve job of "
+ toString() + " has unexpectedly stopped", e);
} finally {
ivy.popContext();
}
}