diff options
Diffstat (limited to 'bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/next/internal/debug/Debug.java')
-rw-r--r-- | bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/next/internal/debug/Debug.java | 370 |
1 files changed, 370 insertions, 0 deletions
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/next/internal/debug/Debug.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/next/internal/debug/Debug.java new file mode 100644 index 000000000..89031bffe --- /dev/null +++ b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/next/internal/debug/Debug.java @@ -0,0 +1,370 @@ +/******************************************************************************* + * 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.next.internal.debug; + +import java.io.PrintStream; +import java.lang.reflect.*; +import org.eclipse.osgi.internal.framework.EquinoxContainer; +import org.eclipse.osgi.service.debug.DebugOptions; + +/** + * This class has debug constants which can be used by the Framework implementation + * and Adaptor implementations + * @since 3.1 + */ +public class Debug { + /** + * Base debug option key (org.eclispe.osgi). + */ + public static final String ECLIPSE_OSGI = EquinoxContainer.NAME; + /** + * General Debug option key. + */ + public static final String OPTION_DEBUG_GENERAL = ECLIPSE_OSGI + "/debug"; //$NON-NLS-1$ + /** + * Bundle time Debug option key. + */ + // TODO remove this or use it somewhere + public static final String OPTION_DEBUG_BUNDLE_TIME = ECLIPSE_OSGI + "/debug/bundleTime"; //$NON-NLS-1$ + /** + * Loader Debug option key. + */ + public static final String OPTION_DEBUG_LOADER = ECLIPSE_OSGI + "/debug/loader"; //$NON-NLS-1$ + /** + * Events Debug option key. + */ + public static final String OPTION_DEBUG_EVENTS = ECLIPSE_OSGI + "/debug/events"; //$NON-NLS-1$ + /** + * Services Debug option key. + */ + public static final String OPTION_DEBUG_SERVICES = ECLIPSE_OSGI + "/debug/services"; //$NON-NLS-1$ + /** + * Services Debug option key. + */ + public static final String OPTION_DEBUG_HOOKS = ECLIPSE_OSGI + "/debug/hooks"; //$NON-NLS-1$ + /** + * Packages Debug option key. + */ + public static final String OPTION_DEBUG_PACKAGES = ECLIPSE_OSGI + "/debug/packages"; //$NON-NLS-1$ + /** + * Manifest Debug option key. + */ + public static final String OPTION_DEBUG_MANIFEST = ECLIPSE_OSGI + "/debug/manifest"; //$NON-NLS-1$ + /** + * Filter Debug option key. + */ + public static final String OPTION_DEBUG_FILTER = ECLIPSE_OSGI + "/debug/filter"; //$NON-NLS-1$ + /** + * Security Debug option key. + */ + public static final String OPTION_DEBUG_SECURITY = ECLIPSE_OSGI + "/debug/security"; //$NON-NLS-1$ + /** + * Start level Debug option key. + */ + public static final String OPTION_DEBUG_STARTLEVEL = ECLIPSE_OSGI + "/debug/startlevel"; //$NON-NLS-1$ + /** + * PackageAdmin Debug option key. + */ + public static final String OPTION_DEBUG_PACKAGEADMIN = ECLIPSE_OSGI + "/debug/packageadmin"; //$NON-NLS-1$ + /** + * PackageAdmin timing Debug option key. + */ + public static final String OPTION_DEBUG_PACKAGEADMIN_TIMING = ECLIPSE_OSGI + "/debug/packageadmin/timing"; //$NON-NLS-1$ + /** + * Monitor activation Debug option key. + */ + public static final String OPTION_MONITOR_ACTIVATION = ECLIPSE_OSGI + "/monitor/activation"; //$NON-NLS-1$ + /** + * Message bundles Debug option key. + */ + public static final String OPTION_DEBUG_MESSAGE_BUNDLES = ECLIPSE_OSGI + "/debug/messageBundles"; //$NON-NLS-1$ + + public static final String OPTION_DEBUG_LOCATION = ECLIPSE_OSGI + "/debug/location"; //$NON-NLS-1$ + + /** + * Indicates if tracing is enabled + */ + public boolean DEBUG_ENABLED = false; + + /** + * General debug flag. + */ + public boolean DEBUG_GENERAL = false; // "debug" + /** + * Bundle time debug flag. + */ + public boolean DEBUG_BUNDLE_TIME = false; //"debug.bundleTime" + /** + * Loader debug flag. + */ + public boolean DEBUG_LOADER = false; // "debug.loader" + /** + * Events debug flag. + */ + public boolean DEBUG_EVENTS = false; // "debug.events" + /** + * Services debug flag. + */ + public boolean DEBUG_SERVICES = false; // "debug.services" + + /** + * Hooks debug flag. + */ + public boolean DEBUG_HOOKS = false; // "debug.hooks" + /** + * Packages debug flag. + */ + // TODO remove this or use it somewhere + public boolean DEBUG_PACKAGES = false; // "debug.packages" + /** + * Manifest debug flag. + */ + public boolean DEBUG_MANIFEST = false; // "debug.manifest" + /** + * Filter debug flag. + */ + public boolean DEBUG_FILTER = false; // "debug.filter" + /** + * Security debug flag. + */ + public boolean DEBUG_SECURITY = false; // "debug.security" + /** + * Start level debug flag. + */ + public boolean DEBUG_STARTLEVEL = false; // "debug.startlevel" + /** + * PackageAdmin debug flag. + */ + public boolean DEBUG_PACKAGEADMIN = false; // "debug.packageadmin" + /** + * PackageAdmin timing debug flag. + */ + // TODO remove this or use it somewhere + public boolean DEBUG_PACKAGEADMIN_TIMING = false; //"debug.packageadmin/timing" + /** + * Message debug flag. + */ + public boolean DEBUG_MESSAGE_BUNDLES = false; //"/debug/messageBundles" + /** + * Monitor activation debug flag. + */ + public boolean MONITOR_ACTIVATION = false; // "monitor/bundles" + + public boolean DEBUG_LOCATION = false; // debug/location + + public Debug(DebugOptions dbgOptions) { + if (dbgOptions == null) { + return; + } + DEBUG_ENABLED = dbgOptions.isDebugEnabled(); + DEBUG_GENERAL = dbgOptions.getBooleanOption(OPTION_DEBUG_GENERAL, false); + DEBUG_BUNDLE_TIME = dbgOptions.getBooleanOption(OPTION_DEBUG_BUNDLE_TIME, false) || dbgOptions.getBooleanOption("org.eclipse.core.runtime/timing/startup", false); //$NON-NLS-1$ + DEBUG_LOADER = dbgOptions.getBooleanOption(OPTION_DEBUG_LOADER, false); + DEBUG_EVENTS = dbgOptions.getBooleanOption(OPTION_DEBUG_EVENTS, false); + DEBUG_SERVICES = dbgOptions.getBooleanOption(OPTION_DEBUG_SERVICES, false); + DEBUG_HOOKS = dbgOptions.getBooleanOption(OPTION_DEBUG_HOOKS, false); + DEBUG_PACKAGES = dbgOptions.getBooleanOption(OPTION_DEBUG_PACKAGES, false); + DEBUG_MANIFEST = dbgOptions.getBooleanOption(OPTION_DEBUG_MANIFEST, false); + DEBUG_FILTER = dbgOptions.getBooleanOption(OPTION_DEBUG_FILTER, false); + DEBUG_SECURITY = dbgOptions.getBooleanOption(OPTION_DEBUG_SECURITY, false); + DEBUG_STARTLEVEL = dbgOptions.getBooleanOption(OPTION_DEBUG_STARTLEVEL, false); + DEBUG_PACKAGEADMIN = dbgOptions.getBooleanOption(OPTION_DEBUG_PACKAGEADMIN, false); + DEBUG_PACKAGEADMIN_TIMING = dbgOptions.getBooleanOption(OPTION_DEBUG_PACKAGEADMIN_TIMING, false) || dbgOptions.getBooleanOption("org.eclipse.core.runtime/debug", false); //$NON-NLS-1$ + DEBUG_MESSAGE_BUNDLES = dbgOptions.getBooleanOption(OPTION_DEBUG_MESSAGE_BUNDLES, false); + MONITOR_ACTIVATION = dbgOptions.getBooleanOption(OPTION_MONITOR_ACTIVATION, false); + DEBUG_LOCATION = dbgOptions.getBooleanOption(OPTION_DEBUG_LOCATION, false); + } + + /** + * The PrintStream to print debug messages to. + */ + public static PrintStream out = System.out; + + /** + * Prints x to the PrintStream + * @param x + */ + public static void print(boolean x) { + out.print(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void print(char x) { + out.print(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void print(int x) { + out.print(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void print(long x) { + out.print(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void print(float x) { + out.print(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void print(double x) { + out.print(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void print(char x[]) { + out.print(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void print(String x) { + out.print(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void print(Object x) { + out.print(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void println(boolean x) { + out.println(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void println(char x) { + out.println(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void println(int x) { + out.println(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void println(long x) { + out.println(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void println(float x) { + out.println(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void println(double x) { + out.println(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void println(char x[]) { + out.println(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void println(String x) { + out.println(x); + } + + /** + * Prints x to the PrintStream + * @param x + */ + public static void println(Object x) { + out.println(x); + } + + /** + * Prints t to the PrintStream + * @param t + */ + public static void printStackTrace(Throwable t) { + if (t == null) + return; + t.printStackTrace(out); + + Method[] methods = t.getClass().getMethods(); + + int size = methods.length; + Class<?> throwable = Throwable.class; + + for (int i = 0; i < size; i++) { + Method method = methods[i]; + + if (Modifier.isPublic(method.getModifiers()) && method.getName().startsWith("get") && throwable.isAssignableFrom(method.getReturnType()) && (method.getParameterTypes().length == 0)) { //$NON-NLS-1$ + try { + Throwable nested = (Throwable) method.invoke(t, (Object[]) null); + + if ((nested != null) && (nested != t)) { + out.println("Nested Exception:"); //$NON-NLS-1$ + printStackTrace(nested); + } + } catch (IllegalAccessException e) { + // nothing + } catch (InvocationTargetException e) { + // nothing + } + } + } + } + +} |