Bug 571019 - Use atomic marker creation API in
EECompilationParticipant

The new marker API from Bug 570914 allows to create markers with
attributes and therefore avoids sending out resource change events for
every attribute change.

Includes an update of the required resource API version.

Change-Id: I6f426b013fc0cab33f1f7e5ca03de532e61026cf
Signed-off-by: Lars Vogel <Lars.Vogel@vogella.com>
diff --git a/org.eclipse.jdt.launching/META-INF/MANIFEST.MF b/org.eclipse.jdt.launching/META-INF/MANIFEST.MF
index 3873dc2..da372e6 100644
--- a/org.eclipse.jdt.launching/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.launching/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
  org.eclipse.jdt.launching.sourcelookup,
  org.eclipse.jdt.launching.sourcelookup.advanced,
  org.eclipse.jdt.launching.sourcelookup.containers
-Require-Bundle: org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)",
+Require-Bundle: org.eclipse.core.resources;bundle-version="[3.14.0,4.0.0)",
  org.eclipse.jdt.core;bundle-version="[3.24.0,4.0.0)",
  org.eclipse.debug.core;bundle-version="[3.17.0,4.0.0)",
  org.eclipse.jdt.debug;bundle-version="[3.17.0,4.0.0)",
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/EECompilationParticipant.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/EECompilationParticipant.java
index 1ecbd6b..128fa8d 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/EECompilationParticipant.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/EECompilationParticipant.java
@@ -16,6 +16,7 @@
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.eclipse.core.resources.IMarker;
@@ -308,17 +309,11 @@
 	 */
 	private void createJREContainerProblem(IJavaProject javaProject, String message, int severity) {
 		try {
-			IMarker marker = javaProject.getProject().createMarker(JavaRuntime.JRE_CONTAINER_MARKER);
-			marker.setAttributes(
-				new String[] {
-						IMarker.MESSAGE,
-						IMarker.SEVERITY,
-						IMarker.LOCATION},
-					new Object[] {
-						message,
-						Integer.valueOf(severity),
-						LaunchingMessages.LaunchingPlugin_37
-					});
+			Map<String, Object> attributes = Map.of(IMarker.MESSAGE, message, //
+					IMarker.SEVERITY, Integer.valueOf(severity), //
+					IMarker.LOCATION, LaunchingMessages.LaunchingPlugin_37);
+
+			javaProject.getProject().createMarker(JavaRuntime.JRE_CONTAINER_MARKER, attributes);
 		} catch (CoreException e) {
 			return;
 		}