- Revision
- 549
- Author
- mward
- Date
- 2008-01-14 22:27:44 -0600 (Mon, 14 Jan 2008)
Log Message
WAFFLE-52 : when initially refactoring for this fix I accidently had the PicoContextContainerFactory construct the PicoRegistrar with a 'null' for the ParameterResolver.
Modified Paths
- trunk/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoContextContainerFactory.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/context/pico/RubyAwarePicoContextContainerFactory.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoContextContainerFactoryTest.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico/RubyAwarePicoContextContainerFactoryTest.java
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:
