| /******************************************************************************* |
| * Copyright (c) 2000, 2005 IBM Corporation and others. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.debug.core; |
| |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IStatus; |
| |
| /** |
| * A status handler registers to handle a specific status - error or otherwise. |
| * Provides a mechanism for separating core (headless) function from UI |
| * interaction. The debug plug-in provides a status handlers extension point, |
| * against which handlers can register for specific status codes - identified by |
| * plug-in identifier and plug-in specific status code. The interaction between |
| * an object requiring a status handler (source), and the status handler is |
| * defined by the source and handler. |
| * <p> |
| * For example, a launch configuration delegate might encounter a timeout while |
| * launching an application. In this case the delegate could abort or, via the |
| * use of a status handler, prompt the user to continue. This allows the |
| * launcher to be implemented in a plug-in that does not require UI support, and |
| * allows another (UI) plug-in to register a handler. |
| * </p> |
| * <p> |
| * A status handler extension is defined in <code>plugin.xml</code>. Following |
| * is an example definition of a status handler extension. |
| * </p> |
| * |
| * <pre> |
| * <extension point="org.eclipse.debug.core.statusHandlers"> |
| * <statusHandler |
| * id="com.example.ExampleIdentifier" |
| * class="com.example.ExampleStatusHandler" |
| * plugin="com.example.ExamplePluginId" |
| * code="123"> |
| * </statusHandler> |
| * </extension> |
| * </pre> |
| * |
| * The attributes are specified as follows: |
| * <ul> |
| * <li><code>id</code> specifies a unique identifier for this status |
| * handler.</li> |
| * <li><code>class</code> specifies the fully qualified name of the Java class |
| * that implements <code>IStatusHandler</code>.</li> |
| * <li><code>plugin</code> plug-in identifier that corresponds to the plug-in of |
| * the status this handler is registered for (i.e. |
| * <code>IStatus.getPlugin()</code>).</li> |
| * <li><code>code</code> specifies the status code this handler is registered |
| * for.</li> |
| * </ul> |
| * <p> |
| * Clients may implement this interface. |
| * </p> |
| * |
| * @see DebugPlugin#getStatusHandler(IStatus) |
| * @since 2.0 |
| */ |
| |
| public interface IStatusHandler { |
| |
| /** |
| * Notifies this status handler that the given status has been |
| * generated by the specified source object and requires resolution. |
| * |
| * @param status the status to handle |
| * @param source the object delegating to this status handler |
| * the given status |
| * @return an object representing the resolution of the status |
| * @exception CoreException if unable to resolve the status |
| */ |
| Object handleStatus(IStatus status, Object source) throws CoreException; |
| } |