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.