Revision: 1581
Author: [email protected]
Date: Fri Sep 9 14:22:45 2011
Log:
Make ServletModule work with requireExplicitBinding().
Revision created by MOE tool push_codebase.
MOE_MIGRATION=3207
http://code.google.com/p/google-guice/source/detail?r=1581
Modified:
/trunk/extensions/servlet/src/com/google/inject/servlet/InternalServletModule.java
/trunk/extensions/servlet/test/com/google/inject/servlet/ExtensionSpiTest.java
/trunk/extensions/servlet/test/com/google/inject/servlet/ServletSpiVisitor.java
=======================================
---
/trunk/extensions/servlet/src/com/google/inject/servlet/InternalServletModule.java
Wed Jun 29 15:04:31 2011
+++
/trunk/extensions/servlet/src/com/google/inject/servlet/InternalServletModule.java
Fri Sep 9 14:22:45 2011
@@ -91,6 +91,7 @@
bind(FilterPipeline.class).to(ManagedFilterPipeline.class).asEagerSingleton();
bind(ServletContext.class).toProvider(BackwardsCompatibleServletContextProvider.class);
+ bind(BackwardsCompatibleServletContextProvider.class);
}
@Provides @RequestScoped HttpServletRequest provideHttpServletRequest() {
=======================================
---
/trunk/extensions/servlet/test/com/google/inject/servlet/ExtensionSpiTest.java
Thu Jul 7 17:34:16 2011
+++
/trunk/extensions/servlet/test/com/google/inject/servlet/ExtensionSpiTest.java
Fri Sep 9 14:22:45 2011
@@ -37,22 +37,22 @@
/**
* A very basic test that servletmodule works with bindings.
- *
+ *
* @author [email protected] (Sam Berlin)
*/
public class ExtensionSpiTest extends TestCase {
-
+
private DummyFilterImpl dummyFilter1 = new DummyFilterImpl();
private DummyFilterImpl dummyFilter2 = new DummyFilterImpl();
private DummyFilterImpl dummyFilter3 = new DummyFilterImpl();
private DummyFilterImpl dummyFilter4 = new DummyFilterImpl();
-
+
private DummyServlet dummyServlet1 = new DummyServlet();
private DummyServlet dummyServlet2 = new DummyServlet();
private DummyServlet dummyServlet3 = new DummyServlet();
private DummyServlet dummyServlet4 = new DummyServlet();
-
- public final void testSpiOnElements() {
+
+ public final void testSpiOnElements() {
ServletSpiVisitor visitor = new ServletSpiVisitor(false);
int count = 0;
for(Element element : Elements.getElements(new Module())) {
@@ -62,7 +62,7 @@
}
validateVisitor(visitor);
}
-
+
public final void testSpiOnInjector() {
ServletSpiVisitor visitor = new ServletSpiVisitor(true);
int count = 0;
@@ -72,10 +72,10 @@
}
validateVisitor(visitor);
}
-
+
private void validateVisitor(ServletSpiVisitor visitor) {
assertEquals(48, visitor.currentCount - visitor.otherCount);
-
+
// This is the expected param list, in order..
List<Params> expected = ImmutableList.of(
new Params("/class", Key.get(DummyFilterImpl.class),
ImmutableMap.of(), SERVLET),
@@ -90,7 +90,7 @@
new Params("/key/keyvalues/2", Key.get(DummyFilterImpl.class,
Names.named("foo")), ImmutableMap.of("key", "value"), SERVLET),
new Params("/instance/keyvalues", dummyFilter2,
ImmutableMap.of("key", "value"), SERVLET),
new Params("/instance/keyvalues/2", dummyFilter2,
ImmutableMap.of("key", "value"), SERVLET),
-
+
new Params("/class[0-9]", Key.get(DummyFilterImpl.class),
ImmutableMap.of(), REGEX),
new Params("/class[0-9]/2", Key.get(DummyFilterImpl.class),
ImmutableMap.of(), REGEX),
new Params("/key[0-9]", Key.get(DummyFilterImpl.class,
Names.named("foo")), ImmutableMap.of(), REGEX),
@@ -103,7 +103,7 @@
new Params("/key[0-9]/keyvalues/2", Key.get(DummyFilterImpl.class,
Names.named("foo")), ImmutableMap.of("key", "value"), REGEX),
new Params("/instance[0-9]/keyvalues", dummyFilter4,
ImmutableMap.of("key", "value"), REGEX),
new Params("/instance[0-9]/keyvalues/2", dummyFilter4,
ImmutableMap.of("key", "value"), REGEX),
-
+
new Params("/class", Key.get(DummyServlet.class),
ImmutableMap.of(), SERVLET),
new Params("/class/2", Key.get(DummyServlet.class),
ImmutableMap.of(), SERVLET),
new Params("/key", Key.get(DummyServlet.class,
Names.named("foo")), ImmutableMap.of(), SERVLET),
@@ -116,7 +116,7 @@
new Params("/key/keyvalues/2", Key.get(DummyServlet.class,
Names.named("foo")), ImmutableMap.of("key", "value"), SERVLET),
new Params("/instance/keyvalues", dummyServlet2,
ImmutableMap.of("key", "value"), SERVLET),
new Params("/instance/keyvalues/2", dummyServlet2,
ImmutableMap.of("key", "value"), SERVLET),
-
+
new Params("/class[0-9]", Key.get(DummyServlet.class),
ImmutableMap.of(), REGEX),
new Params("/class[0-9]/2", Key.get(DummyServlet.class),
ImmutableMap.of(), REGEX),
new Params("/key[0-9]", Key.get(DummyServlet.class,
Names.named("foo")), ImmutableMap.of(), REGEX),
@@ -130,7 +130,7 @@
new Params("/instance[0-9]/keyvalues", dummyServlet4,
ImmutableMap.of("key", "value"), REGEX),
new Params("/instance[0-9]/keyvalues/2", dummyServlet4,
ImmutableMap.of("key", "value"), REGEX)
);
-
+
assertEquals(expected.size(), visitor.actual.size());
Iterator<Params> actualIterator = visitor.actual.iterator();
int i = 0;
@@ -142,6 +142,8 @@
private class Module extends ServletModule {
@Override
protected void configureServlets() {
+ binder().requireExplicitBindings();
+
filter("/class", "/class/2").through(DummyFilterImpl.class);
filter("/key", "/key/2").through(
Key.get(DummyFilterImpl.class, Names.named("foo")));
@@ -186,6 +188,5 @@
serveRegex("/instance[0-9]/keyvalues", "/instance[0-9]/keyvalues/2").with(
dummyServlet4, ImmutableMap.of("key", "value"));
}
- };
-
-}
+ }
+}
=======================================
---
/trunk/extensions/servlet/test/com/google/inject/servlet/ServletSpiVisitor.java
Thu Jul 7 17:34:16 2011
+++
/trunk/extensions/servlet/test/com/google/inject/servlet/ServletSpiVisitor.java
Fri Sep 9 14:22:45 2011
@@ -42,49 +42,50 @@
/**
* A visitor for testing the servlet SPI extension.
- *
+ *
* @author [email protected] (Sam Berlin)
*/
class ServletSpiVisitor
extends DefaultBindingTargetVisitor<Object, Integer>
implements ServletModuleTargetVisitor<Object, Integer> {
-
+
int otherCount = 0;
int currentCount = 0;
List<Params> actual = Lists.newArrayList();
-
+
/* The set of classes that are allowed to be "other" bindings. */
Set<Class> allowedClasses;
-
+
ServletSpiVisitor(boolean forInjector) {
ImmutableSet.Builder<Class> builder = ImmutableSet.builder();
// always ignore these things...
builder.add(ServletRequest.class,
ServletResponse.class, ManagedFilterPipeline.class,
ManagedServletPipeline.class,
FilterPipeline.class, ServletContext.class,
HttpServletRequest.class, Filter.class,
- HttpServletResponse.class, HttpSession.class, Map.class,
HttpServlet.class);
+ HttpServletResponse.class, HttpSession.class, Map.class,
HttpServlet.class,
+
InternalServletModule.BackwardsCompatibleServletContextProvider.class);
if(forInjector) {
// only ignore these if this is for the live injector, any other
time it'd be an error!
builder.add(Injector.class, Stage.class, Logger.class);
}
this.allowedClasses = builder.build();
}
-
+
public Integer visit(InstanceFilterBinding binding) {
actual.add(new Params(binding, binding.getFilterInstance()));
return currentCount++;
}
-
+
public Integer visit(InstanceServletBinding binding) {
actual.add(new Params(binding, binding.getServletInstance()));
return currentCount++;
}
-
+
public Integer visit(LinkedFilterBinding binding) {
actual.add(new Params(binding, binding.getLinkedKey()));
return currentCount++;
}
-
+
public Integer visit(LinkedServletBinding binding) {
actual.add(new Params(binding, binding.getLinkedKey()));
return currentCount++;
@@ -98,27 +99,27 @@
otherCount++;
return currentCount++;
}
-
+
static class Params {
private final String pattern;
private final Object keyOrInstance;
private final Map<String, String> params;
private final UriPatternType patternType;
-
+
Params(ServletModuleBinding binding, Object keyOrInstance) {
this.pattern = binding.getPattern();
this.keyOrInstance = keyOrInstance;
this.params = binding.getInitParams();
this.patternType = binding.getUriPatternType();
}
-
+
Params(String pattern, Object keyOrInstance, Map params,
UriPatternType patternType) {
this.pattern = pattern;
this.keyOrInstance = keyOrInstance;
this.params = params;
this.patternType = patternType;
}
-
+
@Override
public boolean equals(Object obj) {
if(obj instanceof Params) {
@@ -136,7 +137,7 @@
public int hashCode() {
return Objects.hashCode(pattern, keyOrInstance, params, patternType);
}
-
+
@Override
public String toString() {
return Objects.toStringHelper(Params.class)
--
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.