Bug 549179 - Adding project to a run configuration with a dependency to
a project that is already in the run configration
Change-Id: I56d077f6418554808461f8c4d9d21bedea58bd4e
Reviewed-on: https://git.eclipse.org/r/c/jdt/eclipse.jdt.debug/+/187301
Tested-by: JDT Bot <jdt-bot@eclipse.org>
Tested-by: Sarika Sinha <sarika.sinha@in.ibm.com>
Reviewed-by: Dieter Mai <maidieter@googlemail.com>
Reviewed-by: Sarika Sinha <sarika.sinha@in.ibm.com>
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/AddProjectAction.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/AddProjectAction.java
index b6118fc..383dedd 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/AddProjectAction.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/AddProjectAction.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -82,8 +82,12 @@
List<IRuntimeClasspathEntry> runtimeEntries = new ArrayList<>(additions.size());
Iterator<IJavaProject> iter = additions.iterator();
+ IRuntimeClasspathEntry[] addedEntries = getViewer().getEntries();
while (iter.hasNext()) {
IJavaProject jp = iter.next();
+ if (isProjectAdded(jp, addedEntries)) {
+ continue;
+ }
runtimeEntries.add(JavaRuntime.newProjectRuntimeClasspathEntry(jp));
if (dialog.isAddExportedEntries()) {
try {
@@ -102,6 +106,18 @@
}
}
+ private boolean isProjectAdded(IJavaProject project, IRuntimeClasspathEntry[] addedEntries) {
+ for (IRuntimeClasspathEntry entry : addedEntries) {
+ if (entry.getType() == IRuntimeClasspathEntry.PROJECT) {
+ IResource res = ResourcesPlugin.getWorkspace().getRoot().findMember(entry.getPath());
+ if (res.getLocationURI().equals(project.getResource().getLocationURI())) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
/**
* @see SelectionListenerAction#updateSelection(IStructuredSelection)
*/