| /******************************************************************************* |
| * Copyright (c) 2003, 2010 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.osgi.service.debug; |
| |
| import java.io.File; |
| import java.util.Map; |
| |
| /** |
| * Used to get debug options settings and creating a new {@link DebugTrace} instance for |
| * a bundle to use for dynamic tracing. |
| * |
| * @noimplement This interface is not intended to be implemented by clients. |
| * @noextend This interface is not intended to be extended by clients. |
| * @since 3.1 |
| */ |
| public interface DebugOptions { |
| /** |
| * The service property (named "listener.symbolic.name") which specifies |
| * the bundle symbolic name of a {@link DebugOptionsListener} service. |
| * |
| * @since 3.5 |
| */ |
| public static String LISTENER_SYMBOLICNAME = "listener.symbolic.name"; //$NON-NLS-1$ |
| |
| /** |
| * Returns the identified option as a boolean value. The specified |
| * defaultValue is returned if no such option is found or if debug is not enabled. |
| * |
| * <p> |
| * Options are specified in the general form <i><Bundle-SymbolicName>/<option-path></i>. |
| * For example, <code>org.eclipse.core.runtime/debug</code> |
| * </p> |
| * |
| * @param option the name of the option to lookup |
| * @param defaultValue the value to return if no such option is found |
| * @return the value of the requested debug option or the |
| * defaultValue if no such option is found. |
| */ |
| public abstract boolean getBooleanOption(String option, boolean defaultValue); |
| |
| /** |
| * Returns the identified option. A <code>null</code> value |
| * is returned if no such option is found or if debug is not enabled. |
| * |
| * <p> |
| * Options are specified |
| * in the general form <i><Bundle-SymbolicName>/<option-path></i>. |
| * For example, <code>org.eclipse.core.runtime/debug</code> |
| *</p> |
| * |
| * @param option the name of the option to lookup |
| * @return the value of the requested debug option or <code>null</code> |
| */ |
| public abstract String getOption(String option); |
| |
| /** |
| * Returns the identified option. The specified defaultValue is |
| * returned if no such option is found or if debug is not enabled. |
| * |
| * <p> |
| * Options are specified |
| * in the general form <i><Bundle-SymbolicName>/<option-path></i>. |
| * For example, <code>org.eclipse.core.runtime/debug</code> |
| * </p> |
| * |
| * @param option the name of the option to lookup |
| * @param defaultValue the value to return if no such option is found |
| * @return the value of the requested debug option or the |
| * defaultValue if no such option is found. |
| */ |
| public abstract String getOption(String option, String defaultValue); |
| |
| /** |
| * Returns the identified option as an int value. The specified |
| * defaultValue is returned if no such option is found or if a |
| * NumberFormatException is thrown while converting the option value |
| * to an integer or if debug is not enabled. |
| * |
| * <p> |
| * Options are specified |
| * in the general form <i><Bundle-SymbolicName>/<option-path></i>. |
| * For example, <code>org.eclipse.core.runtime/debug</code> |
| * </p> |
| * |
| * @param option the name of the option to lookup |
| * @param defaultValue the value to return if no such option is found |
| * @return the value of the requested debug option or the |
| * defaultValue if no such option is found. |
| */ |
| public abstract int getIntegerOption(String option, int defaultValue); |
| |
| /** |
| * Returns a snapshot of the current options. All |
| * keys and values are of type <code>String</code>. If no |
| * options are set then an empty map is returned. |
| * <p> |
| * If debug is not enabled then the snapshot of the current disabled |
| * values is returned. See {@link DebugOptions#setDebugEnabled(boolean)}. |
| * </p> |
| * @return a snapshot of the current options. |
| * @since 3.6 |
| */ |
| public Map /*<String, String>*/getOptions(); |
| |
| /** |
| * Sets the identified option to the identified value. If debug is |
| * not enabled then the specified option is not changed. |
| * @param option the name of the option to set |
| * @param value the value of the option to set |
| */ |
| public abstract void setOption(String option, String value); |
| |
| /** |
| * Sets the current option key/value pairs to the specified options. |
| * The specified map replaces all keys and values of the current debug options. |
| * An <code>IllegalArgumentException</code> is thrown if any key or value |
| * in the specified map is not of type <code>String</code>. |
| * <p> |
| * If debug is not enabled then the specified options are saved as |
| * the disabled values and no notifications will be sent. |
| * See {@link DebugOptions#setDebugEnabled(boolean)}. |
| * If debug is enabled then notifications will be sent to the |
| * listeners which have options that have been changed, added or removed. |
| * </p> |
| |
| * @param options the new set of options |
| * @since 3.6 |
| */ |
| public abstract void setOptions(Map /*<String, String>*/options); |
| |
| /** |
| * Removes the identified option. If debug is not enabled then |
| * the specified option is not removed. |
| * @param option the name of the option to remove |
| * @since 3.5 |
| */ |
| public abstract void removeOption(String option); |
| |
| /** |
| * Returns true if debugging/tracing is currently enabled. |
| * @return true if debugging/tracing is currently enabled; Otherwise false is returned. |
| * @since 3.5 |
| */ |
| public abstract boolean isDebugEnabled(); |
| |
| /** |
| * Enables or disables debugging/tracing. |
| * <p> |
| * When debug is disabled all debug options are unset. |
| * When disabling debug the current debug option values are |
| * stored in memory as disabled values. If debug is re-enabled the |
| * disabled values will be set back and enabled. The disabled values |
| * are only stored in memory and if the framework is restarted then |
| * the disabled option values will be lost. |
| * </p> |
| * @param value If <code>true</code>, debug is enabled, otherwise |
| * debug is disabled. |
| * @since 3.5 |
| */ |
| public abstract void setDebugEnabled(boolean value); |
| |
| /** |
| * Sets the current file used to trace messages to. |
| * |
| * @param newFile The file to be used for tracing messages. |
| * @since 3.5 |
| */ |
| public abstract void setFile(File newFile); |
| |
| /** |
| * Returns the trace file if it is set, otherwise <code>null</code> is returned. |
| * |
| * @return the trace file if it is set, otherwise <code>null</code> is returned. |
| * @since 3.5 |
| */ |
| public abstract File getFile(); |
| |
| /** |
| * Creates a new <code>DebugTrace</code> instance for the specified bundle symbolic name. |
| * If a <code>DebugTrace</code> object has already been created for the specified symbolic |
| * name then the existing <code>DebugTrace</code> object will be returned. |
| * |
| * The class name, method name, and line number of any callers to the <code>DebugTrace</code> |
| * API will automatically be determined by parsing the stack trace of the executing thread. |
| * These attributes will be set based on the first caller of this API. |
| * |
| * @param bundleSymbolicName The symbolic name of the bundle that is requesting a |
| * new instance of a <code>DebugTrace</code>. |
| * @return A new or existing <code>DebugTrace</code> object for the specified plug-in ID |
| * @since 3.5 |
| */ |
| public abstract DebugTrace newDebugTrace(String bundleSymbolicName); |
| |
| /** |
| * Create a new <code>DebugTrace</code> instance for the specified bundle symbolic name. |
| * If a <code>DebugTrace</code> object has already been created for the specified symbolic |
| * name then the existing <code>DebugTrace</code> object will be returned. |
| * |
| * The class name, method name, and line number of any callers to the <code>DebugTrace</code> |
| * API will automatically be determined by parsing the stack trace of the executing thread. |
| * The values of these attributes will be based on the last invocation to the specified traceEntryClass |
| * found in the parsed stack trace. |
| * |
| * @param bundleSymbolicName The symbolic name of the bundle that is requesting a |
| * new instance of a <code>DebugTrace</code>. |
| * @param traceEntryClass The class that is being used to abstract tracing calls for a bundle. |
| * @return A new or existing <code>DebugTrace</code> object for the specified plug-in ID |
| * @since 3.5 |
| */ |
| public abstract DebugTrace newDebugTrace(String bundleSymbolicName, Class traceEntryClass); |
| } |