- Revision
- 660
- Author
- mauro
- Date
- 2008-04-29 11:27:55 -0500 (Tue, 29 Apr 2008)
Log Message
Added utility method getComponentRegistry to AbstractRegistrar. Updated AbstractRegistrarMockery to allow subclasses to specify expectations.
Modified Paths
Diff
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/AbstractRegistrar.java (659 => 660)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/AbstractRegistrar.java 2008-04-29 16:06:41 UTC (rev 659) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/registrar/AbstractRegistrar.java 2008-04-29 16:27:55 UTC (rev 660) @@ -10,6 +10,10 @@ *****************************************************************************/ package org.codehaus.waffle.registrar; +import javax.servlet.ServletContext; + +import org.codehaus.waffle.ComponentRegistry; + /** * Waffle requires that web apps extend this class for registrating actions, services and components * for use in their applications. @@ -78,4 +82,14 @@ public void request() { // does nothing by default } + + /** + * Returns the component registry registered by the WaffleContextListener in the servlet context. + * + * @return The ComponentRegistry + */ + protected ComponentRegistry getComponentRegistry() { + ServletContext servletContext = (ServletContext) getRegistered(ServletContext.class); + return (ComponentRegistry) servletContext.getAttribute(ComponentRegistry.class.getName()); + } }
Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/registrar/pico/PicoRegistrarTest.java (659 => 660)
--- trunk/waffle-core/src/test/java/org/codehaus/waffle/registrar/pico/PicoRegistrarTest.java 2008-04-29 16:06:41 UTC (rev 659) +++ trunk/waffle-core/src/test/java/org/codehaus/waffle/registrar/pico/PicoRegistrarTest.java 2008-04-29 16:27:55 UTC (rev 660) @@ -11,13 +11,18 @@ package org.codehaus.waffle.registrar.pico; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; +import javax.servlet.ServletContext; + +import org.codehaus.waffle.ComponentRegistry; import org.codehaus.waffle.context.pico.PicoLifecycleStrategy; import org.codehaus.waffle.monitor.RegistrarMonitor; import org.codehaus.waffle.monitor.SilentMonitor; +import org.codehaus.waffle.registrar.AbstractRegistrar; import org.codehaus.waffle.registrar.ComponentReference; import org.codehaus.waffle.registrar.Registrar; import org.codehaus.waffle.registrar.RegistrarException; @@ -245,7 +250,38 @@ assertNotSame(controllerOne, controllerTwo); } + + @Test + public void canGetComponentRegistryFromDecorator() { + final ServletContext servletContext = mockery.mock(ServletContext.class); + final ComponentRegistry componentRegistry = mockery.mock(ComponentRegistry.class); + mockery.checking(new Expectations(){{ + one(servletContext).getAttribute(ComponentRegistry.class.getName()); + will(returnValue(componentRegistry)); + }}); + + MutablePicoContainer pico = new DefaultPicoContainer(); + pico.registerComponentInstance(servletContext); + PicoRegistrar registrar = new PicoRegistrar(pico, null, lifecycleStrategy, new SilentMonitor()); + DecoratorRegistrar decorator = new DecoratorRegistrar(registrar); + decorator.application(); + assertNotNull(decorator.registry); + + } + + static class DecoratorRegistrar extends AbstractRegistrar { + private ComponentRegistry registry; + + public DecoratorRegistrar(Registrar delegate) { + super(delegate); + } + + public void application(){ + registry = getComponentRegistry(); + } + + } @Test(expected=RegistrarException.class) public void cannotGetRegistedComponentWithUnknownKey() {
Modified: trunk/waffle-mock/src/main/java/org/codehaus/waffle/mock/AbstractRegistrarMockery.java (659 => 660)
--- trunk/waffle-mock/src/main/java/org/codehaus/waffle/mock/AbstractRegistrarMockery.java 2008-04-29 16:06:41 UTC (rev 659) +++ trunk/waffle-mock/src/main/java/org/codehaus/waffle/mock/AbstractRegistrarMockery.java 2008-04-29 16:27:55 UTC (rev 660) @@ -55,6 +55,10 @@ public HttpServletResponse mockHttpServletResponse() { return httpServletResponse; } + + public MessageResources mockMessageResources(){ + return messageResources; + } public void assertConfiguration(Class<?> registrarClass) { assertApplicationContext(registrarClass); @@ -64,8 +68,8 @@ public void assertApplicationContext(Class<?> registrarClass) { ContextContainer container = createContextContainer(); - container.registerComponentInstance(servletContext); - container.registerComponentInstance(messageResources); + container.registerComponentInstance(mockServletContext()); + container.registerComponentInstance(mockMessageResources()); Registrar registrar = createRegistrar(container); RegistrarAssistant registrarAssistant = new RegistrarAssistant(registrarClass); @@ -76,9 +80,9 @@ public void assertSessionContext(Class<?> registrarClass) { ContextContainer container = createContextContainer(); - container.registerComponentInstance(servletContext); - container.registerComponentInstance(httpSession); - container.registerComponentInstance(messageResources); + container.registerComponentInstance(mockServletContext()); + container.registerComponentInstance(mockHttpSession()); + container.registerComponentInstance(mockMessageResources()); Registrar registrar = createRegistrar(container); RegistrarAssistant registrarAssistant = new RegistrarAssistant(registrarClass); @@ -90,11 +94,11 @@ public void assertRequestContext(Class<?> customRegistrarClass) { ContextContainer container = createContextContainer(); - container.registerComponentInstance(servletContext); - container.registerComponentInstance(httpSession); - container.registerComponentInstance(httpServletRequest); - container.registerComponentInstance(httpServletResponse); - container.registerComponentInstance(messageResources); + container.registerComponentInstance(mockServletContext()); + container.registerComponentInstance(mockHttpSession()); + container.registerComponentInstance(mockHttpServletRequest()); + container.registerComponentInstance(mockHttpServletResponse()); + container.registerComponentInstance(mockMessageResources()); Registrar registrar = createRegistrar(container); RegistrarAssistant registrarAssistant = new RegistrarAssistant(customRegistrarClass);
To unsubscribe from this list please visit:
