Title: [waffle-scm] [660] trunk/waffle-mock/src/main/java/org/codehaus/waffle/mock: Added utility method getComponentRegistry to AbstractRegistrar.
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:

http://xircles.codehaus.org/manage_email

Reply via email to