Bug 578728 - Use PluginModels of launch-delegates for launch validation

Change-Id: Ie2a7472f1df457ce8dc4a5f1a846fe9b25e56125
Signed-off-by: Hannes Wellmann <wellmann.hannes1@gmx.net>
Reviewed-on: https://git.eclipse.org/r/c/pde/eclipse.pde.ui/+/190764
Tested-by: PDE Bot <pde-bot@eclipse.org>
diff --git a/features/org.eclipse.pde.unittest.junit-feature/feature.xml b/features/org.eclipse.pde.unittest.junit-feature/feature.xml
index 06b89e1..60cff19 100644
--- a/features/org.eclipse.pde.unittest.junit-feature/feature.xml
+++ b/features/org.eclipse.pde.unittest.junit-feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.pde.unittest.junit"
       label="%featureName"
-      version="1.0.100.qualifier"
+      version="1.0.200.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="0.0.0">
diff --git a/features/org.eclipse.pde.unittest.junit-feature/pom.xml b/features/org.eclipse.pde.unittest.junit-feature/pom.xml
index 3b5b657..1ebfb42 100644
--- a/features/org.eclipse.pde.unittest.junit-feature/pom.xml
+++ b/features/org.eclipse.pde.unittest.junit-feature/pom.xml
@@ -19,7 +19,7 @@
   </parent>
   <groupId>org.eclipse.pde.unittest.junit.feature</groupId>
   <artifactId>org.eclipse.pde.unittest.junit</artifactId>
-  <version>1.0.100-SNAPSHOT</version>
+  <version>1.0.200-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 
   <build>
diff --git a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/EclipsePluginValidationOperation.java b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/EclipsePluginValidationOperation.java
index 844350f..9e3be67 100644
--- a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/EclipsePluginValidationOperation.java
+++ b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/EclipsePluginValidationOperation.java
@@ -25,16 +25,11 @@
 public class EclipsePluginValidationOperation extends LaunchValidationOperation {
 	public static final int CREATE_EXTENSION_ERROR_CODE = 1000;
 
-	private Map<Object, Object[]> fExtensionErrors = new HashMap<>(2);
-	private static Object[] EMPTY = new Object[0];
+	private static final Object[] EMPTY = new Object[0];
+	private final Map<Object, Object[]> fExtensionErrors = new HashMap<>(2);
 
-	public EclipsePluginValidationOperation(ILaunchConfiguration configuration) {
-		super(configuration);
-	}
-
-	@Override
-	protected Set<IPluginModelBase> getModels() throws CoreException {
-		return BundleLauncherHelper.getMergedBundleMap(fLaunchConfiguration, false).keySet();
+	public EclipsePluginValidationOperation(ILaunchConfiguration configuration, Set<IPluginModelBase> models) {
+		super(configuration, models);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchValidationOperation.java b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchValidationOperation.java
index 4fc259e..f896ed5 100644
--- a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchValidationOperation.java
+++ b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchValidationOperation.java
@@ -36,23 +36,23 @@
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 
-public abstract class LaunchValidationOperation implements IWorkspaceRunnable {
+public class LaunchValidationOperation implements IWorkspaceRunnable {
 
 	private BundleValidationOperation fOperation;
-	protected ILaunchConfiguration fLaunchConfiguration;
+	protected final ILaunchConfiguration fLaunchConfiguration;
+	protected final Set<IPluginModelBase> fModels;
 
-	public LaunchValidationOperation(ILaunchConfiguration configuration) {
+	public LaunchValidationOperation(ILaunchConfiguration configuration, Set<IPluginModelBase> models) {
 		fLaunchConfiguration = configuration;
+		fModels = models;
 	}
 
 	@Override
 	public void run(IProgressMonitor monitor) throws CoreException {
-		fOperation = new BundleValidationOperation(getModels(), getPlatformProperties());
+		fOperation = new BundleValidationOperation(fModels, getPlatformProperties());
 		fOperation.run(monitor);
 	}
 
-	protected abstract Set<IPluginModelBase> getModels() throws CoreException;
-
 	@SuppressWarnings("rawtypes")
 	protected Dictionary[] getPlatformProperties() throws CoreException {
 		IExecutionEnvironment[] envs = getMatchingEnvironments();
diff --git a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/OSGiValidationOperation.java b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/OSGiValidationOperation.java
deleted file mode 100644
index 6d2f4df..0000000
--- a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/OSGiValidationOperation.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2022 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     EclipseSource Corporation - ongoing enhancements
- *******************************************************************************/
-package org.eclipse.pde.internal.launching.launcher;
-
-import java.util.Set;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.pde.core.plugin.IPluginModelBase;
-
-public class OSGiValidationOperation extends LaunchValidationOperation {
-
-	public OSGiValidationOperation(ILaunchConfiguration configuration) {
-		super(configuration);
-	}
-
-	@Override
-	protected Set<IPluginModelBase> getModels() throws CoreException {
-		return BundleLauncherHelper.getMergedBundleMap(fLaunchConfiguration, true).keySet();
-	}
-
-}
diff --git a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/ProductValidationOperation.java b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/ProductValidationOperation.java
index 5743621..3cc0f01 100644
--- a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/ProductValidationOperation.java
+++ b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/ProductValidationOperation.java
@@ -24,16 +24,8 @@
 
 public class ProductValidationOperation extends LaunchValidationOperation {
 
-	private Set<IPluginModelBase> fModels;
-
 	public ProductValidationOperation(Set<IPluginModelBase> models) {
-		super(null);
-		fModels = models;
-	}
-
-	@Override
-	protected Set<IPluginModelBase> getModels() throws CoreException {
-		return fModels;
+		super(null, models);
 	}
 
 	@Override
diff --git a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/AbstractPDELaunchConfiguration.java b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/AbstractPDELaunchConfiguration.java
index ec57649..66915c1 100644
--- a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/AbstractPDELaunchConfiguration.java
+++ b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/AbstractPDELaunchConfiguration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2005, 2018, 2022 IBM Corporation and others.
+ *  Copyright (c) 2005, 2022 IBM Corporation and others.
  *
  *  This program and the accompanying materials
  *  are made available under the terms of the Eclipse Public License 2.0
@@ -24,6 +24,7 @@
 import org.eclipse.jdt.core.IJavaModelMarker;
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.launching.*;
+import org.eclipse.pde.core.plugin.IPluginModelBase;
 import org.eclipse.pde.core.plugin.TargetPlatform;
 import org.eclipse.pde.internal.core.ICoreConstants;
 import org.eclipse.pde.internal.core.TargetPlatformHelper;
@@ -509,7 +510,8 @@
 	 * @since 3.3
 	 */
 	protected void validatePluginDependencies(ILaunchConfiguration configuration, IProgressMonitor monitor) throws CoreException {
-		EclipsePluginValidationOperation op = new EclipsePluginValidationOperation(configuration);
+		Set<IPluginModelBase> models = BundleLauncherHelper.getMergedBundleMap(configuration, false).keySet();
+		EclipsePluginValidationOperation op = new EclipsePluginValidationOperation(configuration, models);
 		LaunchPluginValidator.runValidationOperation(op, monitor);
 	}
 
diff --git a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/EclipseApplicationLaunchConfiguration.java b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/EclipseApplicationLaunchConfiguration.java
index 5a1e102..a886741 100644
--- a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/EclipseApplicationLaunchConfiguration.java
+++ b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/EclipseApplicationLaunchConfiguration.java
@@ -200,6 +200,12 @@
 	}
 
 	@Override
+	protected void validatePluginDependencies(ILaunchConfiguration configuration, IProgressMonitor monitor) throws CoreException {
+		EclipsePluginValidationOperation op = new EclipsePluginValidationOperation(configuration, fModels.keySet());
+		LaunchPluginValidator.runValidationOperation(op, monitor);
+	}
+
+	@Override
 	public String[] getVMArguments(ILaunchConfiguration configuration) throws CoreException {
 		String[] vmArgs = super.getVMArguments(configuration);
 		// necessary for PDE to know how to load plugins when target platform = host platform
diff --git a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/EquinoxLaunchConfiguration.java b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/EquinoxLaunchConfiguration.java
index bff34e1..a6b6032 100644
--- a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/EquinoxLaunchConfiguration.java
+++ b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/EquinoxLaunchConfiguration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2021 IBM Corporation and others.
+ * Copyright (c) 2005, 2022 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -171,7 +171,7 @@
 
 	@Override
 	protected void validatePluginDependencies(ILaunchConfiguration configuration, IProgressMonitor monitor) throws CoreException {
-		OSGiValidationOperation op = new OSGiValidationOperation(configuration);
+		LaunchValidationOperation op = new LaunchValidationOperation(configuration, fModels.keySet());
 		LaunchPluginValidator.runValidationOperation(op, monitor);
 	}
 
diff --git a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/JUnitLaunchConfigurationDelegate.java b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/JUnitLaunchConfigurationDelegate.java
index 73a10db..a017aad 100644
--- a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/JUnitLaunchConfigurationDelegate.java
+++ b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/JUnitLaunchConfigurationDelegate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2021 IBM Corporation and others.
+ * Copyright (c) 2006, 2022 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -520,7 +520,7 @@
 	 * 			a progress monitor
 	 */
 	protected void validatePluginDependencies(ILaunchConfiguration configuration, IProgressMonitor monitor) throws CoreException {
-		EclipsePluginValidationOperation op = new EclipsePluginValidationOperation(configuration);
+		EclipsePluginValidationOperation op = new EclipsePluginValidationOperation(configuration, fModels.keySet());
 		LaunchPluginValidator.runValidationOperation(op, monitor);
 	}
 }
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java
index 4c3c1b8..4d29880 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java
@@ -93,8 +93,6 @@
 
 	private Label fCounter;
 
-	private LaunchValidationOperation fOperation;
-
 	private Button fValidateButton;
 
 	private HashMap<Object, String> levelColumnCache = new HashMap<>();
@@ -951,10 +949,8 @@
 	}
 
 	public void handleValidate() {
-		if (fOperation == null) {
-			fOperation = createValidationOperation();
-		}
 		try {
+			LaunchValidationOperation fOperation = createValidationOperation();
 			fOperation.run(new NullProgressMonitor());
 
 			if (fDialog == null) {
@@ -998,7 +994,7 @@
 		}
 	}
 
-	protected abstract LaunchValidationOperation createValidationOperation();
+	protected abstract LaunchValidationOperation createValidationOperation() throws CoreException;
 
 	/**
 	 * called before the TreeView is refreshed. This allows any subclasses to cache
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/FeatureBlock.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/FeatureBlock.java
index b4760fc..c6bcc0a 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/FeatureBlock.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/FeatureBlock.java
@@ -334,17 +334,12 @@
 		}
 
 		private void handleValidate() {
-			if (fOperation == null)
-				// Unlike PluginBlock, we don't want to validate the application/product requirements because we will grab them automatically at launch time
-				fOperation = new LaunchValidationOperation(fLaunchConfig) {
-					@Override
-					protected Set<IPluginModelBase> getModels() throws CoreException {
-						// The feature block is used in both the OSGi config and Eclipse configs, use the tab id to determine which we are using
-						boolean isOSGiTab = fTab.getId().equals(IPDELauncherConstants.TAB_BUNDLES_ID);
-						return BundleLauncherHelper.getMergedBundleMap(fLaunchConfiguration, isOSGiTab).keySet();
-					}
-				};
 			try {
+				// The feature block is used in both the OSGi config and Eclipse configs, use the tab id to determine which we are using
+				boolean isOSGi = fTab.getId().equals(IPDELauncherConstants.TAB_BUNDLES_ID);
+				Set<IPluginModelBase> models = BundleLauncherHelper.getMergedBundleMap(fLaunchConfig, isOSGi).keySet();
+				// Unlike PluginBlock, we don't want to validate the application/product requirements because we will grab them automatically at launch time
+				LaunchValidationOperation fOperation = new LaunchValidationOperation(fLaunchConfig, models);
 				fOperation.run(new NullProgressMonitor());
 				if (fDialog == null) {
 					if (fOperation.hasErrors()) {
@@ -819,7 +814,6 @@
 	private ButtonSelectionListener fListener;
 	private AbstractLauncherTab fTab;
 	private CachedCheckboxTreeViewer fTree;
-	private LaunchValidationOperation fOperation;
 
 	private ViewerFilter fSelectedOnlyFilter;
 	private boolean fIsDisposed = false;
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/OSGiBundleBlock.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/OSGiBundleBlock.java
index 099e2ad..b91f27b 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/OSGiBundleBlock.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/OSGiBundleBlock.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2021 IBM Corporation and others.
+ * Copyright (c) 2005, 2022 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -15,11 +15,13 @@
 package org.eclipse.pde.internal.ui.launcher;
 
 import java.util.Map;
+import java.util.Set;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
 import org.eclipse.pde.core.plugin.IPluginModelBase;
-import org.eclipse.pde.internal.launching.launcher.*;
+import org.eclipse.pde.internal.launching.launcher.BundleLauncherHelper;
+import org.eclipse.pde.internal.launching.launcher.LaunchValidationOperation;
 import org.eclipse.pde.launching.IPDELauncherConstants;
 import org.eclipse.pde.ui.launcher.BundlesTab;
 
@@ -78,8 +80,9 @@
 	}
 
 	@Override
-	protected LaunchValidationOperation createValidationOperation() {
-		return new OSGiValidationOperation(fLaunchConfiguration);
+	protected LaunchValidationOperation createValidationOperation() throws CoreException {
+		Set<IPluginModelBase> models = BundleLauncherHelper.getMergedBundleMap(fLaunchConfiguration, true).keySet();
+		return new LaunchValidationOperation(fLaunchConfiguration, models);
 	}
 
 }
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/PluginBlock.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/PluginBlock.java
index 3d355a6..f501a43 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/PluginBlock.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/PluginBlock.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2021 IBM Corporation and others.
+ * Copyright (c) 2005, 2022 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -207,8 +207,9 @@
 	}
 
 	@Override
-	protected LaunchValidationOperation createValidationOperation() {
-		return new EclipsePluginValidationOperation(fLaunchConfig);
+	protected LaunchValidationOperation createValidationOperation() throws CoreException {
+		Set<IPluginModelBase> models = BundleLauncherHelper.getMergedBundleMap(fLaunchConfig, false).keySet();
+		return new EclipsePluginValidationOperation(fLaunchConfig, models);
 	}
 
 }
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/EquinoxLaunchConfiguration.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/EquinoxLaunchConfiguration.java
index cf36dde..f9da72b 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/EquinoxLaunchConfiguration.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/ui/launcher/EquinoxLaunchConfiguration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2021 IBM Corporation and others.
+ * Copyright (c) 2005, 2022 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -174,7 +174,7 @@
 
 	@Override
 	protected void validatePluginDependencies(ILaunchConfiguration configuration, IProgressMonitor monitor) throws CoreException {
-		OSGiValidationOperation op = new OSGiValidationOperation(configuration);
+		LaunchValidationOperation op = new LaunchValidationOperation(configuration, fModels.keySet());
 		LaunchPluginValidator.runValidationOperation(op, monitor);
 	}
 
diff --git a/ui/org.eclipse.pde.unittest.junit/META-INF/MANIFEST.MF b/ui/org.eclipse.pde.unittest.junit/META-INF/MANIFEST.MF
index 4e60909..2f560d4 100644
--- a/ui/org.eclipse.pde.unittest.junit/META-INF/MANIFEST.MF
+++ b/ui/org.eclipse.pde.unittest.junit/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.pde.unittest.junit;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.200.qualifier
 Bundle-Activator: org.eclipse.pde.unittest.junit.JUnitPluginTestPlugin
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: %providerName
diff --git a/ui/org.eclipse.pde.unittest.junit/pom.xml b/ui/org.eclipse.pde.unittest.junit/pom.xml
index 8446734..48f48b2 100644
--- a/ui/org.eclipse.pde.unittest.junit/pom.xml
+++ b/ui/org.eclipse.pde.unittest.junit/pom.xml
@@ -18,7 +18,7 @@
     <relativePath>../../</relativePath>
   </parent>
   <artifactId>org.eclipse.pde.unittest.junit</artifactId>
-  <version>1.0.100-SNAPSHOT</version>
+  <version>1.0.200-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   <properties>
       <skipAPIAnalysis>true</skipAPIAnalysis>
diff --git a/ui/org.eclipse.pde.unittest.junit/src/org/eclipse/pde/unittest/junit/launcher/JUnitPluginLaunchConfigurationDelegate.java b/ui/org.eclipse.pde.unittest.junit/src/org/eclipse/pde/unittest/junit/launcher/JUnitPluginLaunchConfigurationDelegate.java
index 807e90a..bb8ed51 100644
--- a/ui/org.eclipse.pde.unittest.junit/src/org/eclipse/pde/unittest/junit/launcher/JUnitPluginLaunchConfigurationDelegate.java
+++ b/ui/org.eclipse.pde.unittest.junit/src/org/eclipse/pde/unittest/junit/launcher/JUnitPluginLaunchConfigurationDelegate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2021 Red Hat Inc. and others.
+ * Copyright (c) 2021, 2022 Red Hat Inc. and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -1248,7 +1248,7 @@
 	 */
 	protected void validatePluginDependencies(ILaunchConfiguration configuration, IProgressMonitor monitor)
 			throws CoreException {
-		EclipsePluginValidationOperation op = new EclipsePluginValidationOperation(configuration);
+		EclipsePluginValidationOperation op = new EclipsePluginValidationOperation(configuration, fModels.keySet());
 		LaunchPluginValidator.runValidationOperation(op, monitor);
 	}
 }