View Javadoc

1   /*
2    * Created on May 23, 2005
3    *
4    * A node in a class dependency tree.
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  }