/* * Copyright (C) 2008, Shawn O. Pearce 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 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 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 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 getAllCauses() { return causeList; } }