Revision: f74ee672186b
Author:   Sam Berlin <[email protected]>
Date:     Tue Oct 18 13:43:18 2011
Log:      Better errors when using binder(), etc. outside of configure().

Revision created by MOE tool push_codebase.
MOE_MIGRATION=3492

http://code.google.com/p/google-guice/source/detail?r=f74ee672186b

Modified:
 /core/src/com/google/inject/AbstractModule.java
 /core/src/com/google/inject/PrivateModule.java
 /extensions/servlet/src/com/google/inject/servlet/ServletModule.java

=======================================
--- /core/src/com/google/inject/AbstractModule.java     Thu Jul  7 17:34:16 2011
+++ /core/src/com/google/inject/AbstractModule.java     Tue Oct 18 13:43:18 2011
@@ -75,6 +75,7 @@
    * Gets direct access to the underlying {@code Binder}.
    */
   protected Binder binder() {
+ checkState(binder != null, "The binder can only be used inside configure()");
     return binder;
   }

@@ -83,56 +84,56 @@
    */
   protected void bindScope(Class<? extends Annotation> scopeAnnotation,
       Scope scope) {
-    binder.bindScope(scopeAnnotation, scope);
+    binder().bindScope(scopeAnnotation, scope);
   }

   /**
    * @see Binder#bind(Key)
    */
   protected <T> LinkedBindingBuilder<T> bind(Key<T> key) {
-    return binder.bind(key);
+    return binder().bind(key);
   }

   /**
    * @see Binder#bind(TypeLiteral)
    */
protected <T> AnnotatedBindingBuilder<T> bind(TypeLiteral<T> typeLiteral) {
-    return binder.bind(typeLiteral);
+    return binder().bind(typeLiteral);
   }

   /**
    * @see Binder#bind(Class)
    */
   protected <T> AnnotatedBindingBuilder<T> bind(Class<T> clazz) {
-    return binder.bind(clazz);
+    return binder().bind(clazz);
   }

   /**
    * @see Binder#bindConstant()
    */
   protected AnnotatedConstantBindingBuilder bindConstant() {
-    return binder.bindConstant();
+    return binder().bindConstant();
   }

   /**
    * @see Binder#install(Module)
    */
   protected void install(Module module) {
-    binder.install(module);
+    binder().install(module);
   }

   /**
    * @see Binder#addError(String, Object[])
    */
   protected void addError(String message, Object... arguments) {
-    binder.addError(message, arguments);
+    binder().addError(message, arguments);
   }

   /**
    * @see Binder#addError(Throwable)
    */
   protected void addError(Throwable t) {
-    binder.addError(t);
+    binder().addError(t);
   }

   /**
@@ -140,7 +141,7 @@
    * @since 2.0
    */
   protected void addError(Message message) {
-    binder.addError(message);
+    binder().addError(message);
   }

   /**
@@ -148,14 +149,14 @@
    * @since 2.0
    */
   protected void requestInjection(Object instance) {
-    binder.requestInjection(instance);
+    binder().requestInjection(instance);
   }

   /**
    * @see Binder#requestStaticInjection(Class[])
    */
   protected void requestStaticInjection(Class<?>... types) {
-    binder.requestStaticInjection(types);
+    binder().requestStaticInjection(types);
   }

   /*if[AOP]*/
@@ -167,7 +168,7 @@
   protected void bindInterceptor(Matcher<? super Class<?>> classMatcher,
       Matcher<? super Method> methodMatcher,
       org.aopalliance.intercept.MethodInterceptor... interceptors) {
-    binder.bindInterceptor(classMatcher, methodMatcher, interceptors);
+    binder().bindInterceptor(classMatcher, methodMatcher, interceptors);
   }
   /*end[AOP]*/

@@ -180,7 +181,7 @@
    * @since 2.0
    */
   protected void requireBinding(Key<?> key) {
-    binder.getProvider(key);
+    binder().getProvider(key);
   }

   /**
@@ -192,7 +193,7 @@
    * @since 2.0
    */
   protected void requireBinding(Class<?> type) {
-    binder.getProvider(type);
+    binder().getProvider(type);
   }

   /**
@@ -200,7 +201,7 @@
    * @since 2.0
    */
   protected <T> Provider<T> getProvider(Key<T> key) {
-    return binder.getProvider(key);
+    return binder().getProvider(key);
   }

   /**
@@ -208,7 +209,7 @@
    * @since 2.0
    */
   protected <T> Provider<T> getProvider(Class<T> type) {
-    return binder.getProvider(type);
+    return binder().getProvider(type);
   }

   /**
@@ -217,7 +218,7 @@
    */
protected void convertToTypes(Matcher<? super TypeLiteral<?>> typeMatcher,
       TypeConverter converter) {
-    binder.convertToTypes(typeMatcher, converter);
+    binder().convertToTypes(typeMatcher, converter);
   }

   /**
@@ -225,7 +226,7 @@
    * @since 2.0
    */
   protected Stage currentStage() {
-    return binder.currentStage();
+    return binder().currentStage();
   }

   /**
@@ -233,7 +234,7 @@
    * @since 2.0
    */
   protected <T> MembersInjector<T> getMembersInjector(Class<T> type) {
-    return binder.getMembersInjector(type);
+    return binder().getMembersInjector(type);
   }

   /**
@@ -241,7 +242,7 @@
    * @since 2.0
    */
protected <T> MembersInjector<T> getMembersInjector(TypeLiteral<T> type) {
-    return binder.getMembersInjector(type);
+    return binder().getMembersInjector(type);
   }

   /**
@@ -251,7 +252,7 @@
    */
   protected void bindListener(Matcher<? super TypeLiteral<?>> typeMatcher,
       TypeListener listener) {
-    binder.bindListener(typeMatcher, listener);
+    binder().bindListener(typeMatcher, listener);
   }

   /**
@@ -260,6 +261,6 @@
    */
   protected void bindListener(Matcher<? super Key<?>> keyMatcher,
       ProvisionListener... listener) {
-    binder.bindListener(keyMatcher, listener);
+    binder().bindListener(keyMatcher, listener);
   }
 }
=======================================
--- /core/src/com/google/inject/PrivateModule.java      Thu Jul  7 17:34:16 2011
+++ /core/src/com/google/inject/PrivateModule.java      Tue Oct 18 13:43:18 2011
@@ -110,7 +110,7 @@

/** Makes the binding for {@code key} available to other modules and the injector. */
   protected final <T> void expose(Key<T> key) {
-    binder.expose(key);
+    binder().expose(key);
   }

   /**
@@ -119,7 +119,7 @@
    * binding annotation.
    */
   protected final AnnotatedElementBuilder expose(Class<?> type) {
-    return binder.expose(type);
+    return binder().expose(type);
   }

   /**
@@ -128,7 +128,7 @@
    * binding annotation.
    */
   protected final AnnotatedElementBuilder expose(TypeLiteral<?> type) {
-    return binder.expose(type);
+    return binder().expose(type);
   }

   // everything below is copied from AbstractModule
@@ -137,6 +137,7 @@
    * Returns the current binder.
    */
   protected final PrivateBinder binder() {
+ checkState(binder != null, "The binder can only be used inside configure()");
     return binder;
   }

@@ -144,77 +145,77 @@
    * @see Binder#bindScope(Class, Scope)
    */
protected final void bindScope(Class<? extends Annotation> scopeAnnotation, Scope scope) {
-    binder.bindScope(scopeAnnotation, scope);
+    binder().bindScope(scopeAnnotation, scope);
   }

   /**
    * @see Binder#bind(Key)
    */
   protected final <T> LinkedBindingBuilder<T> bind(Key<T> key) {
-    return binder.bind(key);
+    return binder().bind(key);
   }

   /**
    * @see Binder#bind(TypeLiteral)
    */
protected final <T> AnnotatedBindingBuilder<T> bind(TypeLiteral<T> typeLiteral) {
-    return binder.bind(typeLiteral);
+    return binder().bind(typeLiteral);
   }

   /**
    * @see Binder#bind(Class)
    */
   protected final <T> AnnotatedBindingBuilder<T> bind(Class<T> clazz) {
-    return binder.bind(clazz);
+    return binder().bind(clazz);
   }

   /**
    * @see Binder#bindConstant()
    */
   protected final AnnotatedConstantBindingBuilder bindConstant() {
-    return binder.bindConstant();
+    return binder().bindConstant();
   }

   /**
    * @see Binder#install(Module)
    */
   protected final void install(Module module) {
-    binder.install(module);
+    binder().install(module);
   }

   /**
    * @see Binder#addError(String, Object[])
    */
   protected final void addError(String message, Object... arguments) {
-    binder.addError(message, arguments);
+    binder().addError(message, arguments);
   }

   /**
    * @see Binder#addError(Throwable)
    */
   protected final void addError(Throwable t) {
-    binder.addError(t);
+    binder().addError(t);
   }

   /**
    * @see Binder#addError(Message)
    */
   protected final void addError(Message message) {
-    binder.addError(message);
+    binder().addError(message);
   }

   /**
    * @see Binder#requestInjection(Object)
    */
   protected final void requestInjection(Object instance) {
-    binder.requestInjection(instance);
+    binder().requestInjection(instance);
   }

   /**
    * @see Binder#requestStaticInjection(Class[])
    */
   protected final void requestStaticInjection(Class<?>... types) {
-    binder.requestStaticInjection(types);
+    binder().requestStaticInjection(types);
   }

   /*if[AOP]*/
@@ -224,7 +225,7 @@
protected final void bindInterceptor(Matcher<? super Class<?>> classMatcher,
       Matcher<? super Method> methodMatcher,
       org.aopalliance.intercept.MethodInterceptor... interceptors) {
-    binder.bindInterceptor(classMatcher, methodMatcher, interceptors);
+    binder().bindInterceptor(classMatcher, methodMatcher, interceptors);
   }
   /*end[AOP]*/

@@ -232,28 +233,28 @@
    * Instructs Guice to require a binding to the given key.
    */
   protected final void requireBinding(Key<?> key) {
-    binder.getProvider(key);
+    binder().getProvider(key);
   }

   /**
    * Instructs Guice to require a binding to the given type.
    */
   protected final void requireBinding(Class<?> type) {
-    binder.getProvider(type);
+    binder().getProvider(type);
   }

   /**
    * @see Binder#getProvider(Key)
    */
   protected final <T> Provider<T> getProvider(Key<T> key) {
-    return binder.getProvider(key);
+    return binder().getProvider(key);
   }

   /**
    * @see Binder#getProvider(Class)
    */
   protected final <T> Provider<T> getProvider(Class<T> type) {
-    return binder.getProvider(type);
+    return binder().getProvider(type);
   }

   /**
@@ -261,28 +262,28 @@
    */
protected final void convertToTypes(Matcher<? super TypeLiteral<?>> typeMatcher,
       TypeConverter converter) {
-    binder.convertToTypes(typeMatcher, converter);
+    binder().convertToTypes(typeMatcher, converter);
   }

   /**
    * @see Binder#currentStage()
    */
   protected final Stage currentStage() {
-    return binder.currentStage();
+    return binder().currentStage();
   }

   /**
    * @see Binder#getMembersInjector(Class)
    */
   protected <T> MembersInjector<T> getMembersInjector(Class<T> type) {
-    return binder.getMembersInjector(type);
+    return binder().getMembersInjector(type);
   }

   /**
    * @see Binder#getMembersInjector(TypeLiteral)
    */
protected <T> MembersInjector<T> getMembersInjector(TypeLiteral<T> type) {
-    return binder.getMembersInjector(type);
+    return binder().getMembersInjector(type);
   }

   /**
@@ -290,6 +291,6 @@
    */
   protected void bindListener(Matcher<? super TypeLiteral<?>> typeMatcher,
       TypeListener listener) {
-    binder.bindListener(typeMatcher, listener);
+    binder().bindListener(typeMatcher, listener);
   }
 }
=======================================
--- /extensions/servlet/src/com/google/inject/servlet/ServletModule.java Thu Jul 7 17:34:16 2011 +++ /extensions/servlet/src/com/google/inject/servlet/ServletModule.java Tue Oct 18 13:43:18 2011
@@ -235,12 +235,25 @@
   private FiltersModuleBuilder filtersModuleBuilder;
   private ServletsModuleBuilder servletsModuleBuilder;

+  private FiltersModuleBuilder getFiltersModuleBuilder() {
+    checkState(filtersModuleBuilder != null,
+        "This method can only be used inside configureServlets()");
+    return filtersModuleBuilder;
+  }
+
+  private ServletsModuleBuilder getServletModuleBuilder() {
+    checkState(servletsModuleBuilder != null,
+        "This method can only be used inside configureServlets()");
+    return servletsModuleBuilder;
+  }
+
   /**
* @param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
    * @since 2.0
    */
protected final FilterKeyBindingBuilder filter(String urlPattern, String... morePatterns) { - return filtersModuleBuilder.filter(ImmutableList.<String>builder().add(urlPattern).add(morePatterns).build());
+    return getFiltersModuleBuilder()
+        
.filter(ImmutableList.<String>builder().add(urlPattern).add(morePatterns).build());
   }

   /**
@@ -248,7 +261,8 @@
    * @since 2.0
    */
protected final FilterKeyBindingBuilder filterRegex(String regex, String... regexes) { - return filtersModuleBuilder.filterRegex(ImmutableList.<String>builder().add(regex).add(regexes).build());
+    return getFiltersModuleBuilder()
+        
.filterRegex(ImmutableList.<String>builder().add(regex).add(regexes).build());
   }

   /**
@@ -256,7 +270,8 @@
    * @since 2.0
    */
protected final ServletKeyBindingBuilder serve(String urlPattern, String... morePatterns) { - return servletsModuleBuilder.serve(ImmutableList.<String>builder().add(urlPattern).add(morePatterns).build());
+    return getServletModuleBuilder()
+        
.serve(ImmutableList.<String>builder().add(urlPattern).add(morePatterns).build());
   }

   /**
@@ -264,7 +279,8 @@
    * @since 2.0
    */
protected final ServletKeyBindingBuilder serveRegex(String regex, String... regexes) { - return servletsModuleBuilder.serveRegex(ImmutableList.<String>builder().add(regex).add(regexes).build());
+    return getServletModuleBuilder()
+        
.serveRegex(ImmutableList.<String>builder().add(regex).add(regexes).build());
   }

   /**

--
You received this message because you are subscribed to the Google Groups 
"google-guice-dev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice-dev?hl=en.

Reply via email to