Bug 571019 : Use atomic marker creation API in Breakpoints

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.


Change-Id: I13337e00afca4b777e06fc4f876839ad0d6f0791
Signed-off-by: Gayan Perera <gayanper@gmail.com>
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaClassPrepareBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaClassPrepareBreakpoint.java
index d5c66ee..b81e674 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaClassPrepareBreakpoint.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaClassPrepareBreakpoint.java
@@ -91,9 +91,6 @@
 			final int charEnd, final boolean add, final Map<String, Object> attributes)
 			throws DebugException {
 		IWorkspaceRunnable wr = monitor -> {
-			// create the marker
-			setMarker(resource.createMarker(JAVA_CLASS_PREPARE_BREAKPOINT));
-
 			// add attributes
 			attributes.put(IBreakpoint.ID, getModelIdentifier());
 			attributes.put(IMarker.CHAR_START, Integer.valueOf(charStart));
@@ -103,7 +100,8 @@
 			attributes.put(ENABLED, Boolean.TRUE);
 			attributes.put(SUSPEND_POLICY, Integer.valueOf(getDefaultSuspendPolicy()));
 
-			ensureMarker().setAttributes(attributes);
+			// create the marker
+			setMarker(resource.createMarker(JAVA_CLASS_PREPARE_BREAKPOINT, attributes));
 
 			register(add);
 		};
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaLineBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaLineBreakpoint.java
index 782809c..8ed1c06 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaLineBreakpoint.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaLineBreakpoint.java
@@ -145,16 +145,14 @@
 			throws DebugException {
 		IWorkspaceRunnable wr = monitor -> {
 
-			// create the marker
-			setMarker(resource.createMarker(markerType));
-
 			// add attributes
 			addLineBreakpointAttributes(attributes, getModelIdentifier(),
 					true, lineNumber, charStart, charEnd);
 			addTypeNameAndHitCount(attributes, typeName, hitCount);
 			// set attributes
 			attributes.put(SUSPEND_POLICY, Integer.valueOf(getDefaultSuspendPolicy()));
-			ensureMarker().setAttributes(attributes);
+			// create the marker
+			setMarker(resource.createMarker(markerType, attributes));
 
 			// add to breakpoint manager if requested
 			register(add);
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaPatternBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaPatternBreakpoint.java
index 077c4d5..2c1096e 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaPatternBreakpoint.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaPatternBreakpoint.java
@@ -67,16 +67,14 @@
 			final String markerType) throws DebugException {
 		IWorkspaceRunnable wr = monitor -> {
 
-			// create the marker
-			setMarker(resource.createMarker(markerType));
-
 			// add attributes
 			addLineBreakpointAttributes(attributes, getModelIdentifier(),
 					true, lineNumber, charStart, charEnd);
 			addPatternAndHitCount(attributes, sourceName, pattern, hitCount);
 			// set attributes
 			attributes.put(SUSPEND_POLICY, Integer.valueOf(getDefaultSuspendPolicy()));
-			ensureMarker().setAttributes(attributes);
+			// create the marker
+			setMarker(resource.createMarker(markerType, attributes));
 
 			register(add);
 		};
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaStratumLineBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaStratumLineBreakpoint.java
index de63d19..0aacd40 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaStratumLineBreakpoint.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaStratumLineBreakpoint.java
@@ -142,9 +142,6 @@
 			final String markerType) throws DebugException {
 		IWorkspaceRunnable wr = monitor -> {
 
-			// create the marker
-			setMarker(resource.createMarker(markerType));
-
 			// modify pattern
 			String pattern = classNamePattern;
 			if (pattern != null && pattern.length() == 0) {
@@ -158,7 +155,8 @@
 					sourcePath, pattern, hitCount);
 			// set attributes
 			attributes.put(SUSPEND_POLICY, Integer.valueOf(getDefaultSuspendPolicy()));
-			ensureMarker().setAttributes(attributes);
+			// create the marker
+			setMarker(resource.createMarker(markerType, attributes));
 
 			register(register);
 		};
@@ -263,14 +261,17 @@
 				if (fSuffix[i].length() == 0) {
 					return true;
 				}
-				if (typeName.endsWith(fSuffix[i]))
+				if (typeName.endsWith(fSuffix[i])) {
 					return true;
+				}
 			} else if (fPrefix[i] != null) {
-				if (typeName.startsWith(fPrefix[i]))
+				if (typeName.startsWith(fPrefix[i])) {
 					return true;
+				}
 			} else {
-				if (typeName.startsWith(patterns[i]))
+				if (typeName.startsWith(patterns[i])) {
 					return true;
+				}
 			}
 		}
 
@@ -436,8 +437,9 @@
 	}
 
 	public synchronized String[] getTypeNamePatterns() throws CoreException {
-		if (fTypeNamePatterns != null)
+		if (fTypeNamePatterns != null) {
 			return fTypeNamePatterns;
+		}
 
 		String patterns = getPattern();
 
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaTargetPatternBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaTargetPatternBreakpoint.java
index fea4972..e541615 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaTargetPatternBreakpoint.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaTargetPatternBreakpoint.java
@@ -64,16 +64,13 @@
 			throws DebugException {
 		IWorkspaceRunnable wr = monitor -> {
 
-			// create the marker
-			setMarker(resource.createMarker(markerType));
-
 			// add attributes
 			addLineBreakpointAttributes(attributes, getModelIdentifier(),
 					true, lineNumber, charStart, charEnd);
 			addSourceNameAndHitCount(attributes, sourceName, hitCount);
 			attributes.put(SUSPEND_POLICY, Integer.valueOf(getDefaultSuspendPolicy()));
-			// set attributes
-			ensureMarker().setAttributes(attributes);
+			// create the marker
+			setMarker(resource.createMarker(markerType, attributes));
 
 			register(add);
 		};