/* * JBoss, Home of Professional Open Source * Copyright 2016 Red Hat Inc. and/or its affiliates and other contributors * as indicated by the @authors tag. All rights reserved. * See the copyright.txt in the distribution for a * full listing of individual contributors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jboss.arquillian.test.spi; import java.util.Collections; import java.util.List; public class CombinedException extends Exception { private final List<Throwable> causes; public CombinedException(String message, List<Throwable> causes) { super(message); this.causes = Collections.unmodifiableList(causes); } public CombinedException(String message) { super(message); this.causes = Collections.emptyList(); } public CombinedException(String message, Throwable cause) { super(message, cause); this.causes = Collections.singletonList(cause); } public CombinedException(Throwable cause) { super(cause); this.causes = Collections.singletonList(cause); } public List<Throwable> getCauses() { return causes; } @Override public String getMessage() { final StringBuilder builder = new StringBuilder(); for (int i = 0; i < causes.size(); i++) { final Throwable cause = causes.get(i); builder.append( String.format("Exception %d: '[%s] %s'%n", i + 1, cause.getClass().getName(), cause.getMessage())); } return builder.toString(); } }