Bug 501801 - Use SubMonitor.split in org.eclipse.pde.core instead of
#worked

Change-Id: Iffa19d613c7cd92cc544c77ad58132bd166a02ef
Signed-off-by: Lars Vogel <Lars.Vogel@vogella.com>
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/BundleValidationOperation.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/BundleValidationOperation.java
index 503288a..a80c11d 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/BundleValidationOperation.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/BundleValidationOperation.java
@@ -36,19 +36,21 @@
 
 	@Override
 	public void run(IProgressMonitor monitor) throws CoreException {
-		if (FACTORY == null)
+		if (FACTORY == null) {
 			FACTORY = Platform.getPlatformAdmin().getFactory();
-		monitor.beginTask("", fModels.length + 1); //$NON-NLS-1$
+		}
+		SubMonitor subMonitor = SubMonitor.convert(monitor, fModels.length + 1);
 		fState = FACTORY.createState(true);
-		for (int i = 0; i < fModels.length; i++) {
-			BundleDescription bundle = fModels[i].getBundleDescription();
-			if (bundle != null)
+		for (IPluginModelBase fModel : fModels) {
+			BundleDescription bundle = fModel.getBundleDescription();
+			if (bundle != null) {
 				fState.addBundle(FACTORY.createBundleDescription(bundle));
-			monitor.worked(1);
+			}
+			subMonitor.step(1);
 		}
 		fState.setPlatformProperties(fProperties);
 		fState.resolve(false);
-		monitor.done();
+		subMonitor.step(1);
 	}
 
 	public Map<Object, Object[]> getResolverErrors() {
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalFeatureModelManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalFeatureModelManager.java
index 24bf0a0..d9f4a72 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalFeatureModelManager.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalFeatureModelManager.java
@@ -187,14 +187,12 @@
 	}
 
 	private static TargetFeature[] createFeatures(URL[] featurePaths, IProgressMonitor monitor) {
-		if (monitor == null)
-			monitor = new NullProgressMonitor();
-		monitor.beginTask("", featurePaths.length); //$NON-NLS-1$
+		SubMonitor subMonitor = SubMonitor.convert(monitor, featurePaths.length);
 		Map<String, TargetFeature> uniqueFeatures = new HashMap<>();
 		for (int i = 0; i < featurePaths.length; i++) {
 			File manifest = new File(featurePaths[i].getFile(), ICoreConstants.FEATURE_FILENAME_DESCRIPTOR);
 			if (!manifest.exists() || !manifest.isFile()) {
-				monitor.worked(1);
+				subMonitor.step(1);
 				continue;
 			}
 			try {
@@ -203,7 +201,7 @@
 			} catch (CoreException e) {
 				// Ignore bad files in the collection
 			}
-			monitor.worked(1);
+			subMonitor.step(1);
 		}
 		Collection<TargetFeature> models = uniqueFeatures.values();
 		return models.toArray(new TargetFeature[models.size()]);
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEState.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEState.java
index 74f4f10..57daa82 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEState.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEState.java
@@ -14,8 +14,7 @@
 import java.io.File;
 import java.net.URL;
 import java.util.*;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.*;
 import org.eclipse.osgi.service.resolver.*;
 import org.eclipse.pde.core.plugin.IPluginModelBase;
 import org.eclipse.pde.core.target.LoadTargetDefinitionJob;
@@ -81,7 +80,7 @@
 				/**
 				 * Compares the given versions and prefers ".qualifier" versions over versions
 				 * with any concrete qualifier.
-				 * 
+				 *
 				 * @param v1 first version
 				 * @param v2 second version
 				 * @return a negative number, zero, or a positive number depending on
@@ -105,20 +104,17 @@
 				}
 			});
 		}
-		monitor.beginTask(PDECoreMessages.PDEState_CreatingTargetModelState, urls.length);
-		for (int i = 0; i < urls.length; i++) {
-			File file = new File(urls[i].getFile());
+		SubMonitor subMonitor = SubMonitor.convert(monitor, PDECoreMessages.PDEState_CreatingTargetModelState,
+				urls.length);
+		for (URL url : urls) {
+			File file = new File(url.getFile());
 			try {
-				if (monitor.isCanceled())
-					// if canceled, stop loading bundles
-					return;
-				monitor.subTask(file.getName());
+				subMonitor.subTask(file.getName());
 				addBundle(file, -1);
 			} catch (CoreException e) {
 				PDECore.log(e);
-			} finally {
-				monitor.worked(1);
 			}
+			subMonitor.step(1);
 		}
 	}
 
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java
index 86acef4..c4c78ca 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java
@@ -531,10 +531,6 @@
 			fExternalManager.setModels(new IPluginModelBase[0]);
 			fEntries = entries;
 			LoadTargetDefinitionJob.load(unresolvedRepoBasedtarget);
-			subMon.done();
-			if (monitor != null) {
-				monitor.done();
-			}
 			return;
 		}
 
@@ -572,7 +568,7 @@
 		for (int i = 0; i < models.length; i++) {
 			addWorkspaceBundleToState(entries, models[i]);
 		}
-		subMon.worked(15);
+		subMon.step(15);
 
 		if (PDECore.DEBUG_MODEL) {
 			System.out.println(fWorkspaceManager.getModels().length + " workspace models created in  " + (System.currentTimeMillis() - startWorkspaceAdditions) + " ms"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -580,7 +576,7 @@
 
 		// Resolve the state for all external and workspace models
 		fState.resolveState(true);
-		subMon.worked(5);
+		subMon.step(5);
 
 		fEntries = entries;
 		// flush the extension registry cache since workspace data (BundleDescription id's) have changed.
@@ -598,16 +594,12 @@
 			}
 		}
 
-		subMon.worked(25);
+		subMon.step(25);
 		if (PDECore.DEBUG_MODEL) {
 			long time = System.currentTimeMillis() - startTime;
 			System.out.println("PDE plug-in model initialization complete: " + time + " ms"); //$NON-NLS-1$//$NON-NLS-2$
 		}
 
-		subMon.done();
-		if (monitor != null) {
-			monitor.done();
-		}
 	}
 
 	/**
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ExtensionPointSchemaBuilder.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ExtensionPointSchemaBuilder.java
index b6104fa..4fc9b50 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ExtensionPointSchemaBuilder.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ExtensionPointSchemaBuilder.java
@@ -74,14 +74,9 @@
 
 	@Override
 	protected void clean(IProgressMonitor monitor) throws CoreException {
-		SubMonitor localmonitor = SubMonitor.convert(monitor, NLS.bind(PDECoreMessages.ExtensionPointSchemaBuilder_0, getProject().getName()), 1);
-		try {
-			// clean existing markers on schema files
-			cleanSchemasIn(getProject(), localmonitor);
-			localmonitor.worked(1);
-		} finally {
-			localmonitor.done();
-		}
+		SubMonitor subMonitor = SubMonitor.convert(monitor, NLS.bind(PDECoreMessages.ExtensionPointSchemaBuilder_0, getProject().getName()), 1);
+		// clean existing markers on schema files
+		cleanSchemasIn(getProject(), subMonitor.split(1));
 	}
 
 	/**
@@ -92,9 +87,6 @@
 	 * @throws CoreException
 	 */
 	private void cleanSchemasIn(IContainer container, IProgressMonitor monitor) throws CoreException {
-		if (monitor.isCanceled()) {
-			throw new OperationCanceledException();
-		}
 		IResource[] members = container.members();
 		for (int i = 0; i < members.length; i++) {
 			IResource member = members[i];
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/FeatureConsistencyChecker.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/FeatureConsistencyChecker.java
index 7b63a80..7282fb8 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/FeatureConsistencyChecker.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/FeatureConsistencyChecker.java
@@ -107,13 +107,9 @@
 		IFile file = PDEProject.getFeatureXml(getProject());
 		if (file.exists()) {
 			SubMonitor localmonitor = SubMonitor.convert(monitor, NLS.bind(PDECoreMessages.FeatureConsistencyChecker_0, file.getName()), 1);
-			try {
-				// clean problem markers on feature XML file
-				file.deleteMarkers(PDEMarkerFactory.MARKER_ID, true, IResource.DEPTH_ZERO);
-				localmonitor.worked(1);
-			} finally {
-				localmonitor.done();
-			}
+			// clean problem markers on feature XML file
+			file.deleteMarkers(PDEMarkerFactory.MARKER_ID, true, IResource.DEPTH_ZERO);
+			localmonitor.step(1);
 		}
 	}
 
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ManifestConsistencyChecker.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ManifestConsistencyChecker.java
index 44b42e3..ff3d855 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ManifestConsistencyChecker.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ManifestConsistencyChecker.java
@@ -385,22 +385,19 @@
 	@Override
 	protected void clean(IProgressMonitor monitor) throws CoreException {
 		SubMonitor localmonitor = SubMonitor.convert(monitor, NLS.bind(PDECoreMessages.ManifestConsistencyChecker_0, getProject().getName()), 1);
-		try {
-			// clean problem markers on the project
-			cleanProblems(getProject(), IResource.DEPTH_ZERO);
-			// clean the manifest directory (since errors can be created on manifest files with incorrect casing)
-			IFile manifestFile = PDEProject.getManifest(getProject());
-			cleanProblems(manifestFile.getParent(), IResource.DEPTH_ONE);
-			// clean plug-in XML file
-			cleanProblems(PDEProject.getPluginXml(getProject()), IResource.DEPTH_ZERO);
-			// clean fragment XML file
-			cleanProblems(PDEProject.getFragmentXml(getProject()), IResource.DEPTH_ZERO);
-			// clean build properties
-			cleanProblems(PDEProject.getBuildProperties(getProject()), IResource.DEPTH_ZERO);
-			localmonitor.worked(1);
-		} finally {
-			localmonitor.done();
-		}
+		// clean problem markers on the project
+		cleanProblems(getProject(), IResource.DEPTH_ZERO);
+		// clean the manifest directory (since errors can be created on manifest
+		// files with incorrect casing)
+		IFile manifestFile = PDEProject.getManifest(getProject());
+		cleanProblems(manifestFile.getParent(), IResource.DEPTH_ONE);
+		// clean plug-in XML file
+		cleanProblems(PDEProject.getPluginXml(getProject()), IResource.DEPTH_ZERO);
+		// clean fragment XML file
+		cleanProblems(PDEProject.getFragmentXml(getProject()), IResource.DEPTH_ZERO);
+		// clean build properties
+		cleanProblems(PDEProject.getBuildProperties(getProject()), IResource.DEPTH_ZERO);
+		localmonitor.step(1);
 	}
 
 	/**
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/UpdateSiteBuilder.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/UpdateSiteBuilder.java
index 52511db..8525853 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/UpdateSiteBuilder.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/UpdateSiteBuilder.java
@@ -93,13 +93,9 @@
 		IFile site = getProject().getFile("site.xml"); //$NON-NLS-1$
 		if (site.exists()) {
 			SubMonitor localmonitor = SubMonitor.convert(monitor, NLS.bind(PDECoreMessages.UpdateSiteBuilder_0, site.getName()), 1);
-			try {
-				// clean problem markers on site XML file
-				site.deleteMarkers(PDEMarkerFactory.MARKER_ID, true, IResource.DEPTH_ZERO);
-				localmonitor.worked(1);
-			} finally {
-				localmonitor.done();
-			}
+			// clean problem markers on site XML file
+			site.deleteMarkers(PDEMarkerFactory.MARKER_ID, true, IResource.DEPTH_ZERO);
+			localmonitor.step(1);
 		}
 	}
 }
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/FeatureExportOperation.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/FeatureExportOperation.java
index 7b57903..3dc15d1 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/FeatureExportOperation.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/exports/FeatureExportOperation.java
@@ -246,14 +246,13 @@
 		fHasErrors = false;
 
 		int subTaskLength = 6 + (configs.length * 4) + (publishingP2Metadata() ? 2 : 0);
-		SubMonitor subMonitor = SubMonitor.convert(monitor, subTaskLength);
-		subMonitor.setTaskName(PDECoreMessages.FeatureExportJob_taskName);
+		SubMonitor subMonitor = SubMonitor.convert(monitor, PDECoreMessages.FeatureExportJob_taskName, subTaskLength);
 
 		HashMap<String, String> properties = createAntBuildProperties(configs);
 		BuildScriptGenerator generator = new BuildScriptGenerator();
 		setupGenerator(generator, featureID, version, configs, featureLocation);
 		generator.generate();
-		subMonitor.worked(1);
+		subMonitor.step(1);
 		subMonitor.setTaskName(PDECoreMessages.FeatureExportOperation_runningBuildScript);
 		// compile the classes
 		runScript(featureLocation + IPath.SEPARATOR + "compile." + featureID + ".xml", new String[] {"main"}, properties, subMonitor.split(1)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -1148,7 +1147,7 @@
 		if (fInfo.useWorkspaceCompiledClasses) {
 			getWorkspaceExportHelper().buildBeforeExport(fInfo.items, subMonitor.split(45));
 			Set<?> errors = getWorkspaceExportHelper().checkForErrors(fInfo.items);
-			subMonitor.worked(5);
+			subMonitor.step(5);
 			if (!errors.isEmpty()) {
 				return new Status(IStatus.ERROR, PDECore.PLUGIN_ID, NLS.bind(PDECoreMessages.FeatureExportOperation_workspaceBuildErrorsFoundDuringExport, errors.toString()));
 			}
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/ProjectModifyOperation.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/ProjectModifyOperation.java
index ff18334..2522eff 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/ProjectModifyOperation.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/ProjectModifyOperation.java
@@ -10,8 +10,6 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.core.project;
 
-import org.eclipse.jdt.core.IClasspathEntry;
-
 import java.util.*;
 import java.util.Map.Entry;
 import org.eclipse.core.resources.*;
@@ -113,17 +111,17 @@
 			}
 			PDEProject.setBundleRoot(project, folder);
 		}
-		sub.worked(1);
+		sub.step(1);
 		configureNatures(description);
-		sub.worked(1);
+		sub.step(1);
 		if (project.hasNature(JavaCore.NATURE_ID)) {
 			configureJavaProject(description, before, jpExisted);
 		}
-		sub.worked(1);
+		sub.step(1);
 		configureManifest(description, before);
-		sub.worked(1);
+		sub.step(1);
 		configureBuildPropertiesFile(description, before);
-		sub.worked(1);
+		sub.step(1);
 
 		// project settings for Equinox, Extension Registry, Automated dependency policy,
 		// manifest editor launch shortcuts and export wizard
@@ -173,11 +171,7 @@
 		if (fModel.isDirty()) {
 			fModel.save();
 		}
-		sub.worked(1);
-		sub.done();
-		if (monitor != null) {
-			monitor.done();
-		}
+		sub.step(1);
 	}
 
 	/**
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/search/PluginSearchOperation.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/search/PluginSearchOperation.java
index ab20bef..5e13dd1 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/search/PluginSearchOperation.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/search/PluginSearchOperation.java
@@ -10,11 +10,11 @@
  *******************************************************************************/
 package org.eclipse.pde.internal.core.search;
 
-import org.eclipse.pde.core.IIdentifiable;
-
 import java.util.ArrayList;
 import java.util.regex.Pattern;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.pde.core.IIdentifiable;
 import org.eclipse.pde.core.plugin.*;
 import org.eclipse.pde.internal.core.util.PatternConstructor;
 
@@ -31,17 +31,13 @@
 
 	public void execute(IProgressMonitor monitor) {
 		IPluginModelBase[] entries = fInput.getSearchScope().getMatchingModels();
-		monitor.beginTask("", entries.length); //$NON-NLS-1$
+		SubMonitor subMonitor = SubMonitor.convert(monitor, entries.length);
 
-		try {
-			for (int i = 0; i < entries.length; i++) {
-				IPluginModelBase candidate = entries[i];
-				visit(candidate);
-				monitor.worked(1);
-			}
-		} finally {
-			monitor.done();
+		for (IPluginModelBase candidate : entries) {
+			visit(candidate);
+			subMonitor.step(1);
 		}
+
 	}
 
 	private void visit(IPluginModelBase model) {
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java
index eee0c31..9d24c68 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java
@@ -931,9 +931,6 @@
 
 		// Get the root IUs for every relevant container in the target definition
 		IInstallableUnit[] units = getRootIUs(target, subMonitor.split(20));
-		if (subMonitor.isCanceled()) {
-			return;
-		}
 
 		// create the provisioning plan
 		IPlanner planner = getPlanner();
@@ -950,10 +947,6 @@
 		context.setMetadataRepositories(getMetadataRepositories(target));
 		context.setArtifactRepositories(getArtifactRepositories(target));
 
-		if (subMonitor.isCanceled()) {
-			return;
-		}
-
 		IProvisioningPlan plan = planner.getProvisioningPlan(request, context, subMonitor.split(20));
 		IStatus status = plan.getStatus();
 		if (!status.isOK()) {
@@ -966,18 +959,12 @@
 			// to continue, we don't want to update the running SDK while provisioning a target
 			PDECore.log(new Status(IStatus.INFO, PDECore.PLUGIN_ID, Messages.IUBundleContainer_6));
 		}
-		subMonitor.worked(10);
-		if (subMonitor.isCanceled()) {
-			return;
-		}
+		subMonitor.split(10);
 
 		// execute the provisioning plan
 		IPhaseSet phases = createPhaseSet();
 		IEngine engine = getEngine();
 		IStatus result = engine.perform(plan, phases, subMonitor.split(100));
-		if (subMonitor.isCanceled()) {
-			return;
-		}
 		if (!result.isOK()) {
 			throw new CoreException(result);
 		}
@@ -1138,9 +1125,6 @@
 
 		// resolve IUs
 		IInstallableUnit[] units = getRootIUs(target, subMonitor.split(40));
-		if (subMonitor.isCanceled()) {
-			return;
-		}
 
 		URI[] repositories = getMetadataRepositories(target);
 		int repoCount = repositories.length;
@@ -1151,7 +1135,7 @@
 
 		// do an initial slice to add everything the user requested
 		IQueryResult<IInstallableUnit> queryResult = slice(units, allMetadata, target, subMonitor.split(5));
-		if (subMonitor.isCanceled() || queryResult == null || queryResult.isEmpty()) {
+		if (queryResult == null || queryResult.isEmpty()) {
 			return;
 		}
 
@@ -1165,7 +1149,7 @@
 			units2[units.length] = sourceIU;
 
 			queryResult = slice(units2, allMetadata, target, subMonitor.split(5));
-			if (subMonitor.isCanceled() || queryResult == null || queryResult.isEmpty()) {
+			if (queryResult == null || queryResult.isEmpty()) {
 				return;
 			}
 		}
@@ -1193,10 +1177,7 @@
 			plan.removeInstallableUnit((IInstallableUnit) name);
 		}
 
-		if (subMonitor.isCanceled()) {
-			return;
-		}
-		subMonitor.worked(5);
+		subMonitor.split(5);
 
 		// execute the provisioning plan
 		IPhaseSet phases = createPhaseSet();
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ProfileBundleContainer.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ProfileBundleContainer.java
index 183d338..ac71a81 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ProfileBundleContainer.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ProfileBundleContainer.java
@@ -133,7 +133,7 @@
 			} catch (CoreException e) {
 				all.add(new InvalidTargetBundle(new BundleInfo(location), e.getStatus()));
 			}
-			localMonitor.worked(1);
+			localMonitor.step(1);
 		}
 		// Add source bundles
 		for (BundleInfo element : source) {
@@ -146,9 +146,8 @@
 			} catch (CoreException e) {
 				all.add(new InvalidTargetBundle(new BundleInfo(location), e.getStatus()));
 			}
-			localMonitor.worked(1);
+			localMonitor.step(1);
 		}
-		localMonitor.done();
 		return all.toArray(new TargetBundle[all.size()]);
 	}
 
@@ -192,9 +191,8 @@
 						PDECore.log(e);
 					}
 				}
-				localMonitor.worked(1);
+				localMonitor.step(1);
 			}
-			localMonitor.done();
 			if (!all.isEmpty()) {
 				return all.toArray(new TargetBundle[all.size()]);
 			}