diff options
Diffstat (limited to 'bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/ExceptionCollector.java')
-rw-r--r-- | bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/ExceptionCollector.java | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/ExceptionCollector.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/ExceptionCollector.java deleted file mode 100644 index 8fb182356..000000000 --- a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/ExceptionCollector.java +++ /dev/null @@ -1,157 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2003 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.core; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.ILog; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.MultiStatus; -import org.eclipse.core.runtime.Status; - -/** - * Collects exceptions and can be configured to ignore duplicates exceptions. Exceptions can be logged - * and a MultiStatus containing all collected exceptions can be returned. - * - * @see org.eclipse.core.runtime.MultiStatus - * @see org.eclipse.core.runtime.IStatus - * - * @since 3.0 - */ -public class ExceptionCollector { - - private Map exceptionBucket = new HashMap(); - private List statuses = new ArrayList(); - private String message; - private String pluginId; - private int severity; - private ILog log; - private boolean ignoreDuplicates = false; - - /** - * Creates a collector and initializes the parameters for the top-level exception - * that would be returned from <code>getStatus</code> is exceptions are collected. - * - * @param message a human-readable message, localized to the current locale - * @param pluginId the unique identifier of the relevant plug-in - * @param severity the severity; one of <code>OK</code>, - * <code>ERROR</code>, <code>INFO</code>, or <code>WARNING</code> - * @param code the plug-in-specific status code, or <code>OK</code> - * @param log the log to output the exceptions to, or <code>null</code> if - * exceptions should not be logged. - */ - public ExceptionCollector(String message, String pluginId, int severity, ILog log) { - this.message = message; - this.pluginId = pluginId; - this.severity = severity; - this.log = log; - } - - /** - * Clears the exceptions collected. - */ - public void clear() { - statuses.clear(); - exceptionBucket.clear(); - } - - /** - * Returns a status that represents the exceptions collected. If the collector - * is empty <code>IStatus.OK</code> is returned. Otherwise a MultiStatus containing - * all collected exceptions is returned. - * @return a multistatus containing the exceptions collected or IStatus.OK if - * the collector is empty. - */ - public IStatus getStatus() { - if(statuses.isEmpty()) { - return Status.OK_STATUS; - } else { - MultiStatus multiStatus = new MultiStatus(pluginId, severity, message, null); - Iterator it = statuses.iterator(); - while (it.hasNext()) { - IStatus status = (IStatus) it.next(); - multiStatus.merge(status); - } - return multiStatus; - } - } - - /** - * Returns whether duplicate exceptions are being ignored. - * @return <code>true</code> if this collector is ignoring duplicate exceptions, and - * <code>false</code> otherwise. - */ - public boolean isIgnoreDuplicates() { - return ignoreDuplicates; - } - - /** - * Sets whether duplicate exceptions are being ignored. - * @param ignoreDuplicates <code>true</code> if this collector should ignore duplicate - * exceptions, and <code>false</code> otherwise. - */ - public void setIgnoreDuplicates(boolean ignoreDuplicates) { - this.ignoreDuplicates = ignoreDuplicates; - } - - /** - * Add this exception to the collector. If a log was specified in the constructor - * then the exception will be output to the log. You can retreive exceptions - * using <code>getStatus</code>. - * - * @param exception the exception to collect - */ - public void handleException(Exception e) { - IStatus status = null; - if(e instanceof CoreException) { - status = ((CoreException)e).getStatus(); - } - if(status != null) { - logStatus(status); - IStatus[] children = status.getChildren(); - for (int i = 0; i < children.length; i++) { - IStatus status2 = children[i]; - logStatus(status2); - } - } - } - - /** - * Log and accumulate exceptions once for each {plugid,code} combination. - */ - private void logStatus(IStatus status) { - String pluginId = status.getPlugin(); - List codes = (List)exceptionBucket.get(pluginId); - Integer code = new Integer(status.getCode()); - if(codes != null) { - if(codes.contains(code) && isIgnoreDuplicates()) { - return; - } - } - // collect the status - statuses.add(status); - - // update counts for this exception - codes = new ArrayList(1); - codes.add(code); - exceptionBucket.put(pluginId, codes); - - // log if necessary - if(log != null) { - log.log(new Status(status.getSeverity(), pluginId, status.getCode(), message, status.getException())); - } - } -} |