diff options
Diffstat (limited to 'org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/breakpoints/PDALineBreakpoint.java')
-rw-r--r-- | org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/breakpoints/PDALineBreakpoint.java | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/breakpoints/PDALineBreakpoint.java b/org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/breakpoints/PDALineBreakpoint.java deleted file mode 100644 index 45f2a06b4..000000000 --- a/org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/breakpoints/PDALineBreakpoint.java +++ /dev/null @@ -1,206 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - * Bjorn Freeman-Benson - initial API and implementation - * Pawel Piech (Wind River) - ported PDA Virtual Machine to Java (Bug 261400) - *******************************************************************************/ -package org.eclipse.debug.examples.core.pda.breakpoints; - -import org.eclipse.core.resources.IMarker; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRunnable; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.debug.core.model.IBreakpoint; -import org.eclipse.debug.core.model.LineBreakpoint; -import org.eclipse.debug.examples.core.pda.DebugCorePlugin; -import org.eclipse.debug.examples.core.pda.model.IPDAEventListener; -import org.eclipse.debug.examples.core.pda.model.PDADebugTarget; -import org.eclipse.debug.examples.core.pda.model.PDAThread; -import org.eclipse.debug.examples.core.pda.protocol.PDAClearBreakpointCommand; -import org.eclipse.debug.examples.core.pda.protocol.PDAEvent; -import org.eclipse.debug.examples.core.pda.protocol.PDARunControlEvent; -import org.eclipse.debug.examples.core.pda.protocol.PDASetBreakpointCommand; -import org.eclipse.debug.examples.core.pda.protocol.PDASuspendedEvent; -import org.eclipse.debug.examples.core.pda.protocol.PDAVMSuspendedEvent; - - -/** - * PDA line breakpoint - */ -public class PDALineBreakpoint extends LineBreakpoint implements IPDAEventListener { - - // target currently installed in - private PDADebugTarget fTarget; - - /** - * Default constructor is required for the breakpoint manager - * to re-create persisted breakpoints. After instantiating a breakpoint, - * the <code>setMarker(...)</code> method is called to restore - * this breakpoint's attributes. - */ - public PDALineBreakpoint() { - } - - /** - * Constructs a line breakpoint on the given resource at the given - * line number. The line number is 1-based (i.e. the first line of a - * file is line number 1). The PDA VM uses 0-based line numbers, - * so this line number translation is done at breakpoint install time. - * - * @param resource file on which to set the breakpoint - * @param lineNumber 1-based line number of the breakpoint - * @throws CoreException if unable to create the breakpoint - */ - public PDALineBreakpoint(final IResource resource, final int lineNumber) throws CoreException { - IWorkspaceRunnable runnable = new IWorkspaceRunnable() { - public void run(IProgressMonitor monitor) throws CoreException { - IMarker marker = resource.createMarker("org.eclipse.debug.examples.core.pda.markerType.lineBreakpoint"); - setMarker(marker); - marker.setAttribute(IBreakpoint.ENABLED, Boolean.TRUE); - marker.setAttribute(IMarker.LINE_NUMBER, lineNumber); - marker.setAttribute(IBreakpoint.ID, getModelIdentifier()); - marker.setAttribute(IMarker.MESSAGE, "Line Breakpoint: " + resource.getName() + " [line: " + lineNumber + "]"); - } - }; - run(getMarkerRule(resource), runnable); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.core.model.IBreakpoint#getModelIdentifier() - */ - public String getModelIdentifier() { - return DebugCorePlugin.ID_PDA_DEBUG_MODEL; - } - - /** - * Returns whether this breakpoint is a run-to-line breakpoint - * - * @return whether this breakpoint is a run-to-line breakpoint - */ - public boolean isRunToLineBreakpoint() { - return false; - } - - /** - * Installs this breakpoint in the given interprettor. - * Registeres this breakpoint as an event listener in the - * given target and creates the breakpoint specific request. - * - * @param target PDA interprettor - * @throws CoreException if installation fails - */ - public void install(PDADebugTarget target) throws CoreException { - fTarget = target; - target.addEventListener(this); - createRequest(target); - } - - /** - * Create the breakpoint specific request in the target. Subclasses - * should override. - * - * @param target PDA interprettor - * @throws CoreException if request creation fails - */ - protected void createRequest(PDADebugTarget target) throws CoreException { - //#ifdef ex3 -//# // TODO: Exercise 3 - create breakpoint request in interpreter - //#else - target.sendCommand(new PDASetBreakpointCommand((getLineNumber() - 1), false)); - //#endif - } - - /** - * Removes this breakpoint's event request from the target. Subclasses - * should override. - * - * @param target PDA interprettor - * @throws CoreException if clearing the request fails - */ - protected void clearRequest(PDADebugTarget target) throws CoreException { - //#ifdef ex3 -//# // TODO: Exercise 3 - clear breakpoint request in interpreter - //#else - target.sendCommand(new PDAClearBreakpointCommand((getLineNumber() - 1))); - //#endif - } - - /** - * Removes this breakpoint from the given interprettor. - * Removes this breakpoint as an event listener and clears - * the request for the interprettor. - * - * @param target PDA interprettor - * @throws CoreException if removal fails - */ - public void remove(PDADebugTarget target) throws CoreException { - target.removeEventListener(this); - clearRequest(target); - fTarget = null; - - } - - /** - * Returns the target this breakpoint is installed in or <code>null</code>. - * - * @return the target this breakpoint is installed in or <code>null</code> - */ - protected PDADebugTarget getDebugTarget() { - return fTarget; - } - - /** - * Notify's the PDA interprettor that this breakpoint has been hit. - */ - protected void notifyThread(int threadId) { - if (fTarget != null) { - PDAThread thread = fTarget.getThread(threadId); - if (thread != null) { - thread.suspendedBy(this); - } - } - } - - /* (non-Javadoc) - * - * Subclasses should override to handle their breakpoint specific event. - * - * @see org.eclipse.debug.examples.core.pda.model.IPDAEventListener#handleEvent(java.lang.String) - */ - public void handleEvent(PDAEvent event) { - if (event instanceof PDASuspendedEvent || event instanceof PDAVMSuspendedEvent) { - PDARunControlEvent rcEvent = (PDARunControlEvent)event; - if (rcEvent.fReason.equals("breakpoint")) { - handleHit(rcEvent); - } - } - } - - /** - * Determines if this breakpoint was hit and notifies the thread. - * - * @param event breakpoint event - */ - private void handleHit(PDARunControlEvent event) { - int lastSpace = event.fMessage.lastIndexOf(' '); - if (lastSpace > 0) { - String line = event.fMessage.substring(lastSpace + 1); - int lineNumber = Integer.parseInt(line); - // breakpoints event line numbers are 0 based, model objects are 1 based - lineNumber++; - try { - if (getLineNumber() == lineNumber) { - notifyThread(event.fThreadId); - } - } catch (CoreException e) { - } - } - } -} |