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);