From eb7350b546c023e53c6c422d4660bb04943d2c3d Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Wed, 25 Sep 2002 15:14:03 +0000 Subject: [PATCH] Implementation of error handling. --- .../eclipse/cdt/debug/core/CDebugModel.java | 24 +++++-- .../cdt/debug/internal/core/CDebugUtils.java | 67 +++++++++++++++++++ debug/org.eclipse.cdt.debug.ui/plugin.xml | 21 ++++++ .../internal/ui/ConfirmStatusHandler.java | 28 ++++++++ .../debug/internal/ui/ErrorStatusHandler.java | 28 ++++++++ .../ui/ICDebugUIInternalConstants.java | 7 ++ .../debug/internal/ui/InfoStatusHandler.java | 28 ++++++++ 7 files changed, 199 insertions(+), 4 deletions(-) create mode 100644 debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ConfirmStatusHandler.java create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ErrorStatusHandler.java create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/InfoStatusHandler.java diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugModel.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugModel.java index b37b50c113e..ba0479080f2 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugModel.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugModel.java @@ -9,9 +9,11 @@ package org.eclipse.cdt.debug.core; import java.util.HashMap; import org.eclipse.cdt.debug.core.cdi.CDIException; +import org.eclipse.cdt.debug.core.cdi.ICDIConfiguration; import org.eclipse.cdt.debug.core.cdi.ICDILocation; import org.eclipse.cdt.debug.core.cdi.model.ICDIExpression; import org.eclipse.cdt.debug.core.cdi.model.ICDITarget; +import org.eclipse.cdt.debug.internal.core.CDebugUtils; import org.eclipse.cdt.debug.internal.core.breakpoints.CLineBreakpoint; import org.eclipse.cdt.debug.internal.core.breakpoints.CWatchpoint; import org.eclipse.cdt.debug.internal.core.model.CDebugTarget; @@ -113,14 +115,28 @@ public class CDebugModel catch( CoreException e ) { CDebugCorePlugin.log( e ); + // throw DebugException } - - if ( stopInMain ) + + ICDIConfiguration config = cdiTarget.getSession().getConfiguration(); + + if ( config.supportsBreakpoints() && stopInMain ) { ICDILocation location = cdiTarget.getSession().getBreakpointManager().createLocation( "", "main", 0 ); - ((CDebugTarget)target[0]).setInternalTemporaryBreakpoint( location ); + try + { + ((CDebugTarget)target[0]).setInternalTemporaryBreakpoint( location ); + } + catch( DebugException e ) + { + CDebugUtils.confirm( e.getStatus(), e ); + } + } + + if ( config.supportsResume() ) + { + target[0].resume(); } - target[0].resume(); return target[0]; } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java new file mode 100644 index 00000000000..256cdcbc6f3 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java @@ -0,0 +1,67 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ +package org.eclipse.cdt.debug.internal.core; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.debug.core.DebugPlugin; +import org.eclipse.debug.core.IStatusHandler; + +/** + * + * Enter type comment. + * + * @since Sep 25, 2002 + */ +public class CDebugUtils +{ + public static boolean confirm( IStatus status, Object source ) + { + Boolean result = new Boolean( false ); + IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler( status ); + if ( handler != null ) + { + try + { + result = (Boolean)handler.handleStatus( status, source ); + } + catch( CoreException e ) + { + } + } + return result.booleanValue(); + } + + public static void info( IStatus status, Object source ) + { + IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler( status ); + if ( handler != null ) + { + try + { + handler.handleStatus( status, source ); + } + catch( CoreException e ) + { + } + } + } + + public static void error( IStatus status, Object source ) + { + IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler( status ); + if ( handler != null ) + { + try + { + handler.handleStatus( status, source ); + } + catch( CoreException e ) + { + } + } + } +} diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml index c2d4a95aa98..6f235dcb4f3 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.xml +++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml @@ -333,5 +333,26 @@ id="org.eclipse.cdt.debug.ui.cSourceLocator"> + + + + + + + + diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ConfirmStatusHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ConfirmStatusHandler.java new file mode 100644 index 00000000000..a9208e9f8cf --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ConfirmStatusHandler.java @@ -0,0 +1,28 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ +package org.eclipse.cdt.debug.internal.ui; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.debug.core.IStatusHandler; + +/** + * + * Enter type comment. + * + * @since Sep 25, 2002 + */ +public class ConfirmStatusHandler implements IStatusHandler +{ + + /* (non-Javadoc) + * @see org.eclipse.debug.core.IStatusHandler#handleStatus(IStatus, Object) + */ + public Object handleStatus( IStatus status, Object source ) throws CoreException + { + return null; + } +} diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ErrorStatusHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ErrorStatusHandler.java new file mode 100644 index 00000000000..4e20be4818a --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ErrorStatusHandler.java @@ -0,0 +1,28 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ +package org.eclipse.cdt.debug.internal.ui; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.debug.core.IStatusHandler; + +/** + * + * Enter type comment. + * + * @since Sep 25, 2002 + */ +public class ErrorStatusHandler implements IStatusHandler +{ + + /* (non-Javadoc) + * @see org.eclipse.debug.core.IStatusHandler#handleStatus(IStatus, Object) + */ + public Object handleStatus( IStatus status, Object source ) throws CoreException + { + return null; + } +} diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ICDebugUIInternalConstants.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ICDebugUIInternalConstants.java index e3934ee48fd..782079d15c9 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ICDebugUIInternalConstants.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ICDebugUIInternalConstants.java @@ -14,6 +14,13 @@ package org.eclipse.cdt.debug.internal.ui; */ public interface ICDebugUIInternalConstants { + /* + * Status handler codes. + */ + public static final int STATUS_CODE_CONFIRM = 10000; + public static final int STATUS_CODE_INFO = 10001; + public static final int STATUS_CODE_ERROR = 10002; + /* * Memory view constants. */ diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/InfoStatusHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/InfoStatusHandler.java new file mode 100644 index 00000000000..4966cf2d976 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/InfoStatusHandler.java @@ -0,0 +1,28 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ +package org.eclipse.cdt.debug.internal.ui; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.debug.core.IStatusHandler; + +/** + * + * Enter type comment. + * + * @since Sep 25, 2002 + */ +public class InfoStatusHandler implements IStatusHandler +{ + + /* (non-Javadoc) + * @see org.eclipse.debug.core.IStatusHandler#handleStatus(IStatus, Object) + */ + public Object handleStatus( IStatus status, Object source ) throws CoreException + { + return null; + } +}