1
2
3
4
5
6 package net.sf.tlc.ioc.impl;
7
8 import java.lang.reflect.Constructor;
9 import java.util.Hashtable;
10 import java.util.Iterator;
11 import java.util.Map;
12
13 /***
14 * A node in a class dependency tree.
15 *
16 * @author aisrael
17 */
18 public final class DependencyNode {
19
20 private final Class clazz;
21
22 private final Map dependencies;
23
24 /***
25 * Construct a dependency tree node for the given class
26 *
27 * @param clazz
28 * Class
29 */
30 public DependencyNode(final Class clazz) {
31 this.clazz = clazz;
32 this.dependencies = new Hashtable(clazz.getConstructors().length);
33 }
34
35 /***
36 * @return the class this dependency node represents
37 */
38 public Class getClazz() {
39 return this.clazz;
40 }
41
42 /***
43 * Add a dependency from the parent class upon the given class.
44 * @param constructor Constructor
45 * @param deps DependencyNode[]
46 */
47 public void addDependency(final Constructor constructor, final DependencyNode[] deps) {
48 this.dependencies.put(constructor, deps);
49 }
50
51 /***
52 * Return the dependencies for the given constructor of this class.
53 *
54 * @param constructor
55 * Constructor
56 * @return DependencyNode[]
57 */
58 public DependencyNode[] getDependency(final Constructor constructor) {
59 return (DependencyNode[]) dependencies.get(constructor);
60 }
61
62 /***
63 * @return Iterator
64 */
65 public Iterator iterator() {
66 return dependencies.keySet().iterator();
67 }
68
69 /***
70 * (non-Javadoc)
71 * @see java.lang.Object#toString()
72 */
73 public String toString() {
74 return "(" + super.toString() + " (dependencyPaths " + dependencies.size() + "))";
75 }
76
77 }