blob: 76bcbda773d33c2357684654f146d74746abf077 [file] [log] [blame]
/*
* Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org> and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
* https://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.eclipse.jgit.errors;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.eclipse.jgit.internal.JGitText;
/**
* An exception detailing multiple reasons for failure.
*/
public class CompoundException extends Exception {
private static final long serialVersionUID = 1L;
private static String format(Collection<Throwable> causes) {
final StringBuilder msg = new StringBuilder();
msg.append(JGitText.get().failureDueToOneOfTheFollowing);
for (Throwable c : causes) {
msg.append(" "); //$NON-NLS-1$
msg.append(c.getMessage());
msg.append("\n"); //$NON-NLS-1$
}
return msg.toString();
}
private final List<Throwable> causeList;
/**
* Constructs an exception detailing many potential reasons for failure.
*
* @param why
* Two or more exceptions that may have been the problem.
*/
public CompoundException(Collection<Throwable> why) {
super(format(why));
causeList = Collections.unmodifiableList(new ArrayList<>(why));
}
/**
* Get the complete list of reasons why this failure happened.
*
* @return unmodifiable collection of all possible reasons.
*/
public List<Throwable> getAllCauses() {
return causeList;
}
}