in org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/revdepexplorer/SyncIvyFilesJob.java [107:166]
protected IStatus executeJob(IProgressMonitor monitor) {
MultiStatus errorStatuses = new MultiStatus(IvyPlugin.ID, IStatus.ERROR,
"Failed to update one or more Ivy files. See details.", null);
for (IvyClasspathContainer container : getIvyClasspathContainers()) {
IvyClasspathContainerState ivycps = ((IvyClasspathContainerImpl) container).getState();
ModuleDescriptor md = ivycps.getCachedModuleDescriptor();
if (md == null) {
continue;
}
Map<ModuleRevisionId, String> newRevisions = new HashMap<>();
for (DependencyDescriptor dependency : md.getDependencies()) {
for (MultiRevDependencyDescriptor multiRevision : multiRevisionDependencies) {
ModuleRevisionId dependencyRevisionId = dependency.getDependencyRevisionId();
if (dependency.getDependencyId().equals(multiRevision.getModuleId())
&& multiRevision.hasNewRevision()
&& multiRevision.isForContainer(container)) {
newRevisions.put(dependencyRevisionId,
multiRevision.getNewRevision());
break; // move on to the next dependency
}
}
}
UpdateOptions updateOptions = new UpdateOptions().setResolvedRevisions(newRevisions)
.setReplaceInclude(false).setGenerateRevConstraint(false)
.setNamespace(new RevisionPreservingNamespace());
File ivyFile;
try {
ivyFile = ivycps.getIvyFile();
} catch (IvyDEException e) {
errorStatuses.add(new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR,
"Fail to resolve the Ivy file", e));
continue;
}
File ivyTempFile = new File(ivyFile.toString() + ".temp");
try {
XmlModuleDescriptorUpdater.update(ivyFile.toURI().toURL(), ivyTempFile,
updateOptions);
saveChanges(container, ivyFile, ivyTempFile);
} catch (MalformedURLException e) {
errorStatuses.add(new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR,
"Failed to write Ivy file " + ivyFile + " (malformed URL)", e));
} catch (IOException | SAXException e) {
errorStatuses.add(new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR,
"Failed to write Ivy file " + ivyFile, e));
} finally {
ivyTempFile.delete();
}
}
if (errorStatuses.getChildren().length > 0) {
return errorStatuses;
}
return Status.OK_STATUS;
}