Title: [waffle-scm] [549] trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico: WAFFLE-52 : when initially refactoring for this fix I accidently had the PicoContextContainerFactory construct the PicoRegistrar with a 'null' for the ParameterResolver.

Diff

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoContextContainerFactory.java (548 => 549)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoContextContainerFactory.java	2008-01-14 13:49:27 UTC (rev 548)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoContextContainerFactory.java	2008-01-15 04:27:44 UTC (rev 549)
@@ -19,6 +19,7 @@
 import org.codehaus.waffle.monitor.RegistrarMonitor;
 import org.codehaus.waffle.registrar.Registrar;
 import org.codehaus.waffle.registrar.pico.PicoRegistrar;
+import org.codehaus.waffle.registrar.pico.ParameterResolver;
 import org.picocontainer.ComponentMonitor;
 import org.picocontainer.MutablePicoContainer;
 import org.picocontainer.PicoContainer;
@@ -37,12 +38,15 @@
     private final ComponentMonitor picoComponentMonitor = new NullComponentMonitor();
     private final LifecycleStrategy picoLifecycleStrategy = new PicoLifecycleStrategy(picoComponentMonitor);
     private final RegistrarMonitor registrarMonitor;
+    private final ParameterResolver parameterResolver;
 
     public PicoContextContainerFactory(MessageResources messageResources,
                                        ContextMonitor contextMonitor,
-                                       RegistrarMonitor registrarMonitor) {
+                                       RegistrarMonitor registrarMonitor,
+                                       ParameterResolver parameterResolver) {
         super(messageResources, contextMonitor);
         this.registrarMonitor = registrarMonitor;
+        this.parameterResolver = parameterResolver;
     }
 
     protected ContextContainer buildApplicationContextContainer() {
@@ -82,7 +86,7 @@
 
     protected Registrar createRegistrar(ContextContainer contextContainer) {
         MutablePicoContainer delegateContainer = (MutablePicoContainer) contextContainer.getDelegate();
-        Registrar registrar = new PicoRegistrar(delegateContainer, null, picoLifecycleStrategy, registrarMonitor);
+        Registrar registrar = new PicoRegistrar(delegateContainer, parameterResolver, picoLifecycleStrategy, registrarMonitor);
         getContextMonitor().registrarCreated(registrar, registrarMonitor);
         
         return registrar;

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/context/pico/RubyAwarePicoContextContainerFactory.java (548 => 549)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/context/pico/RubyAwarePicoContextContainerFactory.java	2008-01-14 13:49:27 UTC (rev 548)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/context/pico/RubyAwarePicoContextContainerFactory.java	2008-01-15 04:27:44 UTC (rev 549)
@@ -1,6 +1,7 @@
 package org.codehaus.waffle.context.pico;
 
 import org.codehaus.waffle.WaffleException;
+import org.codehaus.waffle.registrar.pico.ParameterResolver;
 import org.codehaus.waffle.context.ContextContainer;
 import org.codehaus.waffle.i18n.MessageResources;
 import org.codehaus.waffle.monitor.ContextMonitor;
@@ -18,8 +19,9 @@
 
     public RubyAwarePicoContextContainerFactory(MessageResources messageResources,
                                                 ContextMonitor contextMonitor,
-                                                RegistrarMonitor registrarMonitor) {
-        super(messageResources, contextMonitor, registrarMonitor);
+                                                RegistrarMonitor registrarMonitor,
+                                                ParameterResolver parameterResolver) {
+        super(messageResources, contextMonitor, registrarMonitor, parameterResolver);
     }
 
     @Override

Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoContextContainerFactoryTest.java (548 => 549)

--- trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoContextContainerFactoryTest.java	2008-01-14 13:49:27 UTC (rev 548)
+++ trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoContextContainerFactoryTest.java	2008-01-15 04:27:44 UTC (rev 549)
@@ -20,11 +20,14 @@
 import org.codehaus.waffle.i18n.MessagesContext;
 import org.codehaus.waffle.monitor.SilentMonitor;
 import org.codehaus.waffle.registrar.Registrar;
+import org.codehaus.waffle.registrar.pico.ParameterResolver;
+import org.codehaus.waffle.registrar.pico.PicoRegistrar;
 import org.codehaus.waffle.testmodel.ApplicationLevelComponent;
 import org.codehaus.waffle.testmodel.CustomRegistrar;
 import org.codehaus.waffle.testmodel.FakeBean;
 import org.codehaus.waffle.testmodel.RequestLevelComponent;
 import org.codehaus.waffle.testmodel.SessionLevelComponent;
+import org.codehaus.waffle.testmodel.StubParameterResolver;
 import org.codehaus.waffle.validation.ErrorsContext;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
@@ -45,6 +48,7 @@
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
+import java.lang.reflect.Field;
 import java.util.Collection;
 import java.util.Locale;
 
@@ -63,7 +67,7 @@
     @Test
     public void canBuildEachContextLevelContainer() {
         final PicoContextContainerFactory contextContainerFactory
-                = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor());
+                = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null);
 
         // Mock ServletContext
         final ServletContext servletContext = mockery.mock(ServletContext.class);
@@ -134,7 +138,7 @@
     @Test
     public void canInitializeContext() {
         final AbstractContextContainerFactory contextContainerFactory
-                = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor());
+                = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null);
 
         // Mock ServletContext
         final ServletContext servletContext = mockery.mock(ServletContext.class);
@@ -233,7 +237,7 @@
     @Test
     public void canBuildApplicationContextContainerWithLifecycle() {
         PicoContextContainerFactory contextContainerFactory
-                = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor());
+                = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null);
         ContextContainer container = contextContainerFactory.buildApplicationContextContainer();
 
         StubStartable startable = new StubStartable();
@@ -253,7 +257,7 @@
     @Test
     public void canBuildSessionLevelContainerWithLifecycle() {
         final PicoContextContainerFactory contextContainerFactory
-                = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor());
+                = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null);
 
         // Mock ServletContext
         final ServletContext servletContext = mockery.mock(ServletContext.class);
@@ -285,7 +289,7 @@
     @Test
     public void canBuildRequestLevelContainerWithLifecycle() {
         final PicoContextContainerFactory contextContainerFactory
-                = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor());
+                = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null);
 
         // Mock ServletContext
         final ServletContext servletContext = mockery.mock(ServletContext.class);
@@ -341,6 +345,51 @@
         assertTrue(startable.stopped);
     }
 
+    /**
+     * WAFFLE-52 : ensure PicoRegistrar is not constructed without passing ParameterResolver
+     */
+    @Test
+    public void canBuildRegistrar() throws Exception {
+        ParameterResolver parameterResolver = new StubParameterResolver();
+        SilentMonitor registrarMonitor = new SilentMonitor();
+        final PicoContextContainerFactory contextContainerFactory
+                = new PicoContextContainerFactory(messageResources, new SilentMonitor(), registrarMonitor, parameterResolver);
+
+        // Mock MutablePicoContainer
+        final MutablePicoContainer picoContainer = mockery.mock(MutablePicoContainer.class);
+
+        // Mock ContextContainer
+        final ContextContainer contextContainer = mockery.mock(ContextContainer.class);
+        mockery.checking(new Expectations() {
+            {
+                one(contextContainer).getDelegate();
+                will(returnValue(picoContainer));
+            }
+        });
+
+        Registrar registrar = contextContainerFactory.createRegistrar(contextContainer);
+
+        // Ensure 'picoContainer' was set
+        Field picoContainerField = PicoRegistrar.class.getDeclaredField("picoContainer");
+        picoContainerField.setAccessible(true);
+        assertSame(picoContainer, picoContainerField.get(registrar));
+
+        // ensure 'parameterResolver' was set
+        Field parameterResolverField = PicoRegistrar.class.getDeclaredField("parameterResolver");
+        parameterResolverField.setAccessible(true);
+        assertSame(parameterResolver, parameterResolverField.get(registrar));
+
+        // ensure 'picoLifecycleStrategy' is not Null
+        Field lifecycleStrategyField = PicoRegistrar.class.getDeclaredField("lifecycleStrategy");
+        lifecycleStrategyField.setAccessible(true);
+        assertTrue(lifecycleStrategyField.get(registrar) instanceof PicoLifecycleStrategy);
+
+        // ensure 'registrarMonitor' was set
+        Field registrarMonitorField = PicoRegistrar.class.getDeclaredField("registrarMonitor");
+        registrarMonitorField.setAccessible(true);
+        assertSame(registrarMonitor, registrarMonitorField.get(registrar));
+    }
+
     public class StubStartable implements Startable {
         boolean started = false;
         boolean stopped = false;

Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico/RubyAwarePicoContextContainerFactoryTest.java (548 => 549)

--- trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico/RubyAwarePicoContextContainerFactoryTest.java	2008-01-14 13:49:27 UTC (rev 548)
+++ trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico/RubyAwarePicoContextContainerFactoryTest.java	2008-01-15 04:27:44 UTC (rev 549)
@@ -17,7 +17,7 @@
     @Test
     public void canBuildApplicationContextContainer() {
         RubyAwarePicoContextContainerFactory factory
-                = new RubyAwarePicoContextContainerFactory(null, new SilentMonitor(), new SilentMonitor());
+                = new RubyAwarePicoContextContainerFactory(null, new SilentMonitor(), new SilentMonitor(), null);
         ContextContainer contextContainer = factory.buildApplicationContextContainer();
         PicoContainer picoContainer = (MutablePicoContainer)contextContainer.getDelegate();
         Ruby runtime = (Ruby) picoContainer.getComponentInstance(Ruby.class);


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to