This commit was manufactured by cvs2svn to create branch 'STABLE'.

Sprout from master 2001-10-24 15:56:48 UTC Darin Wright <darin> 're-release jdi 1.3'
Cherrypick from master 2001-09-26 17:47:04 UTC Darin Wright <darin> 'NLS':
    org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/DebugJavaUtils.java
    org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/IJavaDebugConstants.java
    org.eclipse.jdt.debug/plugin.jars
Cherrypick from master 2001-10-12 14:19:59 UTC Jared Burns <jburns> 'Code review cleanup':
    org.eclipse.jdt.debug/model/org/eclipse/jdt/debug/core/ISnippetSupportLineBreakpoint.java
    org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/AbstractJavaLineBreakpoint.java
    org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/SnippetSupportLineBreakpoint.java
Cherrypick from master 2001-09-05 11:27:00 UTC Darin Wright <darin> 'breakpoint API':
    org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/DebugJavaResources.properties
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/debug/core/ISnippetSupportLineBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/debug/core/ISnippetSupportLineBreakpoint.java
new file mode 100644
index 0000000..c9b70a9
--- /dev/null
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/debug/core/ISnippetSupportLineBreakpoint.java
@@ -0,0 +1,17 @@
+package org.eclipse.jdt.debug.core;

+

+/*

+ * (c) Copyright IBM Corp. 2000, 2001.

+ * All Rights Reserved.

+ */

+ 

+/**

+ * Snippet support line breakpoints are java line breakpoints

+ * which have a Java project as their associated resource.

+ * 

+ * Clients are not intended to implement this interface.

+ */

+public interface ISnippetSupportLineBreakpoint extends IJavaLineBreakpoint {

+

+}

+

diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/AbstractJavaLineBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/AbstractJavaLineBreakpoint.java
new file mode 100644
index 0000000..db5d038
--- /dev/null
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/AbstractJavaLineBreakpoint.java
@@ -0,0 +1,284 @@
+package org.eclipse.jdt.internal.debug.core;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.IDebugConstants;
+import org.eclipse.jdt.core.IClassFile;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IMember;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.debug.core.IJavaLineBreakpoint;
+
+import com.sun.jdi.AbsentInformationException;
+import com.sun.jdi.ClassNotPreparedException;
+import com.sun.jdi.InvalidLineNumberException;
+import com.sun.jdi.Location;
+import com.sun.jdi.NativeMethodException;
+import com.sun.jdi.ReferenceType;
+import com.sun.jdi.VMDisconnectedException;
+import com.sun.jdi.VirtualMachine;
+import com.sun.jdi.request.BreakpointRequest;
+import com.sun.jdi.request.EventRequest;
+
+/**
+ * @see IJavaLineBreakpoint
+ */
+public abstract class AbstractJavaLineBreakpoint extends JavaBreakpoint implements IJavaLineBreakpoint {
+	
+	// Marker label String keys
+	private static final String LINE= "line"; //$NON-NLS-1$
+	private static final String HITCOUNT= "hitCount"; //$NON-NLS-1$
+	
+	/**
+	 * Sets of attributes used to configure a line breakpoint
+	 */
+	protected static final String[] fgLineBreakpointAttributes= new String[]{IDebugConstants.ENABLED, IMarker.LINE_NUMBER, IMarker.CHAR_START, IMarker.CHAR_END};
+	
+	public AbstractJavaLineBreakpoint() {
+		super();
+	}
+	
+	/**
+	 * @see ILineBreakpoint
+	 */
+	public int getLineNumber() throws CoreException {
+		return ensureMarker().getAttribute(IMarker.LINE_NUMBER, -1);
+	}
+
+	/**
+	 * @see ILineBreakpoint
+	 */
+	public int getCharStart() throws CoreException {
+		return ensureMarker().getAttribute(IMarker.CHAR_START, -1);
+	}
+
+	/**
+	 * @see ILineBreakpoint
+	 */
+	public int getCharEnd() throws CoreException {
+		return ensureMarker().getAttribute(IMarker.CHAR_END, -1);
+	}
+		
+	/**
+	 * @see JavaBreakpoint#createRequest(JDIDebutTarget, ReferenceType)
+	 */
+	protected void createRequest(JDIDebugTarget target, ReferenceType type) throws CoreException {
+		Location location= null;
+		int lineNumber= getLineNumber();			
+		location= determineLocation(lineNumber, type);
+		if (location == null) {
+			// could be an inner type not yet loaded, or line information not available
+			return;
+		}
+		
+		EventRequest request = createLineBreakpointRequest(location, target);	
+		registerRequest(request, target);		
+	}	
+	
+	/**
+	 * Creates, installs, and returns a line breakpoint request at
+	 * the given location for this breakpoint.
+	 */
+	protected BreakpointRequest createLineBreakpointRequest(Location location, JDIDebugTarget target) throws CoreException {
+		BreakpointRequest request = null;
+		try {
+			request= target.getEventRequestManager().createBreakpointRequest(location);
+			configureRequest(request);
+		} catch (VMDisconnectedException e) {
+			if (target.isDisconnected() || target.isTerminated()) {			
+				return null;
+			} 
+			JDIDebugPlugin.logError(e);
+		} catch (RuntimeException e) {
+			JDIDebugPlugin.logError(e);
+			return null;
+		}
+		return request;
+	}
+	
+	
+	/**
+	 * Returns a location for the line number in the given type, or any of its
+	 * nested types. Returns <code>null</code> if a location cannot be determined.
+	 */
+	protected Location determineLocation(int lineNumber, ReferenceType type) {
+		List locations= null;
+		try {
+			locations= type.locationsOfLine(lineNumber);
+		} catch (AbsentInformationException e) {
+			return null;
+		} catch (NativeMethodException e) {
+			return null;
+		} catch (InvalidLineNumberException e) {
+			//possible in a nested type, fall through and traverse nested types
+		} catch (VMDisconnectedException e) {
+			return null;
+		} catch (ClassNotPreparedException e) {
+			// could be a nested type that is not yet loaded
+			return null;
+		} catch (RuntimeException e) {
+			// not able to retrieve line info
+			JDIDebugPlugin.logError(e);
+			return null;
+		}
+		
+		if (locations != null && locations.size() > 0) {
+			return (Location) locations.get(0);
+		} else {
+			Iterator nestedTypes= null;
+			try {
+				nestedTypes= type.nestedTypes().iterator();
+			} catch (RuntimeException e) {
+				// not able to retrieve line info
+				JDIDebugPlugin.logError(e);
+				return null;
+			}
+			while (nestedTypes.hasNext()) {
+				ReferenceType nestedType= (ReferenceType) nestedTypes.next();
+				Location innerLocation= determineLocation(lineNumber, nestedType);
+				if (innerLocation != null) {
+					return innerLocation;
+				}
+			}
+		}
+
+		return null;
+	}			
+
+	
+	/**
+	 * Update the hit count of an <code>EventRequest</code>. Return a new request with
+	 * the appropriate settings.
+	 */
+	protected EventRequest updateHitCount(EventRequest request, JDIDebugTarget target) throws CoreException {		
+		
+		// if the hit count has changed, or the request has expired and is being re-enabled,
+		// create a new request
+		if (hasHitCountChanged(request) || (isExpired(request) && isEnabled())) {
+			try {
+				Location location = ((BreakpointRequest) request).location();				
+				// delete old request
+				//on JDK you cannot delete (disable) an event request that has hit its count filter
+				if (!isExpired(request)) {
+					target.getEventRequestManager().deleteEventRequest(request); // disable & remove
+				}				
+				request = createLineBreakpointRequest(location, target);
+			} catch (VMDisconnectedException e) {
+				if (target.isDisconnected() || target.isTerminated()) {
+					return request;
+				}
+				JDIDebugPlugin.logError(e);
+			} catch (RuntimeException e) {
+				JDIDebugPlugin.logError(e);
+			}
+		}
+		return request;
+	}		
+	
+	/**
+	 * Configure a breakpoint request with common properties:
+	 * <ul>
+	 * <li><code>IDebugConstants.BREAKPOINT_MARKER</code></li>
+	 * <li><code>IJavaDebugConstants.HIT_COUNT</code></li>
+	 * <li><code>IJavaDebugConstants.EXPIRED</code></li>
+	 * <li><code>IDebugConstants.ENABLED</code></li>
+	 * </ul>
+	 * and sets the suspend policy of the request to suspend 
+	 * the event thread.
+	 */
+	protected void configureRequest(EventRequest request) throws CoreException {
+		request.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD);
+		request.putProperty(JAVA_BREAKPOINT_PROPERTY, this);								
+		int hitCount= getHitCount();
+		if (hitCount > 0) {
+			request.addCountFilter(hitCount);
+			request.putProperty(HIT_COUNT, new Integer(hitCount));
+			request.putProperty(EXPIRED, Boolean.FALSE);
+		}
+		// Important: only enable a request after it has been configured
+		updateEnabledState(request);
+	}
+	
+	/**
+	 * Set standard attributes of a line breakpoint.
+	 * The standard attributes are:
+	 * <ol>
+	 * <li>IDebugConstants.MODEL_IDENTIFIER</li>
+	 * <li>IDebugConstants.ENABLED</li>
+	 * <li>IMarker.LINE_NUMBER</li>
+	 * <li>IMarker.CHAR_START</li>
+	 * <li>IMarker.CHAR_END</li>
+	 * </ol>	
+	 */	
+	public void setLineBreakpointAttributes(String modelIdentifier, boolean enabled, int lineNumber, int charStart, int charEnd) throws CoreException {
+		Object[] values= new Object[]{new Boolean(true), new Integer(lineNumber), new Integer(charStart), new Integer(charEnd)};
+		ensureMarker().setAttributes(fgLineBreakpointAttributes, values);			
+	}
+	
+	/**
+	 * @see IJavaLineBreakpoint#getMember()
+	 */
+	public IMember getMember() throws CoreException {
+		int start = getCharStart();
+		int end = getCharEnd();
+		IType type = getType();
+		IMember member = null;
+		if ((type != null) && (end >= start) && (start >= 0)) {
+			try {
+				member= binSearch(type, start, end);
+			} catch (CoreException ce) {
+				JDIDebugPlugin.logError(ce);
+			}
+		}
+		if (member == null) {
+			member= type;
+		}
+		return member;
+	}
+	
+	/**
+	 * Searches the given source range of the container for a member that is
+	 * not the same as the given type.
+	 */
+	protected IMember binSearch(IType type, int start, int end) throws JavaModelException {
+		IJavaElement je = getElementAt(type, start);
+		if (je != null && !je.equals(type)) {
+			return (IMember)je;
+		}
+		if (end > start) {
+			je = getElementAt(type, end);
+			if (je != null && !je.equals(type)) {
+				return (IMember)je;
+			}
+			int mid = ((end - start) / 2) + start;
+			if (mid > start) {
+				je = binSearch(type, start + 1, mid);
+				if (je == null) {
+					je = binSearch(type, mid + 1, end - 1);
+				}
+				return (IMember)je;
+			}
+		}
+		return null;
+	}	
+	
+	/**
+	 * Returns the element at the given position in the given type
+	 */
+	protected IJavaElement getElementAt(IType type, int pos) throws JavaModelException {
+		if (type.isBinary()) {
+			return type.getClassFile().getElementAt(pos);
+		} else {
+			return type.getCompilationUnit().getElementAt(pos);
+		}
+	}
+
+}
+
+
+
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/DebugJavaResources.properties b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/DebugJavaResources.properties
new file mode 100644
index 0000000..15787c7
--- /dev/null
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/DebugJavaResources.properties
@@ -0,0 +1,145 @@
+##############################################################
+# (c) Copyright IBM Corp. 2000, 2001.
+# All Rights Reserved.
+##############################################################
+
+##############################################################
+# Common
+##############################################################
+jdi.common.unknown=<unknown>
+jdi.common.error.get_children=An exception occurred while retrieving children.
+jdi.common.exception_method_stack_frame=Exception occurred retrieving method for stack frame
+jdi.common.couldnt_set_breakpoint=Breakpoint could not be set at or near line number {0}
+
+##############################################################
+# Breakpoint / Marker
+##############################################################
+jdi_marker.label.line=line:
+jdi_marker.label.hitCount=hit count:
+
+jdi_marker.label.exception.format={1}: {0} 
+jdi_marker.label.exception.caught=caught
+jdi_marker.label.exception.uncaught=uncaught
+jdi_marker.label.exception.both=caught and uncaught
+
+jdi_marker.label.watchpoint.format={1}: {0} 
+jdi_marker.label.watchpoint.access=access
+jdi_marker.label.watchpoint.modification=modification
+jdi_marker.label.watchpoint.both=access and modification
+
+jdi_breakpoint.error.access_watchpoint.not_supported=VM does not support access watchpoints.
+jdi_breakpoint.error.modification_watchpoint.not_supported=VM does not support modification watchpoints.
+
+##############################################################
+# JDIDebugTarget
+##############################################################
+
+jdi_debug_target.error.get_name=Exception occurred while retrieving VM name.
+jdi_debug_target.error.disconnect_not_supported=VM does not support 'disconnect'.
+jdi_debug_target.error.disconnect=Exception occurred while disconnecting from VM.
+jdi_debug_target.error.hcr.exception=Exception occurred while performing hot code replaced.
+jdi_debug_target.error.hcr.not_supported=Hot code replace not supported.
+jdi_debug_target.error.hcr.failed=Hot code replace failed.

+jdi_debug_target.error.hcr.ignored=Hot code replace ignored.
+jdi_debug_target.error.breakpoint.no_type=Internal error: no type associated with breakpoint.
+jdi_debug_target.error.resume.not_supported=VM does not support resume.
+jdi_debug_target.error.suspend.not_supported=VM does not support suspend.
+jdi_debug_target.error.terminate.not_supported=VM does not support termination.
+jdi_debug_target.error.access_watchpoint.not_supported=VM does not support access watchpoints.
+jdi_debug_target.error.modification_watchpoint.not_supported=VM does not support modification watchpoints.
+jdi_debug_target.error.terminate.exception=Exception occurred while terminating VM.

+jdi_debug_target.error.get_crc=Exception occurred retrieving CRC
+
+##############################################################
+# JDIVariable
+##############################################################
+
+jdi_variable.error.get_name=Exception occurred while retrieving variable name.
+jdi_variable.error.get_reference_type=Exception occurred while retrieving reference type.
+jdi_variable.error.get_signature=Exception occurred while retrieving signature.
+jdi_variable.error.get_value=Exception occurred while retrieving variable value.
+jdi_variable.error.set_value=Exception occurred while setting variable value.
+jdi_variable.error.set_value.not_supported=Variable does not support value modification.
+
+##############################################################
+# JDIValue
+##############################################################
+jdi_value.null=null
+jdi_value.deallocated=deallocated
+jdi_value.id=id
+jdi_value.error.is_allocated=An exception occurred determining if value is allocated.
+jdi_value.error.get_length=An exception occurred retrieving length of array.
+jdi_value.error.get_description=An exception occurred retrieving value's description.
+jdi_value.error.to_string=An exception occurred evaluating toString().
+jdi_value.error.to_string.not_suspended=Unable to evaluate toString() - owning thread not suspended.
+jdi_value.error.to_string.not_implemented=Unable to evaluate toString() - not implemented.
+jdi_value.error.to_string.timeout=A timeout occurred while evaluating toString().
+
+##############################################################
+# JDIThread
+##############################################################
+
+jdi_thread.error.get_name=Exception occurred while retrieving thread name.
+jdi_thread.error.get_priority=Exception occurred while retrieving thread priority.
+jdi_thread.error.get_thread_group=Exception occurred while retrieving thread group.
+jdi_thread.error.get_thread_group_name=Exception occurred while retrieving thread group name.
+jdi_thread.error.dropping_frame=Exception occurred while dropping stack frame(s).
+jdi_thread.error.creating_step_request=Exception occurred while creating step request.
+jdi_thread.error.invoking_method=Exception occurred while invoking method in target VM.
+jdi_thread.error.resume=Exception occurred while resuming thread.
+jdi_thread.error.step=Exception occurred while stepping thread.
+jdi_thread.error.suspend=Exception occurred while suspending thread.
+jdi_thread.error.terminate=Exception occurred while terminating thread.
+jdi_thread.error.cant_terminate=Unable to terminate thread
+jdi_thread.error.in_evaluation=Unable to perform nested evaluations
+jdi_thread.error.no_built_state=Project must be built to perform evaluations
+jdi_thread.error.invalid_evaluation_location=Unable to perform evaluation at current location. Thread must be suspended by a breakpoint or step.
+
+jdi_thread.label.exception_sys=System Thread [{0}] (Suspended (exception {1}))
+jdi_thread.label.exception_usr=Thread [{0}] (Suspended (exception {1}))
+jdi_thread.label.line_breakpoint_sys=System Thread [{0}] (Suspended (breakpoint at line {1} in {2}))
+jdi_thread.label.line_breakpoint_usr=Thread [{0}] (Suspended (breakpoint at line {1} in {2}))
+jdi_thread.label.run_to_line_breakpoint_usr=Thread [{0}] (Suspended (run to line line {1} in {2}))
+jdi_thread.label.run_to_line_breakpoint_sys=System Thread [{0}] (Suspended (run to line line {1} in {2}))
+jdi_thread.label.access_sys=System Thread [{0}] (Suspended (access of field {1} in {2}))
+jdi_thread.label.access_usr=Thread [{0}] (Suspended (access of field {1} in {2}))
+jdi_thread.label.modification_sys=System Thread [{0}] (Suspended (modification of field {1} in {2}))
+jdi_thread.label.modification_usr=Thread [{0}] (Suspended (modification of field {1} in {2}))
+jdi_thread.label.run_to_line_sys=System Thread [{0}] (Suspended (run to line {1} in {2}))
+jdi_thread.label.run_to_line_usr=Thread [{0}] (Suspended (run to line {1} in {2}))
+
+##############################################################
+# JDIStackFrame
+##############################################################
+
+jdi_stack_frame.error.get_name=Exception occurred retrieving method name
+jdi_stack_frame.error.drop_not_supported=Drop to frame not supported
+jdi_stack_frame.error.get_arguments=Exception occurred retrieving method arguments
+jdi_stack_frame.error.get_declaring_type=Exception occurred retrieving declaring type
+jdi_stack_frame.error.get_receiving_type=Exception occurred retrieving receiving type
+jdi_stack_frame.error.get_line_number=Exception occurred retrieving line number
+jdi_stack_frame.error.get_signature=Exception occurred retrieving method signature
+jdi_stack_frame.error.get_method=Exception occurred retrieving stack frame's method

+
+##############################################################
+# JavaHotCodeReplaceManager
+##############################################################
+jdi_hcr.error.no_output_loc=Java project does not have an output location
+jdi_hcr.error.deltas_changed=Processing deltas for changed class files
+
+##############################################################
+# Evaluation
+##############################################################
+jdi_evaluation.error.thread_not_suspended=Thread must be suspended to perform evaluation
+jdi_evaluation.error.evaluation=An exception occurred performing an evaluation

+jdi_evaluation.error.no_type=Could not resolve declaring type of stack frame
+jdi_evaluation.error.binary_type=Unable to perform evaluation in a binary type
+jdi_evaluation.error.inner_type=Unable to perform evaluation in an inner type
+
+##############################################################
+# Breakpoints
+##############################################################
+java_breakpoint.error.no_marker=Breakpoint does not have an asscoiated marker.
+
+
+
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/DebugJavaUtils.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/DebugJavaUtils.java
new file mode 100644
index 0000000..f449cbc
--- /dev/null
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/DebugJavaUtils.java
@@ -0,0 +1,36 @@
+package org.eclipse.jdt.internal.debug.core;

+

+/*

+ * (c) Copyright IBM Corp. 2000, 2001.

+ * All Rights Reserved.

+ */

+

+import java.text.MessageFormat;
import java.util.*;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.debug.core.*;
import org.eclipse.jdt.core.*;

+

+/**

+ * This class serves as a location for utility methods for the internal debug Java.

+ */

+public class DebugJavaUtils {

+

+	/**

+	 * Convenience method to log internal errors

+	 */

+	public static void logError(Exception e) {

+		Throwable t = e;

+		if (JDIDebugPlugin.getDefault().isDebugging()) {

+			// this message is intentionally not internationalized, as an exception may

+			// be due to the resource bundle itself

+			System.out.println("Internal error logged from JDI debug model: "); //$NON-NLS-1$

+			if (e instanceof DebugException) {

+				DebugException de = (DebugException)e;

+				IStatus status = de.getStatus();

+				if (status.getException() != null) {

+					t = status.getException();

+				}

+			}

+			t.printStackTrace();

+			System.out.println();

+		}

+	}

+	

+}
\ No newline at end of file
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/IJavaDebugConstants.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/IJavaDebugConstants.java
new file mode 100644
index 0000000..5c1c28f
--- /dev/null
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/IJavaDebugConstants.java
@@ -0,0 +1,164 @@
+package org.eclipse.jdt.internal.debug.core;

+

+/*

+ * (c) Copyright IBM Corp. 2000, 2001.

+ * All Rights Reserved.

+ */

+ 

+/**

+ * Defines constants for the JDI debug model plug-in.

+ * <p>

+ * Constants only; not intended to be implemented.

+ * </p>

+ * <p>

+ * <b>Note:</b> This class/interface is part of an interim API that is still under development and expected to 

+ * change significantly before reaching stability. It is being made available at this early stage to solicit feedback 

+ * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken

+ * (repeatedly) as the API evolves.

+ * </p>

+ */

+

+public interface IJavaDebugConstants {

+	

+	/**

+	 * Java breakpoint marker type

+	 * (value <code>"org.eclipse.jdt.debug.javaBreakpointMarker"</code>).

+	 */

+	public static final String JAVA_BREAKPOINT= "org.eclipse.jdt.debug.javaBreakpointMarker"; //$NON-NLS-1$

+	

+	/**

+	 * Java line breakpoint marker type

+	 * (value <code>"org.eclipse.jdt.debug.javaLineBreakpointMarker"</code>).

+	 */

+	public static final String JAVA_LINE_BREAKPOINT = "org.eclipse.jdt.debug.javaLineBreakpointMarker"; //$NON-NLS-1$

+				

+	/**

+	 * Java run-to-line breakpoint marker type

+	 * (value <code>"org.eclipse.jdt.debug.javaRunToLineBreakpointMarker"</code>).

+	 */

+	public static final String JAVA_RUN_TO_LINE_BREAKPOINT = "org.eclipse.jdt.debug.javaRunToLineBreakpointMarker"; //$NON-NLS-1$

+				

+	/**

+	 * Java exception breakpoint marker type

+	 * (value <code>"org.eclipse.jdt.debug.javaExceptionBreakpointMarker"</code>).

+	 */

+	public static final String JAVA_EXCEPTION_BREAKPOINT = "org.eclipse.jdt.debug.javaExceptionBreakpointMarker"; //$NON-NLS-1$

+	

+	/**

+	 * Java watchpoint marker type

+	 * (value <code>"org.eclipse.jdt.debug.javaWatchpointMarker"</code>).

+	 */

+	public static final String JAVA_WATCHPOINT= "org.eclipse.jdt.debug.javaWatchpointMarker"; //$NON-NLS-1$

+	

+	/**

+	 * Java method entry breakpoint marker type

+	 * (value <code>"org.eclipse.jdt.debug.javaMethodEntryBreakpointMarker"</code>).

+	 */

+	public static final String JAVA_METHOD_ENTRY_BREAKPOINT = "org.eclipse.jdt.debug.javaMethodEntryBreakpointMarker"; //$NON-NLS-1$

+	

+	/**

+	 * Pattern breakpoint marker type

+	 * (value <code>"org.eclipse.jdt.debug.patternBreakpointMarker"</code>).

+	 */

+	public static final String PATTERN_BREAKPOINT = "org.eclipse.jdt.debug.patternBreakpointMarker"; //$NON-NLS-1$

+	

+	/**

+	 * Snippet support line breakpoint marker type

+	 * (value <code>"org.eclipse.jdt.debug.snippetSupportLineBreakpointMarker"</code>).

+	 */

+	public static final String SNIPPET_SUPPORT_LINE_BREAKPOINT= "org.eclipse.jdt.debug.snippetSupportLineBreakpointMarker"; //$NON-NLS-1$

+	

+	/**

+	 * Breakpoint attribute storing the handle identifier of the Java element

+	 * corresponding to the type in which a breakpoint is contained

+	 * (value <code>"typeHandle"</code>). This attribute is a <code>String</code>.

+	 */

+	public static final String TYPE_HANDLE = "typeHandle"; //$NON-NLS-1$

+	

+	/**

+	 * Breakpoint attribute storing the handle identifier of the Java element

+	 * corresponding to the field on which a breakpoint is set

+	 * (value <code>"fieldHandle"</code>). This attribute is a <code>String</code>.

+	 */

+	public static final String FIELD_HANDLE= "fieldHandle"; //$NON-NLS-1$

+	

+	/**

+	 * Breakpoint attribute storing the handle identifier of the Java element

+	 * corresponding to the method in which a breakpoint is contained

+	 * (value <code>"methodHandle"</code>). This attribute is a <code>String</code>.

+	 */

+	public static final String METHOD_HANDLE = "methodHandle"; //$NON-NLS-1$

+	

+	/**

+	 * Breakpoint attribute storing the pattern identifier of the source

+	 * file in which a breakpoint is created

+	 * (value <code>"patternHandle"</code>). This attribute is a <code>String</code>.

+	 */

+	public static final String PATTERN = "pattern"; //$NON-NLS-1$

+	

+	/**

+	 * Breakpoint attribute storing the number of debug targets a

+	 * breakpoint is installed in (value <code>"installCount"</code>).

+	 * This attribute is a <code>int</code>.

+	 */

+	public static final String INSTALL_COUNT = "installCount"; //$NON-NLS-1$

+	

+	/**

+	 * Breakpoint attribute storing a breakpoint's hit count value

+	 * (value <code>"hitCount"</code>). This attribute is stored as an

+	 * <code>int</code>.

+	 */

+	public static final String HIT_COUNT = "hitCount"; //$NON-NLS-1$

+

+	/**

+	 * Breakpoint attribute storing the expired value (value <code>"expired"</code>).

+	 * This attribute is stored as a <code>boolean</code>. Once a hit count has

+	 * been reached, a breakpoint is considered to be "expired".

+	 */

+	public static final String EXPIRED = "expired"; //$NON-NLS-1$

+		

+	/**

+	 * Exception breakpoint attribute storing the suspend on caught value

+	 * (value <code>"caught"</code>). This attribute is stored as a <code>boolean</code>.

+	 * When this attribute is <code>true</code>, a caught exception of the associated

+	 * type will cause excecution to suspend .

+	 */

+	public static final String CAUGHT = "caught"; //$NON-NLS-1$

+	

+	/**

+	 * Exception breakpoint attribute storing the suspend on uncaught value

+	 * (value <code>"uncaught"</code>). This attribute is stored as a

+	 * <code>boolean</code>. When this attribute is <code>true</code>, an uncaught

+	 * exception of the associated type will cause excecution to suspend. .

+	 */

+	public static final String UNCAUGHT = "uncaught"; //$NON-NLS-1$

+	

+	/**

+	 * Exception breakpoint attribute storing the checked value (value <code>"checked"</code>).

+	 * This attribute is stored as a <code>boolean</code>, indicating whether an

+	 * exception is a checked exception.

+	 */

+	public static final String CHECKED = "checked"; //$NON-NLS-1$

+	

+	/**

+	 * Watchpoint attribute storing the access value (value <code>"access"</code>).

+	 * This attribute is stored as a <code>boolean</code>, indicating whether a

+	 * watchpoint is an access watchpoint.

+	 */

+	public static final String ACCESS= "access"; //$NON-NLS-1$

+	

+	/**

+	 * Watchpoint attribute storing the modification value (value <code>"modification"</code>).

+	 * This attribute is stored as a <code>boolean</code>, indicating whether a

+	 * watchpoint is a modification watchpoint.

+	 */

+	public static final String MODIFICATION= "modification"; //$NON-NLS-1$

+	

+	/**

+	 * Watchpoint attribute storing the auto_disabled value (value <code>"auto_disabled"</code>).

+	 * This attribute is stored as a <code>boolean</code>, indicating whether a

+	 * watchpoint has been auto-disabled (as opposed to being disabled explicitly by the user)

+	 */

+	public static final String AUTO_DISABLED="auto_disabled"; //$NON-NLS-1$

+

+}

diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/SnippetSupportLineBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/SnippetSupportLineBreakpoint.java
new file mode 100644
index 0000000..9d79801
--- /dev/null
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/SnippetSupportLineBreakpoint.java
@@ -0,0 +1,53 @@
+package org.eclipse.jdt.internal.debug.core;

+

+/*

+ * (c) Copyright IBM Corp. 2000, 2001.

+ * All Rights Reserved.

+ */

+ 

+import org.eclipse.core.resources.IResource;

+import org.eclipse.debug.core.DebugException;

+import org.eclipse.jdt.core.IType;

+import org.eclipse.jdt.debug.core.ISnippetSupportLineBreakpoint;

+

+/**

+ * @see ISnippetSupportLineBreakpoint

+ */

+public class SnippetSupportLineBreakpoint extends JavaLineBreakpoint implements ISnippetSupportLineBreakpoint {

+	

+	private static final String SNIPPET_SUPPORT_LINE_BREAKPOINT= "org.eclipse.jdt.debug.snippetSupportLineBreakpointMarker"; //$NON-NLS-1$

+

+	/**

+	 * Constructor for SnippetSupportLineBreakpoint

+	 */

+	public SnippetSupportLineBreakpoint() {

+		super();

+	}

+

+	/**

+	 * Constructor for SnippetSupportLineBreakpoint

+	 */

+	public SnippetSupportLineBreakpoint(IType type, int lineNumber, int charStart, int charEnd, int hitCount) throws DebugException {

+		super(type, lineNumber, charStart, charEnd, hitCount, SNIPPET_SUPPORT_LINE_BREAKPOINT);

+	}

+

+	/**

+	 * Return the resource for this breakpoint.

+	 * The resource for a SnippetSupportLineBreakpoint is the java project

+	 * it belongs to.

+	 */	

+	protected IResource getResource(IType type) {

+		return type.getJavaProject().getProject();

+	}

+	

+	/**

+	 * Snippet support line breakpoints should not be added to the breakpoint

+	 * manager

+	 */

+	protected void addToBreakpointManager() throws DebugException {

+		return;

+	}	

+	

+

+}

+

diff --git a/org.eclipse.jdt.debug/plugin.jars b/org.eclipse.jdt.debug/plugin.jars
new file mode 100644
index 0000000..e3cb513
--- /dev/null
+++ b/org.eclipse.jdt.debug/plugin.jars
@@ -0,0 +1 @@
+jdimodel.jar=Eclipse Java Core Debug,Eclipse JDI
\ No newline at end of file