All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.osgi.service.debug.DebugOptions Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 * Copyright (c) 2003, 2014 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.   
	 * 
	 * 

* Options are specified in the general form <Bundle-SymbolicName>/<option-path>. * For example, org.eclipse.core.runtime/debug *

* * @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 null value * is returned if no such option is found or if debug is not enabled. * *

* Options are specified * in the general form <Bundle-SymbolicName>/<option-path>. * For example, org.eclipse.core.runtime/debug *

* * @param option the name of the option to lookup * @return the value of the requested debug option or null */ 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. * *

* Options are specified * in the general form <Bundle-SymbolicName>/<option-path>. * For example, org.eclipse.core.runtime/debug *

* * @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. * *

* Options are specified * in the general form <Bundle-SymbolicName>/<option-path>. * For example, org.eclipse.core.runtime/debug *

* * @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 String. If no * options are set then an empty map is returned. *

* If debug is not enabled then the snapshot of the current disabled * values is returned. See {@link DebugOptions#setDebugEnabled(boolean)}. *

* @return a snapshot of the current options. * @since 3.6 */ public Map 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 IllegalArgumentException is thrown if any key or value * in the specified map is not of type String. *

* 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. *

* @param options the new set of options * @since 3.6 */ public abstract void setOptions(Map 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. *

* 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. *

* @param value If true, 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. * A null value is allowed which indicates * that System.out will be used * for trace messages. * * @param newFile The file to be used for tracing messages. * A null value is allowed. * @since 3.5 */ public abstract void setFile(File newFile); /** * Returns the trace file if it is set, otherwise null is returned. * A null value indicates that System.out is used * for trace messages. * * @return the trace file if it is set, otherwise null is returned. * @since 3.5 */ public abstract File getFile(); /** * Creates a new DebugTrace instance for the specified bundle symbolic name. * If a DebugTrace object has already been created for the specified symbolic * name then the existing DebugTrace object will be returned. * * The class name, method name, and line number of any callers to the DebugTrace * 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 DebugTrace. * @return A new or existing DebugTrace object for the specified plug-in ID * @since 3.5 */ public abstract DebugTrace newDebugTrace(String bundleSymbolicName); /** * Create a new DebugTrace instance for the specified bundle symbolic name. * If a DebugTrace object has already been created for the specified symbolic * name then the existing DebugTrace object will be returned. * * The class name, method name, and line number of any callers to the DebugTrace * 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 DebugTrace. * @param traceEntryClass The class that is being used to abstract tracing calls for a bundle. * @return A new or existing DebugTrace object for the specified plug-in ID * @since 3.5 */ public abstract DebugTrace newDebugTrace(String bundleSymbolicName, Class traceEntryClass); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy