01: /* ====================================================================
02: The Jicarilla Software License
03:
04: Copyright (c) 2003 Leo Simons.
05: All rights reserved.
06:
07: Permission is hereby granted, free of charge, to any person obtaining
08: a copy of this software and associated documentation files (the
09: "Software"), to deal in the Software without restriction, including
10: without limitation the rights to use, copy, modify, merge, publish,
11: distribute, sublicense, and/or sell copies of the Software, and to
12: permit persons to whom the Software is furnished to do so, subject to
13: the following conditions:
14:
15: The above copyright notice and this permission notice shall be
16: included in all copies or substantial portions of the Software.
17:
18: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19: EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20: MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21: IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22: CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23: TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24: SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25: ==================================================================== */
26: package org.jicarilla.container;
27:
28: /**
29: * <p>Exception that is thrown when a {@link Container} detects a cyclic
30: * dependency. A cyclic dependency occurs when the graph that describes the
31: * components and their dependency relationship contains a cycle.
32: * For example:</p>
33: *
34: * <pre>
35: * A --> B --> C --> D --+
36: * ^ | <-- cycle!
37: * | |
38: * +---------------------+
39: * </pre>
40: *
41: * <p>In code:</p>
42: *
43: * <pre>
44: * public classs AImpl implements A
45: * {
46: * public AImpl( B ) { ... }
47: * }
48: * public classs BImpl implements B
49: * {
50: * public BImpl( C ) { ... }
51: * }
52: * public classs CImpl implements C
53: * {
54: * public CImpl( D ) { ... }
55: * }
56: * public classs DImpl implements D
57: * {
58: * public DImpl( A ) { ... }
59: * }
60: * </pre>
61: *
62: * @author <a href="lsimons at jicarilla dot org">Leo Simons</a>
63: * @version $Id: CyclicDependencyException.java,v 1.6 2004/02/29 19:21:35 lsimons Exp $
64: */
65: public class CyclicDependencyException extends
66: JicarillaInstantiationException {
67: protected final Object[] m_requestedKeys;
68:
69: public CyclicDependencyException(final Object[] requestedKeys) {
70: super (
71: "A cyclic dependency occured involving the following keys:"
72: + requestedKeys);
73: if (requestedKeys == null)
74: throw new NullPointerException("requestedKeys");
75: m_requestedKeys = requestedKeys;
76: }
77:
78: public Object[] getRequestedKeys() {
79: return m_requestedKeys;
80: }
81: }
|