Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugTarget.java')
-rw-r--r--org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugTarget.java1838
1 files changed, 1011 insertions, 827 deletions
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugTarget.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugTarget.java
index d6aea6ff3..a6e9e6d4b 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugTarget.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugTarget.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * Copyright (c) 2000, 2011 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
@@ -11,7 +11,6 @@
*******************************************************************************/
package org.eclipse.jdt.internal.debug.core.model;
-
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -22,12 +21,14 @@ import java.util.List;
import java.util.Set;
import org.eclipse.core.resources.IMarkerDelta;
+import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.ListenerList;
import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.debug.core.DebugEvent;
@@ -75,7 +76,6 @@ import com.sun.jdi.ObjectCollectedException;
import com.sun.jdi.ReferenceType;
import com.sun.jdi.ThreadGroupReference;
import com.sun.jdi.ThreadReference;
-import com.sun.jdi.Type;
import com.sun.jdi.VMDisconnectedException;
import com.sun.jdi.Value;
import com.sun.jdi.VirtualMachine;
@@ -94,20 +94,21 @@ import com.sun.jdi.request.EventRequestManager;
* Debug target for JDI debug model.
*/
-public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget, ILaunchListener, IBreakpointManagerListener, IDebugEventSetListener {
-
+public class JDIDebugTarget extends JDIDebugElement implements
+ IJavaDebugTarget, ILaunchListener, IBreakpointManagerListener,
+ IDebugEventSetListener {
+
/**
- * Threads contained in this debug target. When a thread
- * starts it is added to the list. When a thread ends it
- * is removed from the list.
+ * Threads contained in this debug target. When a thread starts it is added
+ * to the list. When a thread ends it is removed from the list.
*/
- private ArrayList fThreads;
-
+ private ArrayList<JDIThread> fThreads;
+
/**
* List of thread groups in this target.
*/
- private ArrayList fGroups;
-
+ private ArrayList<JDIThreadGroup> fGroups;
+
/**
* Associated system process, or <code>null</code> if not available.
*/
@@ -117,16 +118,16 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
*/
private VirtualMachine fVirtualMachine;
/**
- * Whether terminate is supported. Not all targets
- * support terminate. For example, a VM that was attached
- * to remotely may not allow the user to terminate it.
+ * Whether terminate is supported. Not all targets support terminate. For
+ * example, a VM that was attached to remotely may not allow the user to
+ * terminate it.
*/
private boolean fSupportsTerminate;
/**
* Whether terminated
*/
private boolean fTerminated;
-
+
/**
* Whether in the process of terminating
*/
@@ -144,103 +145,105 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
*/
private boolean fSupportsDisableGC = false;
/**
- * Collection of breakpoints added to this target. Values are of type <code>IJavaBreakpoint</code>.
+ * Collection of breakpoints added to this target. Values are of type
+ * <code>IJavaBreakpoint</code>.
*/
- private List fBreakpoints;
-
+ private List<IBreakpoint> fBreakpoints;
+
/**
- * Collection of types that have attempted HCR, but failed.
- * The types are stored by their fully qualified names.
+ * Collection of types that have attempted HCR, but failed. The types are
+ * stored by their fully qualified names.
*/
- private Set fOutOfSynchTypes;
+ private Set<String> fOutOfSynchTypes;
/**
* Whether or not this target has performed a hot code replace.
*/
private boolean fHasHCROccurred;
-
+
/**
- * The name of this target - set by the client on creation, or retrieved from the
- * underlying VM.
+ * The name of this target - set by the client on creation, or retrieved
+ * from the underlying VM.
*/
private String fName;
/**
- * The event dispatcher for this debug target, which runs in its
- * own thread.
+ * The event dispatcher for this debug target, which runs in its own thread.
*/
- private EventDispatcher fEventDispatcher= null;
-
+ private EventDispatcher fEventDispatcher = null;
+
/**
* The thread start event handler
*/
- private ThreadStartHandler fThreadStartHandler= null;
-
+ private ThreadStartHandler fThreadStartHandler = null;
+
/**
* Whether this VM is suspended.
*/
private boolean fSuspended = true;
-
+
/**
* Whether the VM should be resumed on startup
*/
- private boolean fResumeOnStartup = false;
-
+ private boolean fResumeOnStartup = false;
+
/**
* The launch this target is contained in
*/
- private ILaunch fLaunch;
-
+ private ILaunch fLaunch;
+
/**
* Count of the number of suspend events in this target
*/
private int fSuspendCount = 0;
-
+
/**
- * Evaluation engine cache by Java project. Engines
- * are disposed when this target terminates.
+ * Evaluation engine cache by Java project. Engines are disposed when this
+ * target terminates.
*/
- private HashMap fEngines;
-
+ private HashMap<IJavaProject, IAstEvaluationEngine> fEngines;
+
/**
- * List of step filters - each string is a pattern/fully qualified
- * name of a type to filter.
+ * List of step filters - each string is a pattern/fully qualified name of a
+ * type to filter.
*/
private String[] fStepFilters = null;
-
+
/**
* Step filter state mask.
*/
private int fStepFilterMask = 0;
-
+
/**
* Step filter bit mask - indicates if step filters are enabled.
*/
private static final int STEP_FILTERS_ENABLED = 0x001;
-
+
/**
* Step filter bit mask - indicates if synthetic methods are filtered.
- */
+ */
private static final int FILTER_SYNTHETICS = 0x002;
-
+
/**
* Step filter bit mask - indicates if static initializers are filtered.
- */
+ */
private static final int FILTER_STATIC_INITIALIZERS = 0x004;
-
+
/**
* Step filter bit mask - indicates if constructors are filtered.
- */
+ */
private static final int FILTER_CONSTRUCTORS = 0x008;
-
+
/**
* When a step lands in a filtered location, this indicates whether stepping
- * should proceed "through" to an un-filtered location or step return.
+ * should proceed "through" to an unfiltered location or step return.
+ *
* @since 3.3
*/
private static final int STEP_THRU_FILTERS = 0x010;
-
+
/**
* Step filter bit mask - indicates if simple getters are filtered.
+ *
* @since 3.7
*/
private static final int FILTER_GETTERS = 0x020;
@@ -248,7 +251,7 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
/**
* Step filter bit mask - indicates if simple setters are filtered.
*
- * @since 3.7
+ * @since 3.7
*/
private static final int FILTER_SETTERS = 0x040;
@@ -259,32 +262,39 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
/**
* Whether this debug target is currently performing a hot code replace
*/
- private boolean fIsPerformingHotCodeReplace= false;
-
+ private boolean fIsPerformingHotCodeReplace = false;
+
/**
* Target specific HCR listeners
+ *
* @since 3.6
*/
private ListenerList fHCRListeners = new ListenerList();
-
+
/**
* Creates a new JDI debug target for the given virtual machine.
*
- * @param jvm the underlying VM
- * @param name the name to use for this VM, or <code>null</code>
- * if the name should be retrieved from the underlying VM
- * @param supportsTerminate whether the terminate action
- * is supported by this debug target
- * @param supportsDisconnect whether the disconnect action is
- * supported by this debug target
- * @param process the system process associated with the
- * underlying VM, or <code>null</code> if no system process
- * is available (for example, a remote VM)
- * @param resume whether the VM should be resumed on startup.
- * Has no effect if the VM is already resumed/running when
- * the connection is made.
- */
- public JDIDebugTarget(ILaunch launch, VirtualMachine jvm, String name, boolean supportTerminate, boolean supportDisconnect, IProcess process, boolean resume) {
+ * @param jvm
+ * the underlying VM
+ * @param name
+ * the name to use for this VM, or <code>null</code> if the name
+ * should be retrieved from the underlying VM
+ * @param supportsTerminate
+ * whether the terminate action is supported by this debug target
+ * @param supportsDisconnect
+ * whether the disconnect action is supported by this debug
+ * target
+ * @param process
+ * the system process associated with the underlying VM, or
+ * <code>null</code> if no system process is available (for
+ * example, a remote VM)
+ * @param resume
+ * whether the VM should be resumed on startup. Has no effect if
+ * the VM is already resumed/running when the connection is made.
+ */
+ public JDIDebugTarget(ILaunch launch, VirtualMachine jvm, String name,
+ boolean supportTerminate, boolean supportDisconnect,
+ IProcess process, boolean resume) {
super(null);
setLaunch(launch);
setResumeOnStartup(resume);
@@ -297,94 +307,96 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
setTerminating(false);
setDisconnected(false);
setName(name);
- setBreakpoints(new ArrayList(5));
- setThreadList(new ArrayList(5));
- fGroups = new ArrayList(5);
- setOutOfSynchTypes(new ArrayList(0));
+ setBreakpoints(new ArrayList<IBreakpoint>(5));
+ setThreadList(new ArrayList<JDIThread>(5));
+ fGroups = new ArrayList<JDIThreadGroup>(5);
+ setOutOfSynchTypes(new ArrayList<String>(0));
setHCROccurred(false);
initialize();
DebugPlugin.getDefault().getLaunchManager().addLaunchListener(this);
- DebugPlugin.getDefault().getBreakpointManager().addBreakpointManagerListener(this);
+ DebugPlugin.getDefault().getBreakpointManager()
+ .addBreakpointManagerListener(this);
}
/**
- * Returns the event dispatcher for this debug target.
- * There is one event dispatcher per debug target.
+ * Returns the event dispatcher for this debug target. There is one event
+ * dispatcher per debug target.
*
* @return event dispatcher
*/
public EventDispatcher getEventDispatcher() {
return fEventDispatcher;
}
-
+
/**
- * Sets the event dispatcher for this debug target.
- * Set once at initialization.
+ * Sets the event dispatcher for this debug target. Set once at
+ * initialization.
*
- * @param dispatcher event dispatcher
+ * @param dispatcher
+ * event dispatcher
* @see #initialize()
*/
private void setEventDispatcher(EventDispatcher dispatcher) {
fEventDispatcher = dispatcher;
}
-
+
/**
- * Returns an iterator over the collection of threads. The
- * returned iterator is made on a copy of the thread list
- * so that it is thread safe. This method should always be
- * used instead of getThreadList().iterator()
+ * Returns an iterator over the collection of threads. The returned iterator
+ * is made on a copy of the thread list so that it is thread safe. This
+ * method should always be used instead of getThreadList().iterator()
+ *
* @return an iterator over the collection of threads
*/
- private Iterator getThreadIterator() {
- List threadList;
+ private Iterator<JDIThread> getThreadIterator() {
+ List<JDIThread> threadList;
synchronized (fThreads) {
- threadList= (List) fThreads.clone();
+ threadList = (List<JDIThread>) fThreads.clone();
}
return threadList.iterator();
}
-
+
/**
- * Sets the list of threads contained in this debug target.
- * Set to an empty collection on creation. Threads are
- * added and removed as they start and end. On termination
- * this collection is set to the immutable singleton empty list.
+ * Sets the list of threads contained in this debug target. Set to an empty
+ * collection on creation. Threads are added and removed as they start and
+ * end. On termination this collection is set to the immutable singleton
+ * empty list.
*
- * @param threads empty list
+ * @param threads
+ * empty list
*/
- private void setThreadList(ArrayList threads) {
+ private void setThreadList(ArrayList<JDIThread> threads) {
fThreads = threads;
}
-
+
/**
- * Returns the collection of breakpoints installed in this
- * debug target.
+ * Returns the collection of breakpoints installed in this debug target.
*
- * @return list of installed breakpoints - instances of
- * <code>IJavaBreakpoint</code>
+ * @return list of installed breakpoints - instances of
+ * <code>IJavaBreakpoint</code>
*/
- public List getBreakpoints() {
+ public List<IBreakpoint> getBreakpoints() {
return fBreakpoints;
}
-
+
/**
- * Sets the list of breakpoints installed in this debug
- * target. Set to an empty list on creation.
+ * Sets the list of breakpoints installed in this debug target. Set to an
+ * empty list on creation.
*
- * @param breakpoints empty list
+ * @param breakpoints
+ * empty list
*/
- private void setBreakpoints(List breakpoints) {
+ private void setBreakpoints(List<IBreakpoint> breakpoints) {
fBreakpoints = breakpoints;
}
-
+
/**
- * Notifies this target that the underlying VM has started.
- * This is the first event received from the VM.
- * The VM is resumed. This event is not generated when
- * an attach is made to a VM that is already running
- * (has already started up). The VM is resumed as specified
- * on creation.
+ * Notifies this target that the underlying VM has started. This is the
+ * first event received from the VM. The VM is resumed. This event is not
+ * generated when an attach is made to a VM that is already running (has
+ * already started up). The VM is resumed as specified on creation.
*
- * @param event VM start event
+ * @param event
+ * VM start event
*/
public void handleVMStart(VMStartEvent event) {
if (isResumeOnStartup()) {
@@ -396,62 +408,71 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
}
// If any threads have resumed since thread collection was initialized,
- // update their status (avoid concurrent modification - use #getThreads())
+ // update their status (avoid concurrent modification - use
+ // #getThreads())
IThread[] threads = getThreads();
- for (int i = 0; i < threads.length; i++) {
- JDIThread thread = (JDIThread)threads[i];
+ for (IThread thread2 : threads) {
+ JDIThread thread = (JDIThread) thread2;
if (thread.isSuspended()) {
try {
- boolean suspended = thread.getUnderlyingThread().isSuspended();
+ boolean suspended = thread.getUnderlyingThread()
+ .isSuspended();
if (!suspended) {
thread.setRunning(true);
thread.fireResumeEvent(DebugEvent.CLIENT_REQUEST);
}
} catch (VMDisconnectedException e) {
- } catch (ObjectCollectedException e){
+ } catch (ObjectCollectedException e) {
} catch (RuntimeException e) {
logError(e);
- }
+ }
}
}
-
+
}
-
+
/**
- * Initialize event requests and state from the underlying VM.
- * This method is synchronized to ensure that we do not start
- * to process an events from the target until our state is
- * initialized.
+ * Initialize event requests and state from the underlying VM. This method
+ * is synchronized to ensure that we do not start to process an events from
+ * the target until our state is initialized.
*/
protected synchronized void initialize() {
setEventDispatcher(new EventDispatcher(this));
- setRequestTimeout(JDIDebugModel.getPreferences().getInt(JDIDebugModel.PREF_REQUEST_TIMEOUT));
+ setRequestTimeout(Platform.getPreferencesService().getInt(
+ JDIDebugPlugin.getUniqueIdentifier(),
+ JDIDebugModel.PREF_REQUEST_TIMEOUT,
+ JDIDebugModel.DEF_REQUEST_TIMEOUT,
+ null));
initializeRequests();
initializeState();
initializeBreakpoints();
getLaunch().addDebugTarget(this);
- DebugPlugin plugin = DebugPlugin.getDefault();
+ DebugPlugin plugin = DebugPlugin.getDefault();
plugin.addDebugEventListener(this);
fireCreationEvent();
- // begin handling/dispatching events after the creation event is handled by all listeners
+ // begin handling/dispatching events after the creation event is handled
+ // by all listeners
plugin.asyncExec(new Runnable() {
public void run() {
EventDispatcher dispatcher = getEventDispatcher();
- if (dispatcher != null) {
- Thread t= new Thread(dispatcher, JDIDebugModel.getPluginIdentifier() + JDIDebugModelMessages.JDIDebugTarget_JDI_Event_Dispatcher);
- t.setDaemon(true);
- t.start();
- }
+ if (dispatcher != null) {
+ Thread t = new Thread(
+ dispatcher,
+ JDIDebugModel.getPluginIdentifier()
+ + JDIDebugModelMessages.JDIDebugTarget_JDI_Event_Dispatcher);
+ t.setDaemon(true);
+ t.start();
+ }
}
});
}
-
+
/**
- * Adds all of the pre-existing threads to this debug target.
+ * Adds all of the pre-existing threads to this debug target.
*/
protected void initializeState() {
- List threads= null;
+ List<ThreadReference> threads = null;
VirtualMachine vm = getVM();
if (vm != null) {
try {
@@ -461,59 +482,60 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
internalError(e);
}
try {
- threads= vm.allThreads();
+ threads = vm.allThreads();
} catch (RuntimeException e) {
internalError(e);
}
if (threads != null) {
- Iterator initialThreads= threads.iterator();
+ Iterator<ThreadReference> initialThreads = threads.iterator();
while (initialThreads.hasNext()) {
- createThread((ThreadReference) initialThreads.next());
+ createThread(initialThreads.next());
}
- }
+ }
}
-
+
if (isResumeOnStartup()) {
setSuspended(false);
}
}
-
+
/**
- * Registers event handlers for thread creation,
- * thread termination.
+ * Registers event handlers for thread creation, thread termination.
*/
protected void initializeRequests() {
setThreadStartHandler(new ThreadStartHandler());
- new ThreadDeathHandler();
+ new ThreadDeathHandler();
}
/**
- * Installs all Java breakpoints that currently exist in
- * the breakpoint manager
+ * Installs all Java breakpoints that currently exist in the breakpoint
+ * manager
*/
protected void initializeBreakpoints() {
- IBreakpointManager manager= DebugPlugin.getDefault().getBreakpointManager();
+ IBreakpointManager manager = DebugPlugin.getDefault()
+ .getBreakpointManager();
manager.addBreakpointListener(this);
- IBreakpoint[] bps = manager.getBreakpoints(JDIDebugModel.getPluginIdentifier());
- for (int i = 0; i < bps.length; i++) {
- if (bps[i] instanceof IJavaBreakpoint) {
- breakpointAdded(bps[i]);
+ IBreakpoint[] bps = manager.getBreakpoints(JDIDebugModel
+ .getPluginIdentifier());
+ for (IBreakpoint bp : bps) {
+ if (bp instanceof IJavaBreakpoint) {
+ breakpointAdded(bp);
}
}
}
-
+
/**
- * Creates, adds and returns a thread for the given
- * underlying thread reference. A creation event
- * is fired for the thread.
- * Returns <code>null</code> if during the creation of the thread this target
- * is set to the disconnected state.
+ * Creates, adds and returns a thread for the given underlying thread
+ * reference. A creation event is fired for the thread. Returns
+ * <code>null</code> if during the creation of the thread this target is set
+ * to the disconnected state.
*
- * @param thread underlying thread
+ * @param thread
+ * underlying thread
* @return model thread
*/
protected JDIThread createThread(ThreadReference thread) {
- JDIThread jdiThread= newThread(thread);
+ JDIThread jdiThread = newThread(thread);
if (jdiThread == null) {
return null;
}
@@ -526,12 +548,13 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
jdiThread.fireCreationEvent();
return jdiThread;
}
-
+
/**
* Factory method for creating new threads. Creates and returns a new thread
* object for the underlying thread reference, or <code>null</code> if none
*
- * @param reference thread reference
+ * @param reference
+ * thread reference
* @return JDI model thread
*/
protected JDIThread newThread(ThreadReference reference) {
@@ -543,34 +566,35 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
return null;
}
-
+
/**
* @see IDebugTarget#getThreads()
*/
public IThread[] getThreads() {
synchronized (fThreads) {
- return (IThread[])fThreads.toArray(new IThread[0]);
+ return fThreads.toArray(new IThread[0]);
}
}
-
+
/**
* @see ISuspendResume#canResume()
*/
public boolean canResume() {
- return (isSuspended() || canResumeThreads())
- && isAvailable() && !isPerformingHotCodeReplace();
+ return (isSuspended() || canResumeThreads()) && isAvailable()
+ && !isPerformingHotCodeReplace();
}
/**
* Returns whether this target has any threads which can be resumed.
+ *
* @return true if any thread can be resumed, false otherwise
* @since 3.2
*/
private boolean canResumeThreads() {
- Iterator it = getThreadIterator();
- while(it.hasNext()){
- IThread thread = (IThread)it.next();
- if(thread.canResume())
+ Iterator<JDIThread> it = getThreadIterator();
+ while (it.hasNext()) {
+ IThread thread = it.next();
+ if (thread.canResume())
return true;
}
return false;
@@ -582,9 +606,9 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
public boolean canSuspend() {
if (!isSuspended() && isAvailable()) {
// allow suspend when one or more threads are currently running
- IThread[] threads= getThreads();
- for (int i= 0, numThreads= threads.length; i < numThreads; i++) {
- if (((JDIThread)threads[i]).canSuspend()) {
+ IThread[] threads = getThreads();
+ for (IThread thread : threads) {
+ if (((JDIThread) thread).canSuspend()) {
return true;
}
}
@@ -603,10 +627,11 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
/**
* @see IDisconnect#canDisconnect()
*/
+ @Override
public boolean canDisconnect() {
return supportsDisconnect() && !isDisconnected();
}
-
+
/**
* Returns whether this debug target supports disconnecting.
*
@@ -615,18 +640,18 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
protected boolean supportsDisconnect() {
return fSupportsDisconnect;
}
-
+
/**
- * Sets whether this debug target supports disconnection.
- * Set on creation.
+ * Sets whether this debug target supports disconnection. Set on creation.
*
- * @param supported <code>true</code> if this target supports
- * disconnection, otherwise <code>false</code>
+ * @param supported
+ * <code>true</code> if this target supports disconnection,
+ * otherwise <code>false</code>
*/
private void setSupportsDisconnect(boolean supported) {
fSupportsDisconnect = supported;
}
-
+
/**
* Returns whether this debug target supports termination.
*
@@ -635,30 +660,32 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
protected boolean supportsTerminate() {
return fSupportsTerminate;
}
-
+
/**
- * Sets whether this debug target supports termination.
- * Set on creation.
+ * Sets whether this debug target supports termination. Set on creation.
*
- * @param supported <code>true</code> if this target supports
- * termination, otherwise <code>false</code>
+ * @param supported
+ * <code>true</code> if this target supports termination,
+ * otherwise <code>false</code>
*/
private void setSupportsTerminate(boolean supported) {
fSupportsTerminate = supported;
}
-
+
/**
* @see IJavaDebugTarget#supportsHotCodeReplace()
*/
public boolean supportsHotCodeReplace() {
return supportsJ9HotCodeReplace() || supportsJDKHotCodeReplace();
}
-
+
/**
* @see IJavaDebugTarget#supportsInstanceBreakpoints()
*/
public boolean supportsInstanceBreakpoints() {
- if (isAvailable() && JDIDebugPlugin.isJdiVersionGreaterThanOrEqual(new int[] {1,4})) {
+ if (isAvailable()
+ && JDIDebugPlugin.isJdiVersionGreaterThanOrEqual(new int[] { 1,
+ 4 })) {
VirtualMachine vm = getVM();
if (vm != null) {
return vm.canUseInstanceFilters();
@@ -666,9 +693,10 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
return false;
}
-
+
/**
- * Returns whether this debug target supports hot code replace for the J9 VM.
+ * Returns whether this debug target supports hot code replace for the J9
+ * VM.
*
* @return whether this debug target supports J9 hot code replace
*/
@@ -676,22 +704,26 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
VirtualMachine vm = getVM();
if (isAvailable() && vm instanceof org.eclipse.jdi.hcr.VirtualMachine) {
try {
- return ((org.eclipse.jdi.hcr.VirtualMachine)vm).canReloadClasses();
+ return ((org.eclipse.jdi.hcr.VirtualMachine) vm)
+ .canReloadClasses();
} catch (UnsupportedOperationException e) {
- // This is not an error condition - UnsupportedOperationException is thrown when a VM does
+ // This is not an error condition -
+ // UnsupportedOperationException is thrown when a VM does
// not support HCR
}
}
return false;
}
-
+
/**
* Returns whether this debug target supports hot code replace for JDK VMs.
*
* @return whether this debug target supports JDK hot code replace
*/
public boolean supportsJDKHotCodeReplace() {
- if (isAvailable() && JDIDebugPlugin.isJdiVersionGreaterThanOrEqual(new int[] {1,4})) {
+ if (isAvailable()
+ && JDIDebugPlugin.isJdiVersionGreaterThanOrEqual(new int[] { 1,
+ 4 })) {
VirtualMachine vm = getVM();
if (vm != null) {
return vm.canRedefineClasses();
@@ -699,14 +731,16 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
return false;
}
-
+
/**
* Returns whether this debug target supports popping stack frames.
*
* @return whether this debug target supports popping stack frames.
*/
public boolean canPopFrames() {
- if (isAvailable() && JDIDebugPlugin.isJdiVersionGreaterThanOrEqual(new int[] {1,4})) {
+ if (isAvailable()
+ && JDIDebugPlugin.isJdiVersionGreaterThanOrEqual(new int[] { 1,
+ 4 })) {
VirtualMachine vm = getVM();
if (vm != null) {
return vm.canPopFrames();
@@ -718,6 +752,7 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
/**
* @see IDisconnect#disconnect()
*/
+ @Override
public void disconnect() throws DebugException {
if (!isAvailable()) {
@@ -726,7 +761,7 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
if (!canDisconnect()) {
- notSupported(JDIDebugModelMessages.JDIDebugTarget_does_not_support_disconnect);
+ notSupported(JDIDebugModelMessages.JDIDebugTarget_does_not_support_disconnect);
}
try {
@@ -740,11 +775,14 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
// normal disconnect handling
disconnected();
} catch (RuntimeException e) {
- targetRequestFailed(MessageFormat.format(JDIDebugModelMessages.JDIDebugTarget_exception_disconnecting, new String[] {e.toString()}), e);
+ targetRequestFailed(
+ MessageFormat.format(
+ JDIDebugModelMessages.JDIDebugTarget_exception_disconnecting,
+ e.toString()), e);
}
}
-
+
/**
* Allows for ThreadStartHandler to do clean up/disposal.
*/
@@ -756,57 +794,56 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
/**
- * Returns the underlying virtual machine associated with this
- * debug target, or <code>null</code> if none (disconnected/terminated)
+ * Returns the underlying virtual machine associated with this debug target,
+ * or <code>null</code> if none (disconnected/terminated)
*
* @return the underlying VM or <code>null</code>
*/
+ @Override
public VirtualMachine getVM() {
return fVirtualMachine;
}
-
+
/**
- * Sets the underlying VM associated with this debug
- * target. Set on creation.
+ * Sets the underlying VM associated with this debug target. Set on
+ * creation.
*
- * @param vm underlying VM
+ * @param vm
+ * underlying VM
*/
private void setVM(VirtualMachine vm) {
fVirtualMachine = vm;
}
-
+
/**
- * Sets whether this debug target has performed a hot
- * code replace.
+ * Sets whether this debug target has performed a hot code replace.
*/
public void setHCROccurred(boolean occurred) {
- fHasHCROccurred= occurred;
+ fHasHCROccurred = occurred;
}
-
- public void removeOutOfSynchTypes(List qualifiedNames) {
+
+ public void removeOutOfSynchTypes(List<String> qualifiedNames) {
fOutOfSynchTypes.removeAll(qualifiedNames);
}
-
+
/**
- * Sets the list of out of synch types
- * to the given list.
+ * Sets the list of out of synch types to the given list.
*/
- private void setOutOfSynchTypes(List qualifiedNames) {
- fOutOfSynchTypes= new HashSet();
+ private void setOutOfSynchTypes(List<String> qualifiedNames) {
+ fOutOfSynchTypes = new HashSet<String>();
fOutOfSynchTypes.addAll(qualifiedNames);
}
-
+
/**
- * The given types have failed to be reloaded by HCR.
- * Add them to the list of out of synch types.
+ * The given types have failed to be reloaded by HCR. Add them to the list
+ * of out of synch types.
*/
- public void addOutOfSynchTypes(List qualifiedNames) {
+ public void addOutOfSynchTypes(List<String> qualifiedNames) {
fOutOfSynchTypes.addAll(qualifiedNames);
}
-
+
/**
- * Returns whether the given type is out of synch in this
- * target.
+ * Returns whether the given type is out of synch in this target.
*/
public boolean isOutOfSynch(String qualifiedName) {
if (fOutOfSynchTypes == null || fOutOfSynchTypes.isEmpty()) {
@@ -814,35 +851,35 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
return fOutOfSynchTypes.contains(qualifiedName);
}
-
+
/**
* @see IJavaDebugTarget#isOutOfSynch()
*/
public boolean isOutOfSynch() throws DebugException {
- Iterator threads= getThreadIterator();
+ Iterator<JDIThread> threads = getThreadIterator();
while (threads.hasNext()) {
- JDIThread thread= (JDIThread)threads.next();
+ JDIThread thread = threads.next();
if (thread.isOutOfSynch()) {
return true;
}
}
return false;
- }
-
+ }
+
/**
* @see IJavaDebugTarget#mayBeOutOfSynch()
*/
public boolean mayBeOutOfSynch() {
- Iterator threads= getThreadIterator();
+ Iterator<JDIThread> threads = getThreadIterator();
while (threads.hasNext()) {
- JDIThread thread= (JDIThread)threads.next();
+ JDIThread thread = threads.next();
if (thread.mayBeOutOfSynch()) {
return true;
}
}
return false;
}
-
+
/**
* Returns whether a hot code replace attempt has failed.
*
@@ -851,30 +888,31 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
public boolean hasHCRFailed() {
return fOutOfSynchTypes != null && !fOutOfSynchTypes.isEmpty();
}
-
+
/**
- * Returns whether this debug target has performed
- * a hot code replace
+ * Returns whether this debug target has performed a hot code replace
*/
public boolean hasHCROccurred() {
return fHasHCROccurred;
}
-
+
/**
* Reinstall all breakpoints installed in the given resources
+ * @param resources
+ * @param classNames
*/
- public void reinstallBreakpointsIn(List resources, List classNames) {
- List breakpoints= getBreakpoints();
- IJavaBreakpoint[] copy= new IJavaBreakpoint[breakpoints.size()];
+ public void reinstallBreakpointsIn(List<IResource> resources, List<String> classNames) {
+ List<IBreakpoint> breakpoints = getBreakpoints();
+ IJavaBreakpoint[] copy = new IJavaBreakpoint[breakpoints.size()];
breakpoints.toArray(copy);
- IJavaBreakpoint breakpoint= null;
- String installedType= null;
-
- for (int i= 0; i < copy.length; i++) {
- breakpoint= copy[i];
+ IJavaBreakpoint breakpoint = null;
+ String installedType = null;
+
+ for (IJavaBreakpoint element : copy) {
+ breakpoint = element;
if (breakpoint instanceof JavaLineBreakpoint) {
try {
- installedType= breakpoint.getTypeName();
+ installedType = breakpoint.getTypeName();
if (classNames.contains(installedType)) {
breakpointRemoved(breakpoint, null);
breakpointAdded(breakpoint);
@@ -884,20 +922,21 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
continue;
}
}
- }
+ }
}
/**
- * Finds and returns the JDI thread for the associated thread reference,
- * or <code>null</code> if not found.
+ * Finds and returns the JDI thread for the associated thread reference, or
+ * <code>null</code> if not found.
*
- * @param the underlying thread reference
+ * @param the
+ * underlying thread reference
* @return the associated model thread
*/
public JDIThread findThread(ThreadReference tr) {
- Iterator iter= getThreadIterator();
+ Iterator<JDIThread> iter = getThreadIterator();
while (iter.hasNext()) {
- JDIThread thread = (JDIThread) iter.next();
+ JDIThread thread = iter.next();
if (thread.getUnderlyingThread().equals(tr))
return thread;
}
@@ -913,54 +952,57 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
return fName;
}
-
+
/**
- * Sets the name of this debug target. Set on creation,
- * and if set to <code>null</code> the name will be
- * retrieved lazily from the underlying VM.
+ * Sets the name of this debug target. Set on creation, and if set to
+ * <code>null</code> the name will be retrieved lazily from the underlying
+ * VM.
*
- * @param name the name of this VM or <code>null</code>
- * if the name should be retrieved from the underlying VM
+ * @param name
+ * the name of this VM or <code>null</code> if the name should be
+ * retrieved from the underlying VM
*/
protected void setName(String name) {
fName = name;
}
-
+
/**
- * Sets the process associated with this debug target,
- * possibly <code>null</code>. Set on creation.
+ * Sets the process associated with this debug target, possibly
+ * <code>null</code>. Set on creation.
*
- * @param process the system process associated with the
- * underlying VM, or <code>null</code> if no process is
- * associated with this debug target (for example, a remote
- * VM).
+ * @param process
+ * the system process associated with the underlying VM, or
+ * <code>null</code> if no process is associated with this debug
+ * target (for example, a remote VM).
*/
protected void setProcess(IProcess process) {
fProcess = process;
}
-
+
/**
* @see IDebugTarget#getProcess()
*/
public IProcess getProcess() {
return fProcess;
}
-
+
/**
- * Notification the underlying VM has died. Updates
- * the state of this target to be terminated.
+ * Notification the underlying VM has died. Updates the state of this target
+ * to be terminated.
*
- * @param event VM death event
+ * @param event
+ * VM death event
*/
public void handleVMDeath(VMDeathEvent event) {
terminated();
}
/**
- * Notification the underlying VM has disconnected.
- * Updates the state of this target to be terminated.
+ * Notification the underlying VM has disconnected. Updates the state of
+ * this target to be terminated.
*
- * @param event disconnect event
+ * @param event
+ * disconnect event
*/
public void handleVMDisconnect(VMDisconnectEvent event) {
if (isTerminating()) {
@@ -969,26 +1011,26 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
disconnected();
}
}
-
+
/**
* @see ISuspendResume#isSuspended()
*/
public boolean isSuspended() {
return fSuspended;
}
-
+
/**
* Sets whether this VM is suspended.
*
- * @param suspended whether this VM is suspended
+ * @param suspended
+ * whether this VM is suspended
*/
private void setSuspended(boolean suspended) {
fSuspended = suspended;
}
-
+
/**
- * Returns whether this target is available to
- * handle VM requests
+ * Returns whether this target is available to handle VM requests
*/
public boolean isAvailable() {
return !(isTerminated() || isTerminating() || isDisconnected());
@@ -1004,117 +1046,137 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
/**
* Sets whether this debug target is terminated
*
- * @param terminated <code>true</code> if this debug
- * target is terminated, otherwise <code>false</code>
+ * @param terminated
+ * <code>true</code> if this debug target is terminated,
+ * otherwise <code>false</code>
*/
protected void setTerminated(boolean terminated) {
fTerminated = terminated;
}
-
+
/**
* Sets whether this debug target is disconnected
*
- * @param disconnected <code>true</code> if this debug
- * target is disconnected, otherwise <code>false</code>
+ * @param disconnected
+ * <code>true</code> if this debug target is disconnected,
+ * otherwise <code>false</code>
*/
protected void setDisconnected(boolean disconnected) {
- fDisconnected= disconnected;
+ fDisconnected = disconnected;
}
-
+
/**
* @see IDisconnect#isDisconnected()
*/
+ @Override
public boolean isDisconnected() {
return fDisconnected;
}
-
+
/**
- * Creates, enables and returns a class prepare request for the
- * specified class name in this target.
+ * Creates, enables and returns a class prepare request for the specified
+ * class name in this target.
*
- * @param classPattern regular expression specifying the pattern of
- * class names that will cause the event request to fire. Regular
- * expressions may begin with a '*', end with a '*', or be an exact
- * match.
- * @exception CoreException if unable to create the request
- */
- public ClassPrepareRequest createClassPrepareRequest(String classPattern) throws CoreException {
+ * @param classPattern
+ * regular expression specifying the pattern of class names that
+ * will cause the event request to fire. Regular expressions may
+ * begin with a '*', end with a '*', or be an exact match.
+ * @exception CoreException
+ * if unable to create the request
+ */
+ public ClassPrepareRequest createClassPrepareRequest(String classPattern)
+ throws CoreException {
return createClassPrepareRequest(classPattern, null);
}
-
- /**
- * Creates, enables and returns a class prepare request for the
- * specified class name in this target. Can specify a class exclusion filter
- * as well.
- * This is a utility method used by event requesters that need to
- * create class prepare requests.
- *
- * @param classPattern regular expression specifying the pattern of
- * class names that will cause the event request to fire. Regular
- * expressions may begin with a '*', end with a '*', or be an exact
- * match.
- * @param classExclusionPattern regular expression specifying the pattern of
- * class names that will not cause the event request to fire. Regular
- * expressions may begin with a '*', end with a '*', or be an exact
- * match. May be <code>null</code>.
- * @exception CoreException if unable to create the request
- */
- public ClassPrepareRequest createClassPrepareRequest(String classPattern, String classExclusionPattern) throws CoreException {
- return createClassPrepareRequest(classPattern, classExclusionPattern, true);
- }
-
- /**
- * Creates, enables and returns a class prepare request for the
- * specified class name in this target. Can specify a class exclusion filter
- * as well.
- * This is a utility method used by event requesters that need to
- * create class prepare requests.
- *
- * @param classPattern regular expression specifying the pattern of
- * class names that will cause the event request to fire. Regular
- * expressions may begin with a '*', end with a '*', or be an exact
- * match.
- * @param classExclusionPattern regular expression specifying the pattern of
- * class names that will not cause the event request to fire. Regular
- * expressions may begin with a '*', end with a '*', or be an exact
- * match. May be <code>null</code>.
- * @param enabled whether to enable the event request
- * @exception CoreException if unable to create the request
+
+ /**
+ * Creates, enables and returns a class prepare request for the specified
+ * class name in this target. Can specify a class exclusion filter as well.
+ * This is a utility method used by event requesters that need to create
+ * class prepare requests.
+ *
+ * @param classPattern
+ * regular expression specifying the pattern of class names that
+ * will cause the event request to fire. Regular expressions may
+ * begin with a '*', end with a '*', or be an exact match.
+ * @param classExclusionPattern
+ * regular expression specifying the pattern of class names that
+ * will not cause the event request to fire. Regular expressions
+ * may begin with a '*', end with a '*', or be an exact match.
+ * May be <code>null</code>.
+ * @exception CoreException
+ * if unable to create the request
+ */
+ public ClassPrepareRequest createClassPrepareRequest(String classPattern,
+ String classExclusionPattern) throws CoreException {
+ return createClassPrepareRequest(classPattern, classExclusionPattern,
+ true);
+ }
+
+ /**
+ * Creates, enables and returns a class prepare request for the specified
+ * class name in this target. Can specify a class exclusion filter as well.
+ * This is a utility method used by event requesters that need to create
+ * class prepare requests.
+ *
+ * @param classPattern
+ * regular expression specifying the pattern of class names that
+ * will cause the event request to fire. Regular expressions may
+ * begin with a '*', end with a '*', or be an exact match.
+ * @param classExclusionPattern
+ * regular expression specifying the pattern of class names that
+ * will not cause the event request to fire. Regular expressions
+ * may begin with a '*', end with a '*', or be an exact match.
+ * May be <code>null</code>.
+ * @param enabled
+ * whether to enable the event request
+ * @exception CoreException
+ * if unable to create the request
* @since 3.3
*/
- public ClassPrepareRequest createClassPrepareRequest(String classPattern, String classExclusionPattern, boolean enabled) throws CoreException {
- return createClassPrepareRequest(classPattern, classExclusionPattern, enabled, null);
- }
-
- /**
- * Creates, enables and returns a class prepare request for the
- * specified class name in this target. Can specify a class exclusion filter
- * as well.
- * This is a utility method used by event requesters that need to
- * create class prepare requests.
- *
- * @param classPattern regular expression specifying the pattern of
- * class names that will cause the event request to fire. Regular
- * expressions may begin with a '*', end with a '*', or be an exact
- * match. May be <code>null</code> if sourceName is specified
- * @param classExclusionPattern regular expression specifying the pattern of
- * class names that will not cause the event request to fire. Regular
- * expressions may begin with a '*', end with a '*', or be an exact
- * match. May be <code>null</code>.
- * @param enabled whether to enable the event request
- * @param sourceName source name pattern to match or <code>null</code> if classPattern
- * is specified
- * @exception CoreException if unable to create the request
+ public ClassPrepareRequest createClassPrepareRequest(String classPattern,
+ String classExclusionPattern, boolean enabled) throws CoreException {
+ return createClassPrepareRequest(classPattern, classExclusionPattern,
+ enabled, null);
+ }
+
+ /**
+ * Creates, enables and returns a class prepare request for the specified
+ * class name in this target. Can specify a class exclusion filter as well.
+ * This is a utility method used by event requesters that need to create
+ * class prepare requests.
+ *
+ * @param classPattern
+ * regular expression specifying the pattern of class names that
+ * will cause the event request to fire. Regular expressions may
+ * begin with a '*', end with a '*', or be an exact match. May be
+ * <code>null</code> if sourceName is specified
+ * @param classExclusionPattern
+ * regular expression specifying the pattern of class names that
+ * will not cause the event request to fire. Regular expressions
+ * may begin with a '*', end with a '*', or be an exact match.
+ * May be <code>null</code>.
+ * @param enabled
+ * whether to enable the event request
+ * @param sourceName
+ * source name pattern to match or <code>null</code> if
+ * classPattern is specified
+ * @exception CoreException
+ * if unable to create the request
* @since 3.3
*/
- public ClassPrepareRequest createClassPrepareRequest(String classPattern, String classExclusionPattern, boolean enabled, String sourceName) throws CoreException {
- EventRequestManager manager= getEventRequestManager();
+ public ClassPrepareRequest createClassPrepareRequest(String classPattern,
+ String classExclusionPattern, boolean enabled, String sourceName)
+ throws CoreException {
+ EventRequestManager manager = getEventRequestManager();
if (!isAvailable() || manager == null) {
- requestFailed(JDIDebugModelMessages.JDIDebugTarget_Unable_to_create_class_prepare_request___VM_disconnected__2, null);
+ requestFailed(
+ JDIDebugModelMessages.JDIDebugTarget_Unable_to_create_class_prepare_request___VM_disconnected__2,
+ null);
}
- ClassPrepareRequest req= null;
+ ClassPrepareRequest req = null;
try {
- req= manager.createClassPrepareRequest();
+ req = manager.createClassPrepareRequest();
if (classPattern != null) {
req.addClassFilter(classPattern);
}
@@ -1129,7 +1191,9 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
req.enable();
}
} catch (RuntimeException e) {
- targetRequestFailed(JDIDebugModelMessages.JDIDebugTarget_Unable_to_create_class_prepare_request__3, e);
+ targetRequestFailed(
+ JDIDebugModelMessages.JDIDebugTarget_Unable_to_create_class_prepare_request__3,
+ e);
// execution will not reach here
return null;
}
@@ -1140,33 +1204,33 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
* @see ISuspendResume#resume()
*/
public void resume() throws DebugException {
- // if a client calls resume, then we should resume on a VMStart event in case
- // it has not yet been received, and the target was created with the "resume"
- // flag as "false". See bug 32372.
+ // if a client calls resume, then we should resume on a VMStart event in
+ // case
+ // it has not yet been received, and the target was created with the
+ // "resume"
+ // flag as "false". See bug 32372.
setResumeOnStartup(true);
- resume(true);
+ resume(true);
}
-
+
/**
* @see ISuspendResume#resume()
*
- * Updates the state of this debug target to resumed,
- * but does not fire notification of the resumption.
+ * Updates the state of this debug target to resumed, but does not fire
+ * notification of the resumption.
*/
public void resumeQuiet() throws DebugException {
resume(false);
}
-
+
/**
* @see ISuspendResume#resume()
*
- * Updates the state of this debug target, but only fires
- * notification to listeners if <code>fireNotification</code>
- * is <code>true</code>.
+ * Updates the state of this debug target, but only fires notification
+ * to listeners if <code>fireNotification</code> is <code>true</code>.
*/
protected void resume(boolean fireNotification) throws DebugException {
- if ((!isSuspended() && !canResumeThreads())
- || !isAvailable()) {
+ if ((!isSuspended() && !canResumeThreads()) || !isAvailable()) {
return;
}
try {
@@ -1185,10 +1249,12 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
} catch (RuntimeException e) {
setSuspended(true);
fireSuspendEvent(DebugEvent.CLIENT_REQUEST);
- targetRequestFailed(MessageFormat.format(JDIDebugModelMessages.JDIDebugTarget_exception_resume, new String[] {e.toString()}), e);
- }
+ targetRequestFailed(MessageFormat.format(
+ JDIDebugModelMessages.JDIDebugTarget_exception_resume,
+ e.toString()), e);
+ }
}
-
+
/**
* @see org.eclipse.debug.core.model.IDebugTarget#supportsBreakpoint(IBreakpoint)
*/
@@ -1197,13 +1263,12 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
/**
- * Notification a breakpoint has been added to the
- * breakpoint manager. If the breakpoint is a Java
- * breakpoint and this target is not terminated,
+ * Notification a breakpoint has been added to the breakpoint manager. If
+ * the breakpoint is a Java breakpoint and this target is not terminated,
* the breakpoint is installed.
*
- * @param breakpoint the breakpoint added to
- * the breakpoint manager
+ * @param breakpoint
+ * the breakpoint added to the breakpoint manager
*/
public void breakpointAdded(IBreakpoint breakpoint) {
if (!isAvailable()) {
@@ -1211,14 +1276,16 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
if (supportsBreakpoint(breakpoint)) {
try {
- JavaBreakpoint javaBreakpoint= (JavaBreakpoint) breakpoint;
+ JavaBreakpoint javaBreakpoint = (JavaBreakpoint) breakpoint;
if (!getBreakpoints().contains(breakpoint)) {
if (!javaBreakpoint.shouldSkipBreakpoint()) {
- // If the breakpoint should be skipped, don't add the breakpoint
- // request to the VM. Just add the breakpoint to the collection so
+ // If the breakpoint should be skipped, don't add the
+ // breakpoint
+ // request to the VM. Just add the breakpoint to the
+ // collection so
// we have it if the manager is later enabled.
javaBreakpoint.addToTarget(this);
- }
+ }
getBreakpoints().add(breakpoint);
}
} catch (CoreException e) {
@@ -1228,36 +1295,37 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
/**
- * Notification that one or more attributes of the
- * given breakpoint has changed. If the breakpoint
- * is a Java breakpoint, the associated event request
- * in the underlying VM is updated to reflect the
- * new state of the breakpoint.
+ * Notification that one or more attributes of the given breakpoint has
+ * changed. If the breakpoint is a Java breakpoint, the associated event
+ * request in the underlying VM is updated to reflect the new state of the
+ * breakpoint.
*
- * @param breakpoint the breakpoint that has changed
+ * @param breakpoint
+ * the breakpoint that has changed
*/
public void breakpointChanged(IBreakpoint breakpoint, IMarkerDelta delta) {
}
-
+
/**
- * Notification that the given breakpoint has been removed
- * from the breakpoint manager. If this target is not terminated,
- * the breakpoint is removed from the underlying VM.
+ * Notification that the given breakpoint has been removed from the
+ * breakpoint manager. If this target is not terminated, the breakpoint is
+ * removed from the underlying VM.
*
- * @param breakpoint the breakpoint has been removed from
- * the breakpoint manager.
+ * @param breakpoint
+ * the breakpoint has been removed from the breakpoint manager.
*/
public void breakpointRemoved(IBreakpoint breakpoint, IMarkerDelta delta) {
if (!isAvailable()) {
return;
- }
+ }
if (supportsBreakpoint(breakpoint)) {
try {
- ((JavaBreakpoint)breakpoint).removeFromTarget(this);
+ ((JavaBreakpoint) breakpoint).removeFromTarget(this);
getBreakpoints().remove(breakpoint);
- Iterator threads = getThreadIterator();
+ Iterator<JDIThread> threads = getThreadIterator();
while (threads.hasNext()) {
- ((JDIThread)threads.next()).removeCurrentBreakpoint(breakpoint);
+ threads.next()
+ .removeCurrentBreakpoint(breakpoint);
}
} catch (CoreException e) {
logError(e);
@@ -1285,31 +1353,34 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
setSuspended(false);
resumeThreads();
fireResumeEvent(DebugEvent.CLIENT_REQUEST);
- targetRequestFailed(MessageFormat.format(JDIDebugModelMessages.JDIDebugTarget_exception_suspend, new String[] {e.toString()}), e);
+ targetRequestFailed(MessageFormat.format(
+ JDIDebugModelMessages.JDIDebugTarget_exception_suspend,
+ e.toString()), e);
}
-
+
}
-
+
/**
- * Prepares threads to suspend (terminates evaluations, waits for invocations, etc.).
+ * Prepares threads to suspend (terminates evaluations, waits for
+ * invocations, etc.).
*
- * @exception DebugException if a thread times out
+ * @exception DebugException
+ * if a thread times out
*/
protected void prepareThreadsForClientSuspend() throws DebugException {
- Iterator threads = getThreadIterator();
+ Iterator<JDIThread> threads = getThreadIterator();
while (threads.hasNext()) {
- ((JDIThread)threads.next()).prepareForClientSuspend();
+ threads.next().prepareForClientSuspend();
}
}
-
-
+
/**
* Notifies threads that they have been suspended
*/
protected void suspendThreads() {
- Iterator threads = getThreadIterator();
+ Iterator<JDIThread> threads = getThreadIterator();
while (threads.hasNext()) {
- ((JDIThread)threads.next()).suspendedByVM();
+ threads.next().suspendedByVM();
}
}
@@ -1317,49 +1388,49 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
* Notifies threads that they have been resumed
*/
protected void resumeThreads() throws DebugException {
- Iterator threads = getThreadIterator();
+ Iterator<JDIThread> threads = getThreadIterator();
while (threads.hasNext()) {
- ((JDIThread)threads.next()).resumedByVM();
+ threads.next().resumedByVM();
}
}
-
+
/**
- * Notifies this VM to update its state in preparation
- * for a suspend.
+ * Notifies this VM to update its state in preparation for a suspend.
*
- * @param breakpoint the breakpoint that caused the
- * suspension
+ * @param breakpoint
+ * the breakpoint that caused the suspension
*/
public void prepareToSuspendByBreakpoint(JavaBreakpoint breakpoint) {
setSuspended(true);
suspendThreads();
}
-
+
/**
- * Notifies this VM it has been suspended by the
- * given breakpoint
+ * Notifies this VM it has been suspended by the given breakpoint
*
- * @param breakpoint the breakpoint that caused the
- * suspension
+ * @param breakpoint
+ * the breakpoint that caused the suspension
*/
- protected void suspendedByBreakpoint(JavaBreakpoint breakpoint, boolean queueEvent, EventSet set) {
+ protected void suspendedByBreakpoint(JavaBreakpoint breakpoint,
+ boolean queueEvent, EventSet set) {
if (queueEvent) {
queueSuspendEvent(DebugEvent.BREAKPOINT, set);
} else {
fireSuspendEvent(DebugEvent.BREAKPOINT);
}
- }
-
+ }
+
/**
* Notifies this VM suspension has been cancelled
*
- * @param breakpoint the breakpoint that caused the
- * suspension
+ * @param breakpoint
+ * the breakpoint that caused the suspension
*/
- protected void cancelSuspendByBreakpoint(JavaBreakpoint breakpoint) throws DebugException {
+ protected void cancelSuspendByBreakpoint(JavaBreakpoint breakpoint)
+ throws DebugException {
setSuspended(false);
resumeThreads();
- }
+ }
/**
* @see ITerminate#terminate()
@@ -1369,7 +1440,7 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
return;
}
if (!supportsTerminate()) {
- notSupported(JDIDebugModelMessages.JDIDebugTarget_does_not_support_termination);
+ notSupported(JDIDebugModelMessages.JDIDebugTarget_does_not_support_termination);
}
try {
setTerminating(true);
@@ -1378,12 +1449,12 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
if (vm != null) {
vm.exit(1);
}
- IProcess process= getProcess();
+ IProcess process = getProcess();
if (process != null) {
process.terminate();
}
} catch (VMDisconnectedException e) {
- // if the VM disconnects while exiting, perform
+ // if the VM disconnects while exiting, perform
// normal termination processing
terminated();
} catch (TimeoutException exception) {
@@ -1396,13 +1467,15 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
disconnected();
}
} catch (RuntimeException e) {
- targetRequestFailed(MessageFormat.format(JDIDebugModelMessages.JDIDebugTarget_exception_terminating, new String[] {e.toString()}), e);
+ targetRequestFailed(MessageFormat.format(
+ JDIDebugModelMessages.JDIDebugTarget_exception_terminating,
+ e.toString()), e);
}
}
/**
- * Updates the state of this target to be terminated,
- * if not already terminated.
+ * Updates the state of this target to be terminated, if not already
+ * terminated.
*/
protected void terminated() {
setTerminating(false);
@@ -1413,11 +1486,11 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
fireTerminateEvent();
}
}
-
+
/**
- * Updates the state of this target for disconnection
- * from the VM.
+ * Updates the state of this target for disconnection from the VM.
*/
+ @Override
protected void disconnected() {
if (!isDisconnected()) {
setDisconnected(true);
@@ -1426,15 +1499,13 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
}
- /**
- * Cleans up the internal state of this debug
- * target as a result of a session ending with a
- * VM (as a result of a disconnect or termination of
+ /**
+ * Cleans up the internal state of this debug target as a result of a
+ * session ending with a VM (as a result of a disconnect or termination of
* the VM).
* <p>
- * All threads are removed from this target.
- * This target is removed as a breakpoint listener,
- * and all breakpoints are removed from this target.
+ * All threads are removed from this target. This target is removed as a
+ * breakpoint listener, and all breakpoints are removed from this target.
* </p>
*/
protected void cleanup() {
@@ -1443,18 +1514,19 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
plugin.getBreakpointManager().removeBreakpointListener(this);
plugin.getLaunchManager().removeLaunchListener(this);
plugin.getBreakpointManager().removeBreakpointManagerListener(this);
- plugin.removeDebugEventListener(this);
+ plugin.removeDebugEventListener(this);
removeAllBreakpoints();
fOutOfSynchTypes.clear();
if (fEngines != null) {
- Iterator engines = fEngines.values().iterator();
+ Iterator<IAstEvaluationEngine> engines = fEngines.values().iterator();
while (engines.hasNext()) {
- IAstEvaluationEngine engine = (IAstEvaluationEngine)engines.next();
+ IAstEvaluationEngine engine = engines
+ .next();
engine.dispose();
}
fEngines.clear();
}
- fVirtualMachine= null;
+ fVirtualMachine = null;
setThreadStartHandler(null);
setEventDispatcher(null);
setStepFilters(new String[0]);
@@ -1462,30 +1534,30 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
/**
- * Removes all threads from this target's collection
- * of threads, firing a terminate event for each.
+ * Removes all threads from this target's collection of threads, firing a
+ * terminate event for each.
*/
protected void removeAllThreads() {
- Iterator itr= getThreadIterator();
+ Iterator<JDIThread> itr = getThreadIterator();
while (itr.hasNext()) {
- JDIThread child= (JDIThread) itr.next();
+ JDIThread child = itr.next();
child.terminated();
}
synchronized (fThreads) {
- fThreads.clear();
+ fThreads.clear();
}
}
/**
- * Removes all breakpoints from this target, such
- * that each breakpoint can update its install
- * count. This target's collection of breakpoints
- * is cleared.
+ * Removes all breakpoints from this target, such that each breakpoint can
+ * update its install count. This target's collection of breakpoints is
+ * cleared.
*/
protected void removeAllBreakpoints() {
- Iterator breakpoints= ((ArrayList)((ArrayList)getBreakpoints()).clone()).iterator();
+ Iterator<IBreakpoint> breakpoints = ((ArrayList<IBreakpoint>) ((ArrayList<IBreakpoint>) getBreakpoints())
+ .clone()).iterator();
while (breakpoints.hasNext()) {
- JavaBreakpoint breakpoint= (JavaBreakpoint) breakpoints.next();
+ JavaBreakpoint breakpoint = (JavaBreakpoint) breakpoints.next();
try {
breakpoint.removeFromTarget(this);
} catch (CoreException e) {
@@ -1494,15 +1566,16 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
getBreakpoints().clear();
}
-
+
/**
- * Adds all the breakpoints in this target's collection
- * to this debug target.
+ * Adds all the breakpoints in this target's collection to this debug
+ * target.
*/
protected void reinstallAllBreakpoints() {
- Iterator breakpoints= ((ArrayList)((ArrayList)getBreakpoints()).clone()).iterator();
+ Iterator<IBreakpoint> breakpoints = ((ArrayList<IBreakpoint>) ((ArrayList<IBreakpoint>) getBreakpoints())
+ .clone()).iterator();
while (breakpoints.hasNext()) {
- JavaBreakpoint breakpoint= (JavaBreakpoint) breakpoints.next();
+ JavaBreakpoint breakpoint = (JavaBreakpoint) breakpoints.next();
try {
breakpoint.addToTarget(this);
} catch (CoreException e) {
@@ -1512,12 +1585,11 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
/**
- * Returns VirtualMachine.classesByName(String),
- * logging any JDI exceptions.
- *
+ * Returns VirtualMachine.classesByName(String), logging any JDI exceptions.
+ *
* @see com.sun.jdi.VirtualMachine
*/
- public List jdiClassesByName(String className) {
+ public List<ReferenceType> jdiClassesByName(String className) {
VirtualMachine vm = getVM();
if (vm != null) {
try {
@@ -1539,8 +1611,8 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
*/
public IJavaVariable findVariable(String varName) throws DebugException {
IThread[] threads = getThreads();
- for (int i = 0; i < threads.length; i++) {
- IJavaThread thread = (IJavaThread)threads[i];
+ for (IThread thread2 : threads) {
+ IJavaThread thread = (IJavaThread) thread2;
IJavaVariable var = thread.findVariable(varName);
if (var != null) {
return var;
@@ -1548,24 +1620,25 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
return null;
}
-
+
/**
* @see IAdaptable#getAdapter(Class)
*/
+ @Override
public Object getAdapter(Class adapter) {
if (adapter == IJavaDebugTarget.class) {
return this;
}
return super.getAdapter(adapter);
}
-
+
/**
- * The JDIDebugPlugin is shutting down.
- * Shutdown the event dispatcher and do local
- * cleanup.
+ * The JDIDebugPlugin is shutting down. Shutdown the event dispatcher and do
+ * local cleanup.
*/
public void shutdown() {
- EventDispatcher dispatcher = ((JDIDebugTarget)getDebugTarget()).getEventDispatcher();
+ EventDispatcher dispatcher = ((JDIDebugTarget) getDebugTarget())
+ .getEventDispatcher();
if (dispatcher != null) {
dispatcher.shutdown();
}
@@ -1580,37 +1653,42 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
cleanup();
}
-
+
/**
* Returns the CRC-32 of the entire class file contents associated with
- * given type, on the target VM, or <code>null</code> if the type is
- * not loaded, or a CRC for the type is not known.
+ * given type, on the target VM, or <code>null</code> if the type is not
+ * loaded, or a CRC for the type is not known.
*
- * @param typeName fully qualified name of the type for which a
- * CRC is required. For example, "com.example.Example".
+ * @param typeName
+ * fully qualified name of the type for which a CRC is required.
+ * For example, "com.example.Example".
* @return 32 bit CRC, or <code>null</code>
- * @exception DebugException if this method fails. Reasons include:
- * <ul>
- * <li>Failure communicating with the VM. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
+ * @exception DebugException
+ * if this method fails. Reasons include:
+ * <ul>
+ * <li>Failure communicating with the VM. The
+ * DebugException's status code contains the underlying
+ * exception responsible for the failure.</li>
+ * </ul>
*/
protected Integer getCRC(String typeName) throws DebugException {
if (getVM() instanceof org.eclipse.jdi.hcr.VirtualMachine) {
- List classes = jdiClassesByName(typeName);
+ List<ReferenceType> classes = jdiClassesByName(typeName);
if (!classes.isEmpty()) {
- ReferenceType type = (ReferenceType)classes.get(0);
+ ReferenceType type = classes.get(0);
if (type instanceof org.eclipse.jdi.hcr.ReferenceType) {
try {
- org.eclipse.jdi.hcr.ReferenceType rt = (org.eclipse.jdi.hcr.ReferenceType)type;
+ org.eclipse.jdi.hcr.ReferenceType rt = (org.eclipse.jdi.hcr.ReferenceType) type;
if (rt.isVersionKnown()) {
return new Integer(rt.getClassFileVersion());
}
} catch (RuntimeException e) {
- targetRequestFailed(MessageFormat.format(JDIDebugModelMessages.JDIDebugTarget_exception_retrieving_version_information, new String[] {e.toString(), type.name()}), e);
+ targetRequestFailed(
+ MessageFormat.format(
+ JDIDebugModelMessages.JDIDebugTarget_exception_retrieving_version_information,
+ e.toString(), type.name()), e);
// execution will never reach this line, as
- // #targetRequestFailed will throw an exception
+ // #targetRequestFailed will throw an exception
return null;
}
}
@@ -1627,64 +1705,70 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
// get java.lang.Class
VirtualMachine vm = getVM();
if (vm == null) {
- requestFailed(JDIDebugModelMessages.JDIDebugTarget_Unable_to_retrieve_types___VM_disconnected__4, null);
+ requestFailed(
+ JDIDebugModelMessages.JDIDebugTarget_Unable_to_retrieve_types___VM_disconnected__4,
+ null);
}
- List classes = vm.classesByName(name);
+ List<ReferenceType> classes = vm.classesByName(name);
if (classes.size() == 0) {
switch (name.charAt(0)) {
- case 'b':
- if (name.equals("boolean")) { //$NON-NLS-1$
- return new IJavaType[] {newValue(true).getJavaType()};
- } else if (name.equals("byte")) { //$NON-NLS-1$
- return new IJavaType[] {newValue((byte)1).getJavaType()};
- }
- break;
- case 'i':
- if (name.equals("int")) { //$NON-NLS-1$
- return new IJavaType[] {newValue(1).getJavaType()};
- }
- break;
- case 'l':
- if (name.equals("long")) { //$NON-NLS-1$
- return new IJavaType[] {newValue(1l).getJavaType()};
- }
- break;
- case 'c':
- if (name.equals("char")) { //$NON-NLS-1$
- return new IJavaType[] {newValue(' ').getJavaType()};
- }
- break;
- case 's':
- if (name.equals("short")) { //$NON-NLS-1$
- return new IJavaType[] {newValue((short)1).getJavaType()};
- }
- break;
- case 'f':
- if (name.equals("float")) { //$NON-NLS-1$
- return new IJavaType[] {newValue(1f).getJavaType()};
- }
- break;
- case 'd':
- if (name.equals("double")) { //$NON-NLS-1$
- return new IJavaType[] {newValue(1d).getJavaType()};
- }
- break;
+ case 'b':
+ if (name.equals("boolean")) { //$NON-NLS-1$
+ return new IJavaType[] { newValue(true).getJavaType() };
+ } else if (name.equals("byte")) { //$NON-NLS-1$
+ return new IJavaType[] { newValue((byte) 1)
+ .getJavaType() };
+ }
+ break;
+ case 'i':
+ if (name.equals("int")) { //$NON-NLS-1$
+ return new IJavaType[] { newValue(1).getJavaType() };
+ }
+ break;
+ case 'l':
+ if (name.equals("long")) { //$NON-NLS-1$
+ return new IJavaType[] { newValue(1l).getJavaType() };
+ }
+ break;
+ case 'c':
+ if (name.equals("char")) { //$NON-NLS-1$
+ return new IJavaType[] { newValue(' ').getJavaType() };
+ }
+ break;
+ case 's':
+ if (name.equals("short")) { //$NON-NLS-1$
+ return new IJavaType[] { newValue((short) 1)
+ .getJavaType() };
+ }
+ break;
+ case 'f':
+ if (name.equals("float")) { //$NON-NLS-1$
+ return new IJavaType[] { newValue(1f).getJavaType() };
+ }
+ break;
+ case 'd':
+ if (name.equals("double")) { //$NON-NLS-1$
+ return new IJavaType[] { newValue(1d).getJavaType() };
+ }
+ break;
}
return null;
}
IJavaType[] types = new IJavaType[classes.size()];
for (int i = 0; i < types.length; i++) {
- types[i] = JDIType.createType(this, (Type)classes.get(i));
+ types[i] = JDIType.createType(this, classes.get(i));
}
return types;
} catch (RuntimeException e) {
- targetRequestFailed(MessageFormat.format("{0} occurred while retrieving class for name {1}", new String[]{e.toString(), name}), e); //$NON-NLS-1$
+ targetRequestFailed(
+ MessageFormat
+ .format("{0} occurred while retrieving class for name {1}", e.toString(), name), e); //$NON-NLS-1$
// execution will not reach this line, as
// #targetRequestFailed will throw an exception
return null;
}
}
-
+
/**
* @see IJavaDebugTarget#newValue(boolean)
*/
@@ -1696,7 +1780,7 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
return null;
}
-
+
/**
* @see IJavaDebugTarget#newValue(byte)
*/
@@ -1726,87 +1810,87 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
*/
public IJavaValue newValue(double value) {
VirtualMachine vm = getVM();
- if (vm != null) {
+ if (vm != null) {
Value v = vm.mirrorOf(value);
return JDIValue.createValue(this, v);
}
return null;
}
-
+
/**
* @see IJavaDebugTarget#newValue(float)
*/
public IJavaValue newValue(float value) {
VirtualMachine vm = getVM();
- if (vm != null) {
+ if (vm != null) {
Value v = vm.mirrorOf(value);
return JDIValue.createValue(this, v);
}
return null;
}
-
+
/**
* @see IJavaDebugTarget#newValue(int)
*/
public IJavaValue newValue(int value) {
VirtualMachine vm = getVM();
- if (vm != null) {
+ if (vm != null) {
Value v = vm.mirrorOf(value);
return JDIValue.createValue(this, v);
}
return null;
}
-
+
/**
* @see IJavaDebugTarget#newValue(long)
*/
public IJavaValue newValue(long value) {
VirtualMachine vm = getVM();
- if (vm != null) {
+ if (vm != null) {
Value v = vm.mirrorOf(value);
return JDIValue.createValue(this, v);
}
return null;
- }
-
+ }
+
/**
* @see IJavaDebugTarget#newValue(short)
*/
public IJavaValue newValue(short value) {
VirtualMachine vm = getVM();
- if (vm != null) {
+ if (vm != null) {
Value v = vm.mirrorOf(value);
return JDIValue.createValue(this, v);
}
return null;
}
-
+
/**
* @see IJavaDebugTarget#newValue(String)
*/
public IJavaValue newValue(String value) {
VirtualMachine vm = getVM();
- if (vm != null) {
+ if (vm != null) {
Value v = vm.mirrorOf(value);
return JDIValue.createValue(this, v);
}
return null;
}
-
+
/**
* @see IJavaDebugTarget#nullValue()
*/
public IJavaValue nullValue() {
return JDIValue.createValue(this, null);
}
-
+
/**
* @see IJavaDebugTarget#voidValue()
*/
public IJavaValue voidValue() {
return new JDIVoidValue(this);
}
-
+
protected boolean isTerminating() {
return fTerminating;
}
@@ -1814,28 +1898,27 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
protected void setTerminating(boolean terminating) {
fTerminating = terminating;
}
-
+
/**
- * An event handler for thread start events. When a thread
- * starts in the target VM, a model thread is created.
+ * An event handler for thread start events. When a thread starts in the
+ * target VM, a model thread is created.
*/
class ThreadStartHandler implements IJDIEventListener {
-
+
protected EventRequest fRequest;
-
+
protected ThreadStartHandler() {
createRequest();
- }
-
+ }
+
/**
- * Creates and registers a request to handle all thread start
- * events
+ * Creates and registers a request to handle all thread start events
*/
protected void createRequest() {
EventRequestManager manager = getEventRequestManager();
- if (manager != null) {
+ if (manager != null) {
try {
- EventRequest req= manager.createThreadStartRequest();
+ EventRequest req = manager.createThreadStartRequest();
req.setSuspendPolicy(EventRequest.SUSPEND_NONE);
req.enable();
addJDIEventListener(this, req);
@@ -1847,19 +1930,21 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
/**
- * Creates a model thread for the underlying JDI thread
- * and adds it to the collection of threads for this
- * debug target. As a side effect of creating the thread,
- * a create event is fired for the model thread.
- * The event is ignored if the underlying thread is already
- * marked as collected.
+ * Creates a model thread for the underlying JDI thread and adds it to
+ * the collection of threads for this debug target. As a side effect of
+ * creating the thread, a create event is fired for the model thread.
+ * The event is ignored if the underlying thread is already marked as
+ * collected.
*
- * @param event a thread start event
- * @param target the target in which the thread started
+ * @param event
+ * a thread start event
+ * @param target
+ * the target in which the thread started
* @return <code>true</code> - the thread should be resumed
*/
- public boolean handleEvent(Event event, JDIDebugTarget target, boolean suspendVote, EventSet eventSet) {
- ThreadReference thread= ((ThreadStartEvent)event).thread();
+ public boolean handleEvent(Event event, JDIDebugTarget target,
+ boolean suspendVote, EventSet eventSet) {
+ ThreadReference thread = ((ThreadStartEvent) event).thread();
try {
if (thread.isCollected()) {
return false;
@@ -1871,7 +1956,7 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
} catch (TimeoutException e) {
// continue - attempt to create the thread
}
- JDIThread jdiThread= findThread(thread);
+ JDIThread jdiThread = findThread(thread);
if (jdiThread == null) {
jdiThread = createThread(thread);
if (jdiThread == null) {
@@ -1883,16 +1968,22 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
return !jdiThread.isSuspended();
}
-
- /* (non-Javadoc)
- * @see org.eclipse.jdt.internal.debug.core.IJDIEventListener#eventSetComplete(com.sun.jdi.event.Event, org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget, boolean)
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jdt.internal.debug.core.IJDIEventListener#eventSetComplete
+ * (com.sun.jdi.event.Event,
+ * org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget, boolean)
*/
- public void eventSetComplete(Event event, JDIDebugTarget target, boolean suspend, EventSet eventSet) {
+ public void eventSetComplete(Event event, JDIDebugTarget target,
+ boolean suspend, EventSet eventSet) {
// do nothing
}
-
+
/**
- * De-registers this event listener.
+ * unregisters this event listener.
*/
protected void deleteRequest() {
if (getRequest() != null) {
@@ -1900,7 +1991,7 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
setRequest(null);
}
}
-
+
protected EventRequest getRequest() {
return fRequest;
}
@@ -1908,50 +1999,51 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
protected void setRequest(EventRequest request) {
fRequest = request;
}
-}
-
+ }
+
/**
- * An event handler for thread death events. When a thread
- * dies in the target VM, its associated model thread is
- * removed from the debug target.
+ * An event handler for thread death events. When a thread dies in the
+ * target VM, its associated model thread is removed from the debug target.
*/
class ThreadDeathHandler implements IJDIEventListener {
-
+
protected ThreadDeathHandler() {
createRequest();
}
-
+
/**
- * Creates and registers a request to listen to thread
- * death events.
+ * Creates and registers a request to listen to thread death events.
*/
protected void createRequest() {
EventRequestManager manager = getEventRequestManager();
if (manager != null) {
try {
- EventRequest req= manager.createThreadDeathRequest();
+ EventRequest req = manager.createThreadDeathRequest();
req.setSuspendPolicy(EventRequest.SUSPEND_NONE);
req.enable();
- addJDIEventListener(this, req);
+ addJDIEventListener(this, req);
} catch (RuntimeException e) {
logError(e);
- }
+ }
}
}
-
+
/**
* Locates the model thread associated with the underlying JDI thread
- * that has terminated, and removes it from the collection of
- * threads belonging to this debug target. A terminate event is
- * fired for the model thread.
- *
- * @param event a thread death event
- * @param target the target in which the thread died
+ * that has terminated, and removes it from the collection of threads
+ * belonging to this debug target. A terminate event is fired for the
+ * model thread.
+ *
+ * @param event
+ * a thread death event
+ * @param target
+ * the target in which the thread died
* @return <code>true</code> - the thread should be resumed
*/
- public boolean handleEvent(Event event, JDIDebugTarget target, boolean suspendVote, EventSet eventSet) {
- ThreadReference ref= ((ThreadDeathEvent)event).thread();
- JDIThread thread= findThread(ref);
+ public boolean handleEvent(Event event, JDIDebugTarget target,
+ boolean suspendVote, EventSet eventSet) {
+ ThreadReference ref = ((ThreadDeathEvent) event).thread();
+ JDIThread thread = findThread(ref);
if (thread == null) {
// wait for any thread start event sets to complete processing
// see bug 272494
@@ -1960,8 +2052,8 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
} catch (OperationCanceledException e) {
} catch (InterruptedException e) {
}
- thread = target.findThread(ref);
- }
+ thread = target.findThread(ref);
+ }
if (thread != null) {
synchronized (fThreads) {
fThreads.remove(thread);
@@ -1970,16 +2062,22 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
return true;
}
-
- /* (non-Javadoc)
- * @see org.eclipse.jdt.internal.debug.core.IJDIEventListener#eventSetComplete(com.sun.jdi.event.Event, org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget, boolean)
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jdt.internal.debug.core.IJDIEventListener#eventSetComplete
+ * (com.sun.jdi.event.Event,
+ * org.eclipse.jdt.internal.debug.core.model.JDIDebugTarget, boolean)
*/
- public void eventSetComplete(Event event, JDIDebugTarget target, boolean suspend, EventSet eventSet) {
+ public void eventSetComplete(Event event, JDIDebugTarget target,
+ boolean suspend, EventSet eventSet) {
// do nothing
}
-
+
}
-
+
class CleanUpJob extends Job {
/**
@@ -1990,9 +2088,14 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
setSystem(true);
}
- /* (non-Javadoc)
- * @see org.eclipse.core.internal.jobs.InternalJob#run(org.eclipse.core.runtime.IProgressMonitor)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.core.internal.jobs.InternalJob#run(org.eclipse.core.runtime
+ * .IProgressMonitor)
*/
+ @Override
protected IStatus run(IProgressMonitor monitor) {
if (isAvailable()) {
if (fEventDispatcher != null) {
@@ -2003,23 +2106,28 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
return Status.OK_STATUS;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.core.runtime.jobs.Job#shouldRun()
*/
+ @Override
public boolean shouldRun() {
return isAvailable();
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.core.internal.jobs.InternalJob#shouldSchedule()
*/
+ @Override
public boolean shouldSchedule() {
return isAvailable();
}
-
-
+
}
-
+
protected ThreadStartHandler getThreadStartHandler() {
return fThreadStartHandler;
}
@@ -2027,7 +2135,7 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
protected void setThreadStartHandler(ThreadStartHandler threadStartHandler) {
fThreadStartHandler = threadStartHandler;
}
-
+
/**
* Java debug targets do not support storage retrieval.
*
@@ -2041,11 +2149,11 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
* @see IMemoryBlockRetrieval#getMemoryBlock(long, long)
*/
public IMemoryBlock getMemoryBlock(long startAddress, long length)
- throws DebugException {
- notSupported(JDIDebugModelMessages.JDIDebugTarget_does_not_support_storage_retrieval);
- // this line will not be executed as #notSupported(String)
- // will throw an exception
- return null;
+ throws DebugException {
+ notSupported(JDIDebugModelMessages.JDIDebugTarget_does_not_support_storage_retrieval);
+ // this line will not be executed as #notSupported(String)
+ // will throw an exception
+ return null;
}
/**
@@ -2056,7 +2164,8 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
return;
}
if (launch.equals(getLaunch())) {
- // This target has been de-registered, but it hasn't successfully terminated.
+ // This target has been unregistered, but it hasn't successfully
+ // terminated.
// Update internal state to reflect that it is disconnected
disconnected();
}
@@ -2067,24 +2176,24 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
*/
public void launchAdded(ILaunch launch) {
}
-
+
/**
* @see ILaunchListener#launchChanged(ILaunch)
*/
public void launchChanged(ILaunch launch) {
- }
+ }
/**
- * Sets whether the VM should be resumed on startup.
- * Has no effect if the VM is already running when
- * this target is created.
+ * Sets whether the VM should be resumed on startup. Has no effect if the VM
+ * is already running when this target is created.
*
- * @param resume whether the VM should be resumed on startup
+ * @param resume
+ * whether the VM should be resumed on startup
*/
private synchronized void setResumeOnStartup(boolean resume) {
fResumeOnStartup = resume;
}
-
+
/**
* Returns whether this VM should be resumed on startup.
*
@@ -2093,7 +2202,7 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
protected synchronized boolean isResumeOnStartup() {
return fResumeOnStartup;
}
-
+
/**
* @see IJavaDebugTarget#getStepFilters()
*/
@@ -2121,18 +2230,20 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
public boolean isFilterSynthetics() {
return (fStepFilterMask & FILTER_SYNTHETICS) > 0;
}
-
- /* (non-Javadoc)
- * Was added in 3.3, made API in 3.5
+
+ /*
+ * (non-Javadoc) Was added in 3.3, made API in 3.5
+ *
* @see org.eclipse.jdt.debug.core.IJavaDebugTarget#isStepThruFilters()
*/
public boolean isStepThruFilters() {
return (fStepFilterMask & STEP_THRU_FILTERS) > 0;
- }
+ }
/**
* @see IJavaDebugTarget#isStepFiltersEnabled()
*/
+ @Override
public boolean isStepFiltersEnabled() {
return (fStepFilterMask & STEP_FILTERS_ENABLED) > 0;
}
@@ -2144,7 +2255,8 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
if (filter) {
fStepFilterMask = fStepFilterMask | FILTER_CONSTRUCTORS;
} else {
- fStepFilterMask = fStepFilterMask & (FILTER_CONSTRUCTORS ^ XOR_MASK);
+ fStepFilterMask = fStepFilterMask
+ & (FILTER_CONSTRUCTORS ^ XOR_MASK);
}
}
@@ -2155,8 +2267,9 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
if (filter) {
fStepFilterMask = fStepFilterMask | FILTER_STATIC_INITIALIZERS;
} else {
- fStepFilterMask = fStepFilterMask & (FILTER_STATIC_INITIALIZERS ^ XOR_MASK);
- }
+ fStepFilterMask = fStepFilterMask
+ & (FILTER_STATIC_INITIALIZERS ^ XOR_MASK);
+ }
}
/**
@@ -2167,20 +2280,22 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
fStepFilterMask = fStepFilterMask | FILTER_SYNTHETICS;
} else {
fStepFilterMask = fStepFilterMask & (FILTER_SYNTHETICS ^ XOR_MASK);
- }
+ }
}
-
- /* (non-Javadoc)
- * Was added in 3.3, made API in 3.5
- * @see org.eclipse.jdt.debug.core.IJavaDebugTarget#setStepThruFilters(boolean)
+
+ /*
+ * (non-Javadoc) Was added in 3.3, made API in 3.5
+ *
+ * @see
+ * org.eclipse.jdt.debug.core.IJavaDebugTarget#setStepThruFilters(boolean)
*/
public void setStepThruFilters(boolean thru) {
if (thru) {
fStepFilterMask = fStepFilterMask | STEP_THRU_FILTERS;
} else {
fStepFilterMask = fStepFilterMask & (STEP_THRU_FILTERS ^ XOR_MASK);
- }
- }
+ }
+ }
public boolean isFilterGetters() {
return (fStepFilterMask & FILTER_GETTERS) > 0;
@@ -2191,9 +2306,9 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
fStepFilterMask = fStepFilterMask | FILTER_GETTERS;
} else {
fStepFilterMask = fStepFilterMask & (FILTER_GETTERS ^ XOR_MASK);
- }
+ }
}
-
+
public boolean isFilterSetters() {
return (fStepFilterMask & FILTER_SETTERS) > 0;
}
@@ -2203,9 +2318,9 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
fStepFilterMask = fStepFilterMask | FILTER_SETTERS;
} else {
fStepFilterMask = fStepFilterMask & (FILTER_SETTERS ^ XOR_MASK);
- }
+ }
}
-
+
/**
* @see IJavaDebugTarget#setStepFilters(String[])
*/
@@ -2220,8 +2335,9 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
if (enabled) {
fStepFilterMask = fStepFilterMask | STEP_FILTERS_ENABLED;
} else {
- fStepFilterMask = fStepFilterMask & (STEP_FILTERS_ENABLED ^ XOR_MASK);
- }
+ fStepFilterMask = fStepFilterMask
+ & (STEP_FILTERS_ENABLED ^ XOR_MASK);
+ }
}
/**
@@ -2230,10 +2346,11 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
public boolean hasThreads() {
return fThreads.size() > 0;
}
-
+
/**
* @see org.eclipse.debug.core.model.IDebugElement#getLaunch()
*/
+ @Override
public ILaunch getLaunch() {
return fLaunch;
}
@@ -2241,55 +2358,57 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
/**
* Sets the launch this target is contained in
*
- * @param launch the launch this target is contained in
+ * @param launch
+ * the launch this target is contained in
*/
private void setLaunch(ILaunch launch) {
fLaunch = launch;
}
-
+
/**
- * Returns the number of suspend events that have occurred in this
- * target.
+ * Returns the number of suspend events that have occurred in this target.
*
- * @return the number of suspend events that have occurred in this
- * target
+ * @return the number of suspend events that have occurred in this target
*/
protected int getSuspendCount() {
return fSuspendCount;
- }
-
+ }
+
/**
- * Increments the suspend counter for this target based on the reason
- * for the suspend event. The suspend count is not updated for
- * implicit evaluations.
+ * Increments the suspend counter for this target based on the reason for
+ * the suspend event. The suspend count is not updated for implicit
+ * evaluations.
*
- * @param eventDetail the reason for the suspend event
+ * @param eventDetail
+ * the reason for the suspend event
*/
protected void incrementSuspendCount(int eventDetail) {
- if (eventDetail != DebugEvent.EVALUATION_IMPLICIT) {
- fSuspendCount++;
- }
+ if (eventDetail != DebugEvent.EVALUATION_IMPLICIT) {
+ fSuspendCount++;
+ }
}
-
+
/**
- * Returns an evaluation engine for the given project, creating
- * one if necessary.
+ * Returns an evaluation engine for the given project, creating one if
+ * necessary.
*
- * @param project java project
+ * @param project
+ * java project
* @return evaluation engine
*/
public IAstEvaluationEngine getEvaluationEngine(IJavaProject project) {
if (fEngines == null) {
- fEngines = new HashMap(2);
+ fEngines = new HashMap<IJavaProject, IAstEvaluationEngine>(2);
}
- IAstEvaluationEngine engine = (IAstEvaluationEngine)fEngines.get(project);
+ IAstEvaluationEngine engine = fEngines
+ .get(project);
if (engine == null) {
engine = EvaluationManager.newAstEvaluationEngine(project, this);
fEngines.put(project, engine);
}
return engine;
}
-
+
/**
* @see org.eclipse.jdt.debug.core.IJavaDebugTarget#supportsMonitorInformation()
*/
@@ -2299,28 +2418,32 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
VirtualMachine vm = getVM();
if (vm != null) {
- return vm.canGetCurrentContendedMonitor() && vm.canGetMonitorInfo() && vm.canGetOwnedMonitorInfo();
+ return vm.canGetCurrentContendedMonitor() && vm.canGetMonitorInfo()
+ && vm.canGetOwnedMonitorInfo();
}
return false;
}
-
+
/**
* Sets whether or not this debug target is currently performing a hot code
* replace.
*/
public void setIsPerformingHotCodeReplace(boolean isPerformingHotCodeReplace) {
- fIsPerformingHotCodeReplace= isPerformingHotCodeReplace;
+ fIsPerformingHotCodeReplace = isPerformingHotCodeReplace;
}
-
+
/**
* @see IJavaDebugTarget#isPerformingHotCodeReplace()
*/
public boolean isPerformingHotCodeReplace() {
return fIsPerformingHotCodeReplace;
}
-
- /* (non-Javadoc)
- * @see org.eclipse.jdt.debug.core.IJavaDebugTarget#supportsAccessWatchpoints()
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jdt.debug.core.IJavaDebugTarget#supportsAccessWatchpoints()
*/
public boolean supportsAccessWatchpoints() {
VirtualMachine vm = getVM();
@@ -2330,8 +2453,12 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.jdt.debug.core.IJavaDebugTarget#supportsModificationWatchpoints()
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jdt.debug.core.IJavaDebugTarget#supportsModificationWatchpoints
+ * ()
*/
public boolean supportsModificationWatchpoints() {
VirtualMachine vm = getVM();
@@ -2347,19 +2474,21 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
public void setDefaultStratum(String stratum) {
VirtualMachine vm = getVM();
if (vm != null) {
- vm.setDefaultStratum(stratum);
+ vm.setDefaultStratum(stratum);
}
}
-
+
public String getDefaultStratum() {
VirtualMachine vm = getVM();
if (vm != null) {
- return vm.getDefaultStratum();
+ return vm.getDefaultStratum();
}
return null;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.debug.core.model.IStepFilters#supportsStepFilters()
*/
public boolean supportsStepFilters() {
@@ -2374,9 +2503,10 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
if (!isAvailable()) {
return;
}
- Iterator breakpoints= ((ArrayList)((ArrayList)getBreakpoints()).clone()).iterator();
+ Iterator<IBreakpoint> breakpoints = ((ArrayList<IBreakpoint>) ((ArrayList<IBreakpoint>) getBreakpoints())
+ .clone()).iterator();
while (breakpoints.hasNext()) {
- JavaBreakpoint breakpoint= (JavaBreakpoint) breakpoints.next();
+ JavaBreakpoint breakpoint = (JavaBreakpoint) breakpoints.next();
try {
if (enabled) {
breakpoint.addToTarget(this);
@@ -2389,67 +2519,79 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
}
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IDebugEventSetListener#handleDebugEvents(org.eclipse.debug.core.DebugEvent[])
- */
- public void handleDebugEvents(DebugEvent[] events) {
- if (events.length == 1) {
- DebugEvent event = events[0];
- if (event.getSource().equals(getProcess()) && event.getKind() == DebugEvent.TERMINATE) {
- // schedule a job to clean up the target in case we never get a terminate/disconnect
- // event from the VM
- int timeout = getRequestTimeout();
- if (timeout < 0) {
- timeout = 3000;
- }
- new CleanUpJob().schedule(timeout);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IDebugElement#getDebugTarget()
- */
- public IDebugTarget getDebugTarget() {
- return this;
- }
-
- /**
- * Adds the given thread group to the list of known thread groups. Also adds any parent thread groups
- * that have not already been added to the list.
- *
- * @param group thread group to add
- */
- void addThreadGroup(ThreadGroupReference group) {
- ThreadGroupReference currentGroup = group;
- while(currentGroup != null){
- synchronized (fGroups) {
- if (findThreadGroup(currentGroup) == null) {
- JDIThreadGroup modelGroup = new JDIThreadGroup(this, currentGroup);
- fGroups.add(modelGroup);
- currentGroup = currentGroup.parent();
- // TODO: create event?
- } else {
- currentGroup = null;
- }
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.debug.core.IDebugEventSetListener#handleDebugEvents(org.eclipse
+ * .debug.core.DebugEvent[])
+ */
+ public void handleDebugEvents(DebugEvent[] events) {
+ if (events.length == 1) {
+ DebugEvent event = events[0];
+ if (event.getSource().equals(getProcess())
+ && event.getKind() == DebugEvent.TERMINATE) {
+ // schedule a job to clean up the target in case we never get a
+ // terminate/disconnect
+ // event from the VM
+ int timeout = getRequestTimeout();
+ if (timeout < 0) {
+ timeout = 3000;
+ }
+ new CleanUpJob().schedule(timeout);
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.debug.core.model.IDebugElement#getDebugTarget()
+ */
+ @Override
+ public IDebugTarget getDebugTarget() {
+ return this;
+ }
+
+ /**
+ * Adds the given thread group to the list of known thread groups. Also adds
+ * any parent thread groups that have not already been added to the list.
+ *
+ * @param group
+ * thread group to add
+ */
+ void addThreadGroup(ThreadGroupReference group) {
+ ThreadGroupReference currentGroup = group;
+ while (currentGroup != null) {
+ synchronized (fGroups) {
+ if (findThreadGroup(currentGroup) == null) {
+ JDIThreadGroup modelGroup = new JDIThreadGroup(this,
+ currentGroup);
+ fGroups.add(modelGroup);
+ currentGroup = currentGroup.parent();
+ } else {
+ currentGroup = null;
+ }
+ }
+ }
+ }
+
+ JDIThreadGroup findThreadGroup(ThreadGroupReference group) {
+ synchronized (fGroups) {
+ Iterator<JDIThreadGroup> groups = fGroups.iterator();
+ while (groups.hasNext()) {
+ JDIThreadGroup modelGroup = groups.next();
+ if (modelGroup.getUnderlyingThreadGroup().equals(group)) {
+ return modelGroup;
+ }
}
- }
- }
-
- JDIThreadGroup findThreadGroup(ThreadGroupReference group) {
- synchronized (fGroups) {
- Iterator groups = fGroups.iterator();
- while (groups.hasNext()) {
- JDIThreadGroup modelGroup = (JDIThreadGroup) groups.next();
- if (modelGroup.getUnderlyingThreadGroup().equals(group)) {
- return modelGroup;
- }
- }
- }
- return null;
- }
-
- /* (non-Javadoc)
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.jdt.debug.core.IJavaDebugTarget#getThreadGroups()
*/
public IJavaThreadGroup[] getRootThreadGroups() throws DebugException {
@@ -2458,17 +2600,15 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
if (vm == null) {
return new IJavaThreadGroup[0];
}
- List groups = vm.topLevelThreadGroups();
- List modelGroups = new ArrayList(groups.size());
- Iterator iterator = groups.iterator();
- while (iterator.hasNext()) {
- ThreadGroupReference ref = (ThreadGroupReference) iterator.next();
+ List<ThreadGroupReference> groups = vm.topLevelThreadGroups();
+ List<JDIThreadGroup> modelGroups = new ArrayList<JDIThreadGroup>(groups.size());
+ for(ThreadGroupReference ref : groups) {
JDIThreadGroup group = findThreadGroup(ref);
if (group != null) {
modelGroups.add(group);
}
}
- return (IJavaThreadGroup[]) modelGroups.toArray(new IJavaThreadGroup[modelGroups.size()]);
+ return modelGroups.toArray(new IJavaThreadGroup[modelGroups.size()]);
} catch (VMDisconnectedException e) {
// if the VM has disconnected, there are no thread groups
return new IJavaThreadGroup[0];
@@ -2478,17 +2618,23 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
return null;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.jdt.debug.core.IJavaDebugTarget#getAllThreadGroups()
*/
public IJavaThreadGroup[] getAllThreadGroups() throws DebugException {
synchronized (fGroups) {
- return (IJavaThreadGroup[]) fGroups.toArray(new IJavaThreadGroup[fGroups.size()]);
+ return fGroups
+ .toArray(new IJavaThreadGroup[fGroups.size()]);
}
}
- /* (non-Javadoc)
- * @see org.eclipse.jdt.debug.core.IJavaDebugTarget#supportsInstanceRetrieval()
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jdt.debug.core.IJavaDebugTarget#supportsInstanceRetrieval()
*/
public boolean supportsInstanceRetrieval() {
VirtualMachine vm = getVM();
@@ -2497,91 +2643,112 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
return false;
}
-
+
/**
- * Sends a JDWP command to the back end and returns the JDWP reply packet as bytes.
- * This method creates an appropriate command header and packet id, before sending
- * to the back end.
+ * Sends a JDWP command to the back end and returns the JDWP reply packet as
+ * bytes. This method creates an appropriate command header and packet id,
+ * before sending to the back end.
*
- * @param commandSet command set identifier as defined by JDWP
- * @param commandId command identifier as defined by JDWP
- * @param data any bytes required for the command that follow the command header
- * or <code>null</code> for commands that have no data
+ * @param commandSet
+ * command set identifier as defined by JDWP
+ * @param commandId
+ * command identifier as defined by JDWP
+ * @param data
+ * any bytes required for the command that follow the command
+ * header or <code>null</code> for commands that have no data
* @return raw reply packet as bytes defined by JDWP
- * @exception IOException if an error occurs sending the packet or receiving the reply
+ * @exception IOException
+ * if an error occurs sending the packet or receiving the
+ * reply
* @since 3.3
*/
- public byte[] sendJDWPCommand(byte commandSet, byte commandId, byte[] data) throws IOException {
+ public byte[] sendJDWPCommand(byte commandSet, byte commandId, byte[] data)
+ throws IOException {
int command = (256 * commandSet) + commandId;
- JdwpReplyPacket reply = ((VirtualMachineImpl)getVM()).requestVM(command, data);
+ JdwpReplyPacket reply = ((VirtualMachineImpl) getVM()).requestVM(
+ command, data);
return reply.getPacketAsBytes();
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.jdt.debug.core.IJavaDebugTarget#supportsForceReturn()
*/
public boolean supportsForceReturn() {
VirtualMachine machine = getVM();
- if(machine == null) {
+ if (machine == null) {
return false;
}
return machine.canForceEarlyReturn();
}
- /* (non-Javadoc)
- * @see org.eclipse.jdt.debug.core.IJavaDebugTarget#supportsSelectiveGarbageCollection()
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jdt.debug.core.IJavaDebugTarget#
+ * supportsSelectiveGarbageCollection()
*/
public boolean supportsSelectiveGarbageCollection() {
return fSupportsDisableGC;
}
-
+
/**
- * Sets whether this target supports selectively disabling/enabling garbage collection
- * of specific objects.
+ * Sets whether this target supports selectively disabling/enabling garbage
+ * collection of specific objects.
*
- * @param enableGC whether this target supports selective GC
+ * @param enableGC
+ * whether this target supports selective GC
*/
void setSupportsSelectiveGarbageCollection(boolean enableGC) {
fSupportsDisableGC = enableGC;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.jdt.debug.core.IJavaDebugTarget#getVMName()
*/
public String getVMName() throws DebugException {
VirtualMachine vm = getVM();
if (vm == null) {
- requestFailed(JDIDebugModelMessages.JDIDebugTarget_2, new VMDisconnectedException());
+ requestFailed(JDIDebugModelMessages.JDIDebugTarget_2,
+ new VMDisconnectedException());
}
try {
return vm.name();
} catch (RuntimeException e) {
- targetRequestFailed(JDIDebugModelMessages.JDIDebugTarget_2, e);
- // execution will not reach this line, as
- // #targetRequestFailed will throw an exception
+ targetRequestFailed(JDIDebugModelMessages.JDIDebugTarget_2, e);
+ // execution will not reach this line, as
+ // #targetRequestFailed will throw an exception
return null;
}
}
-
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.jdt.debug.core.IJavaDebugTarget#getVersion()
*/
public String getVersion() throws DebugException {
VirtualMachine vm = getVM();
if (vm == null) {
- requestFailed(JDIDebugModelMessages.JDIDebugTarget_4, new VMDisconnectedException());
+ requestFailed(JDIDebugModelMessages.JDIDebugTarget_4,
+ new VMDisconnectedException());
}
try {
return vm.version();
} catch (RuntimeException e) {
- targetRequestFailed(JDIDebugModelMessages.JDIDebugTarget_4, e);
- // execution will not reach this line, as
- // #targetRequestFailed will throw an exception
+ targetRequestFailed(JDIDebugModelMessages.JDIDebugTarget_4, e);
+ // execution will not reach this line, as
+ // #targetRequestFailed will throw an exception
return null;
}
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.jdt.debug.core.IJavaDebugTarget#refreshState()
*/
public void refreshState() throws DebugException {
@@ -2590,28 +2757,31 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
}
boolean prevSuspend = isSuspended();
int running = 0;
- List toSuspend = new ArrayList();
- List toResume = new ArrayList();
- List toRefresh = new ArrayList();
- Iterator iterator = getThreadIterator();
+ List<JDIThread> toSuspend = new ArrayList<JDIThread>();
+ List<JDIThread> toResume = new ArrayList<JDIThread>();
+ List<JDIThread> toRefresh = new ArrayList<JDIThread>();
+ Iterator<JDIThread> iterator = getThreadIterator();
while (iterator.hasNext()) {
- JDIThread thread = (JDIThread) iterator.next();
- boolean modelSuspended = thread.isSuspended();
+ JDIThread thread = iterator.next();
+ boolean modelSuspended = thread.isSuspended();
ThreadReference reference = thread.getUnderlyingThread();
try {
boolean realSuspended = reference.isSuspended();
if (realSuspended) {
if (modelSuspended) {
- // Even if the model is suspended, it might be in a different location so refresh
+ // Even if the model is suspended, it might be in a
+ // different location so refresh
toRefresh.add(thread);
} else {
- // The thread is actually suspended, refresh frames and fire suspend event.
+ // The thread is actually suspended, refresh frames and
+ // fire suspend event.
toSuspend.add(thread);
}
} else {
running++;
if (modelSuspended) {
- // thread is actually running, model is suspended, resume model
+ // thread is actually running, model is suspended,
+ // resume model
toResume.add(thread);
}
// else both are running - OK
@@ -2620,7 +2790,8 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
requestFailed(e.getMessage(), e);
}
}
- // if the entire target changed state/fire events at target level, else fire thread events
+ // if the entire target changed state/fire events at target level, else
+ // fire thread events
boolean targetLevelEvent = false;
if (prevSuspend) {
if (running > 0) {
@@ -2636,17 +2807,17 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
if (targetLevelEvent) {
iterator = toSuspend.iterator();
while (iterator.hasNext()) {
- JDIThread thread = (JDIThread) iterator.next();
+ JDIThread thread = iterator.next();
thread.suspendedByVM();
}
iterator = toResume.iterator();
while (iterator.hasNext()) {
- JDIThread thread = (JDIThread) iterator.next();
+ JDIThread thread = iterator.next();
thread.resumedByVM();
}
iterator = toRefresh.iterator();
while (iterator.hasNext()) {
- JDIThread thread = (JDIThread) iterator.next();
+ JDIThread thread = iterator.next();
thread.preserveStackFrames();
}
if (running == 0) {
@@ -2663,31 +2834,35 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
} else {
iterator = toSuspend.iterator();
while (iterator.hasNext()) {
- JDIThread thread = (JDIThread) iterator.next();
+ JDIThread thread = iterator.next();
thread.preserveStackFrames();
thread.setRunning(false);
thread.fireSuspendEvent(DebugEvent.CLIENT_REQUEST);
}
iterator = toResume.iterator();
while (iterator.hasNext()) {
- JDIThread thread = (JDIThread) iterator.next();
+ JDIThread thread = iterator.next();
thread.setRunning(true);
thread.fireResumeEvent(DebugEvent.CLIENT_REQUEST);
}
iterator = toRefresh.iterator();
while (iterator.hasNext()) {
- JDIThread thread = (JDIThread) iterator.next();
+ JDIThread thread = iterator.next();
thread.preserveStackFrames();
thread.fireSuspendEvent(DebugEvent.CLIENT_REQUEST);
}
}
-
+
}
- /* (non-Javadoc)
- * @see org.eclipse.jdt.debug.core.IJavaDebugTarget#sendCommand(byte, byte, byte[])
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jdt.debug.core.IJavaDebugTarget#sendCommand(byte, byte,
+ * byte[])
*/
- public byte[] sendCommand(byte commandSet, byte commandId, byte[] data) throws DebugException {
+ public byte[] sendCommand(byte commandSet, byte commandId, byte[] data)
+ throws DebugException {
try {
return sendJDWPCommand(commandSet, commandId, data);
} catch (IOException e) {
@@ -2696,20 +2871,29 @@ public class JDIDebugTarget extends JDIDebugElement implements IJavaDebugTarget,
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.jdt.debug.core.IJavaDebugTarget#addHotCodeReplaceListener(org.eclipse.jdt.debug.core.IJavaHotCodeReplaceListener)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jdt.debug.core.IJavaDebugTarget#addHotCodeReplaceListener
+ * (org.eclipse.jdt.debug.core.IJavaHotCodeReplaceListener)
*/
public void addHotCodeReplaceListener(IJavaHotCodeReplaceListener listener) {
fHCRListeners.add(listener);
}
- /* (non-Javadoc)
- * @see org.eclipse.jdt.debug.core.IJavaDebugTarget#removeHotCodeReplaceListener(org.eclipse.jdt.debug.core.IJavaHotCodeReplaceListener)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jdt.debug.core.IJavaDebugTarget#removeHotCodeReplaceListener
+ * (org.eclipse.jdt.debug.core.IJavaHotCodeReplaceListener)
*/
- public void removeHotCodeReplaceListener(IJavaHotCodeReplaceListener listener) {
+ public void removeHotCodeReplaceListener(
+ IJavaHotCodeReplaceListener listener) {
fHCRListeners.remove(listener);
}
-
+
/**
* Returns an array of current hot code replace listeners.
*

Back to the top