001 /***************************************************************************** 002 * Copyright (C) PicoContainer Organization. All rights reserved. * 003 * ------------------------------------------------------------------------- * 004 * The software in this package is published under the terms of the BSD * 005 * style license a copy of which has been included with this distribution in * 006 * the LICENSE.txt file. * 007 * * 008 * Original code by * 009 *****************************************************************************/ 010 package org.picocontainer; 011 012 import java.util.ArrayList; 013 import java.util.List; 014 015 016 /** 017 * Subclass of {@link PicoException} that is thrown when a {@link PicoContainer} hierarchy 018 * cannot be verified. A failing verification is caused by ambuigities or missing dependencies 019 * between the registered components and their parameters. This exception is designed as a 020 * collector for all Exceptions occurring at the verification of the complete container 021 * hierarchy. The verification is normally done with the 022 * {@link org.picocontainer.visitors.VerifyingVisitor}, that will throw this exception. 023 */ 024 @SuppressWarnings("serial") 025 public class PicoVerificationException extends PicoException { 026 027 /** 028 * The exceptions that caused this one. 029 */ 030 private final List<Throwable> nestedExceptions = new ArrayList<Throwable>(); 031 032 /** 033 * Construct a new exception with a list of exceptions that caused this one. 034 * 035 * @param nestedExceptions the exceptions that caused this one. 036 */ 037 public PicoVerificationException(final List<? extends Throwable> nestedExceptions) { 038 this.nestedExceptions.addAll(nestedExceptions); 039 } 040 041 /** 042 * Retrieve the list of exceptions that caused this one. 043 * 044 * @return the list of exceptions that caused this one. 045 */ 046 public List<Throwable> getNestedExceptions() { 047 return nestedExceptions; 048 } 049 050 /** 051 * Return a string listing of all the messages associated with the exceptions that caused 052 * this one. 053 * 054 * @return a string listing of all the messages associated with the exceptions that caused 055 * this one. 056 */ 057 public String getMessage() { 058 return nestedExceptions.toString(); 059 } 060 }