blob: 585dce39bfce2c15e6902c6403a1dd283b1b4e19 [file] [log] [blame]
/*******************************************************************************
* 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();
}
}