Early draft of InjectionListeners.

git-svn-id: https://google-guice.googlecode.com/svn/trunk@906 d779f126-a31b-0410-b53b-1d3aecad763e
diff --git a/src/com/google/inject/InheritingState.java b/src/com/google/inject/InheritingState.java
index 68f1c3d..857b163 100644
--- a/src/com/google/inject/InheritingState.java
+++ b/src/com/google/inject/InheritingState.java
@@ -22,7 +22,9 @@
 import com.google.inject.internal.Maps;
 import com.google.inject.internal.MatcherAndConverter;
 import static com.google.inject.internal.Preconditions.checkNotNull;
+import com.google.inject.spi.InjectableTypeListenerBinding;
 import java.lang.annotation.Annotation;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -43,6 +45,7 @@
   /*if[AOP]*/
   private final List<MethodAspect> methodAspects = Lists.newArrayList();
   /*end[AOP]*/
+  private final List<InjectableTypeListenerBinding> listenerBindings = Lists.newArrayList();
   private final WeakKeySet blacklistedKeys = new WeakKeySet();
   private final Object lock;
 
@@ -115,6 +118,19 @@
   }
   /*end[AOP]*/
 
+  public void addInjectableTypeListener(InjectableTypeListenerBinding listenerBinding) {
+    listenerBindings.add(listenerBinding);
+  }
+
+  public List<InjectableTypeListenerBinding> getInjectableTypeListenerBindings() {
+    List<InjectableTypeListenerBinding> parentBindings = parent.getInjectableTypeListenerBindings();
+    List<InjectableTypeListenerBinding> result
+        = new ArrayList<InjectableTypeListenerBinding>(parentBindings.size() + 1);
+    result.addAll(parentBindings);
+    result.addAll(listenerBindings);
+    return result;
+  }
+
   public void blacklist(Key<?> key) {
     parent.blacklist(key);
     blacklistedKeys.add(key);