| /******************************************************************************* |
| * Copyright (c) 2004, 2011 Tasktop Technologies 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: |
| * Tasktop Technologies - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.mylyn.commons.core; |
| |
| import java.io.PrintWriter; |
| import java.io.StringWriter; |
| import java.util.Calendar; |
| |
| import org.eclipse.core.internal.runtime.InternalPlatform; |
| import org.eclipse.core.internal.runtime.PlatformActivator; |
| import org.eclipse.core.runtime.ILog; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.mylyn.internal.commons.core.ErrorReporterManager; |
| |
| /** |
| * @author Mik Kersten |
| * @author Shawn Minto |
| * @author Steffen Pingel |
| * @since 3.0 |
| * @noinstantiate This class is not intended to be instantiated by clients. |
| */ |
| public class StatusHandler { |
| |
| private static ErrorReporterManager errorReporterManager; |
| |
| /** |
| * Logs <code>status</code> to this bundle's log if a platform is running. Does nothing if no platform is running. |
| * Plug-ins that require running in Eclipse are encouraged to use their plug-in log. |
| * |
| * @param status |
| * status to log |
| * @since 3.0 |
| */ |
| public static void log(IStatus status) { |
| if (InternalPlatform.getDefault() != null && PlatformActivator.getContext() != null) { |
| ILog log = InternalPlatform.getDefault().getLog(PlatformActivator.getContext().getBundle()); |
| if (log != null) { |
| log.log(status); |
| } |
| } |
| if (CoreUtil.TEST_MODE) { |
| dumpErrorToConsole(status); |
| } |
| } |
| |
| /** |
| * Logs <code>status</code> to this bundle's log if a platform is running. Forwards <code>status</code> to |
| * registered status handlers. |
| * <p> |
| * Listeners should not block. |
| * </p> |
| * |
| * @see #log(IStatus) |
| * @since 3.0 |
| * @deprecated |
| */ |
| @Deprecated |
| public static void fail(IStatus status) { |
| log(status); |
| getErrorReporterManager().fail(status); |
| } |
| |
| private static synchronized ErrorReporterManager getErrorReporterManager() { |
| if (errorReporterManager == null) { |
| errorReporterManager = new ErrorReporterManager(); |
| } |
| return errorReporterManager; |
| } |
| |
| private static void dumpErrorToConsole(IStatus status) { |
| StringBuilder sb = new StringBuilder(); |
| sb.append("["); //$NON-NLS-1$ |
| Calendar now = Calendar.getInstance(); |
| sb.append(DateUtil.getIsoFormattedDateTime(now)); |
| sb.append("] "); //$NON-NLS-1$ |
| sb.append(status.toString() + ", "); //$NON-NLS-1$ |
| if (status.getException() != null) { |
| sb.append("Exception:\n"); //$NON-NLS-1$ |
| sb.append(printStrackTrace(status.getException())); |
| } |
| System.err.println(sb.toString()); |
| } |
| |
| private static String printStrackTrace(Throwable t) { |
| StringWriter writer = new StringWriter(); |
| t.printStackTrace(new PrintWriter(writer)); |
| return writer.toString(); |
| } |
| } |