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.defaults;
011
012 import org.picocontainer.ComponentAdapter;
013 import org.picocontainer.PicoIntrospectionException;
014 import org.picocontainer.PicoContainer;
015
016 import java.util.Set;
017
018 /**
019 * Exception thrown when some of the component's dependencies are not satisfiable.
020 *
021 * @author Aslak Hellesøy
022 * @author Mauro Talevi
023 * @version $Revision: 2838 $
024 */
025 public class UnsatisfiableDependenciesException extends PicoIntrospectionException {
026
027 private final ComponentAdapter instantiatingComponentAdapter;
028 private final Set unsatisfiableDependencies;
029 private final Class unsatisfiedDependencyType;
030 private final PicoContainer leafContainer;
031
032 public UnsatisfiableDependenciesException(ComponentAdapter instantiatingComponentAdapter,
033 Set unsatisfiableDependencies, PicoContainer leafContainer) {
034 super(instantiatingComponentAdapter.getComponentImplementation().getName() + " has unsatisfiable dependencies: "
035 + unsatisfiableDependencies + " where " + leafContainer
036 + " was the leaf container being asked for dependencies.");
037 this.instantiatingComponentAdapter = instantiatingComponentAdapter;
038 this.unsatisfiableDependencies = unsatisfiableDependencies;
039 this.unsatisfiedDependencyType = null;
040 this.leafContainer = leafContainer;
041 }
042
043 public UnsatisfiableDependenciesException(ComponentAdapter instantiatingComponentAdapter,
044 Class unsatisfiedDependencyType, Set unsatisfiableDependencies,
045 PicoContainer leafContainer) {
046 super(instantiatingComponentAdapter.getComponentImplementation().getName() + " has unsatisfied dependency: " + unsatisfiedDependencyType
047 +" among unsatisfiable dependencies: "+unsatisfiableDependencies + " where " + leafContainer
048 + " was the leaf container being asked for dependencies.");
049 this.instantiatingComponentAdapter = instantiatingComponentAdapter;
050 this.unsatisfiableDependencies = unsatisfiableDependencies;
051 this.unsatisfiedDependencyType = unsatisfiedDependencyType;
052 this.leafContainer = leafContainer;
053 }
054
055 public ComponentAdapter getUnsatisfiableComponentAdapter() {
056 return instantiatingComponentAdapter;
057 }
058
059 public Set getUnsatisfiableDependencies() {
060 return unsatisfiableDependencies;
061 }
062
063 public Class getUnsatisfiedDependencyType() {
064 return unsatisfiedDependencyType;
065 }
066
067 public PicoContainer getLeafContainer() {
068 return leafContainer;
069 }
070
071 }