protected IStatus executeJob()

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;
    }