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