- Revision
- 869
- Author
- paul
- Date
- 2009-01-15 05:36:17 -0600 (Thu, 15 Jan 2009)
Log Message
merge some interface with impl
Modified Paths
- sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/ContextContainerFactory.java
- sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java
- sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/pico/ScriptedPicoContextContainerFactory.java
- sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java
- sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/monitor/ContextMonitor.java
- sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/WaffleRequestFilterTest.java
- sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java
- sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoContextContainerFactoryTest.java
- sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoWaffleContextListenerTest.java
- sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java
- sandbox/v2experiment/waffle-ruby/src/main/java/org/codehaus/waffle/context/pico/RubyPicoContextContainerFactory.java
- sandbox/v2experiment/waffle-ruby/src/test/java/org/codehaus/waffle/context/pico/RubyPicoContextContainerFactoryTest.java
Removed Paths
Diff
Modified: sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/ContextContainerFactory.java (868 => 869)
--- sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/ContextContainerFactory.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/ContextContainerFactory.java 2009-01-15 11:36:17 UTC (rev 869) @@ -4,9 +4,26 @@ package org.codehaus.waffle.context; import org.picocontainer.MutablePicoContainer; +import org.picocontainer.ComponentMonitor; +import org.picocontainer.LifecycleStrategy; +import org.picocontainer.PicoContainer; +import org.picocontainer.DefaultPicoContainer; +import org.picocontainer.monitors.NullComponentMonitor; +import org.codehaus.waffle.context.pico.PicoLifecycleStrategy; +import org.codehaus.waffle.context.pico.HttpSessionComponentAdapter; +import org.codehaus.waffle.monitor.RegistrarMonitor; +import org.codehaus.waffle.monitor.ContextMonitor; +import org.codehaus.waffle.registrar.pico.ParameterResolver; +import org.codehaus.waffle.registrar.pico.PicoRegistrar; +import org.codehaus.waffle.registrar.RegistrarAssistant; +import org.codehaus.waffle.registrar.Registrar; +import org.codehaus.waffle.i18n.MessageResources; +import org.codehaus.waffle.Constants; +import org.codehaus.waffle.WaffleException; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; /** * Implementors of this interface are responsible for maintaining the components defined in an applications Registrar. @@ -15,15 +32,159 @@ * * @author Michael Ward */ -public interface ContextContainerFactory { +public class ContextContainerFactory { + private final ComponentMonitor picoComponentMonitor = new NullComponentMonitor(); + private final LifecycleStrategy picoLifecycleStrategy = new PicoLifecycleStrategy(picoComponentMonitor); + private final RegistrarMonitor registrarMonitor; + private final ParameterResolver parameterResolver; - void initialize(ServletContext servletContext); + protected MessageResources getMessageResources() { + return messageResources; + } - void destroy(); + private final MessageResources messageResources; + private RegistrarAssistant registrarAssistant; + private MutablePicoContainer applicationContextContainer; + private final ContextMonitor contextMonitor; - MutablePicoContainer buildSessionLevelContainer(); + public ContextContainerFactory(MessageResources messageResources, + ContextMonitor contextMonitor, + RegistrarMonitor registrarMonitor, + ParameterResolver parameterResolver) { + this.messageResources = messageResources; + this.contextMonitor = contextMonitor; + this.registrarMonitor = registrarMonitor; + this.parameterResolver = parameterResolver; + } - MutablePicoContainer buildRequestLevelContainer(HttpServletRequest request); + public MutablePicoContainer buildApplicationContextContainer() { + return new ContextContainer(buildMutablePicoContainer(null), messageResources); + } - MutablePicoContainer getApplicationContextContainer(); + public MutablePicoContainer buildSessionLevelContainer() { + MutablePicoContainer delegate = buildMutablePicoContainer(applicationContextContainer); + delegate.addComponent(new HttpSessionComponentAdapter()); + + ContextContainer sessionContextContainer = new ContextContainer(delegate, messageResources); + registrarAssistant.executeDelegatingRegistrar(createRegistrar(sessionContextContainer), ContextLevel.SESSION); + getContextMonitor().sessionContextContainerCreated(applicationContextContainer); + return sessionContextContainer; + } + + public MutablePicoContainer buildRequestLevelContainer(HttpServletRequest request) { + try { + HttpSession session = request.getSession(); + ContextContainer sessionContextContainer = (ContextContainer) session.getAttribute(Constants.SESSION_CONTAINER_KEY); + if (sessionContextContainer == null) { + sessionContextContainer = (ContextContainer) buildSessionLevelContainer(); + session.setAttribute(Constants.SESSION_CONTAINER_KEY, sessionContextContainer); + sessionContextContainer.start(); + } + MutablePicoContainer delegate = sessionContextContainer.getDelegate(); + + ContextContainer requestContextContainer = new ContextContainer(buildMutablePicoContainer(delegate), messageResources); + registrarAssistant.executeDelegatingRegistrar(createRegistrar(requestContextContainer), ContextLevel.REQUEST); + getContextMonitor().requestContextContainerCreated(sessionContextContainer); + return requestContextContainer; + } finally { +//TODO: setting the locale from the request (which will by default return the server default locale) +// does not seem necessary given a default locale is already configured out-of-the-box +// but more seriously it overrides any configuration set via the MessageResourcesConfiguration +// hence impeding any real configurability. Need a clearer usecase for enabling this (MT) +// messageResources.useLocale(request.getLocale()); + } + } + + public Registrar createRegistrar(MutablePicoContainer contextContainer) { + Registrar registrar = new PicoRegistrar(contextContainer, parameterResolver, picoLifecycleStrategy, + registrarMonitor, picoComponentMonitor, messageResources); + getContextMonitor().registrarCreated(registrar, registrarMonitor); + return registrar; + } + + private MutablePicoContainer buildMutablePicoContainer(PicoContainer parent) { + return new DefaultPicoContainer(picoComponentMonitor, picoLifecycleStrategy, parent); + } + + protected ComponentMonitor getPicoComponentMonitor() { + return picoComponentMonitor; + } + + protected LifecycleStrategy getPicoLifecycleStrategy() { + return picoLifecycleStrategy; + } + + protected RegistrarMonitor getRegistrarMonitor() { + return registrarMonitor; + } + + protected ParameterResolver getParameterResolver() { + return parameterResolver; + } + + public RegistrarAssistant getRegistrarAssistant() { + return registrarAssistant; + } + + public void initialize(ServletContext servletContext) throws WaffleException { + try { + initializeRegistrar(servletContext); + servletContext.setAttribute(ContextContainerFactory.class.getName(), this); // register self to context + contextMonitor.contextInitialized(); + } catch (WaffleException e) { + contextMonitor.contextInitializationFailed(e); + throw e; // re-throwing exception after failure event has been monitored + } + } + + /** + * Create the Registrar from the ServletContext's InitParameter. + * + * @param servletContext + */ + private void initializeRegistrar(ServletContext servletContext) { + String registrarClassName = servletContext.getInitParameter(Registrar.class.getName()); + + try { + ClassLoader loader = this.getClass().getClassLoader(); + Class<?> registrarClass = loader.loadClass(registrarClassName); + registrarAssistant = new RegistrarAssistant(registrarClass, messageResources); + } catch (ClassNotFoundException e) { + contextMonitor.registrarNotFound(registrarClassName); + String message = messageResources.getMessageWithDefault("registrarNotFound", + "Registrar ''{0}'' defined as context-param in web.xml could not be found.", registrarClassName); + throw new WaffleException(message, e); + } + + // build application context container + applicationContextContainer = buildApplicationContextContainer(); + applicationContextContainer.addComponent(servletContext); + applicationContextContainer.addComponent(messageResources); + + buildApplicationLevelRegistry(); + applicationContextContainer.start(); + contextMonitor.applicationContextContainerStarted(); + } + + public void destroy() { + if (applicationContextContainer != null) { + applicationContextContainer.stop(); + applicationContextContainer.dispose(); + applicationContextContainer = null; + contextMonitor.applicationContextContainerDestroyed(); + } + } + + private void buildApplicationLevelRegistry() { + Registrar registrar = createRegistrar(applicationContextContainer); + registrarAssistant.executeDelegatingRegistrar(registrar, ContextLevel.APPLICATION); + } + + public MutablePicoContainer getApplicationContextContainer() { + return applicationContextContainer; + } + + protected ContextMonitor getContextMonitor() { + return contextMonitor; + } }
Modified: sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java (868 => 869)
--- sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java 2009-01-15 11:36:17 UTC (rev 869) @@ -85,7 +85,7 @@ register(ViewDataBinder.class, IntrospectingViewDataBinder.class, servletContext); register(StringTransmuter.class, DefaultStringTransmuter.class, servletContext); register(ValueConverterFinder.class, OgnlValueConverterFinder.class, servletContext); - register(ContextContainerFactory.class, PicoContextContainerFactory.class, servletContext); + register(ContextContainerFactory.class, ContextContainerFactory.class, servletContext); register(ControllerDefinitionFactory.class, ContextControllerDefinitionFactory.class, servletContext); register(ControllerNameResolver.class, ContextPathControllerNameResolver.class, servletContext); register(MessageResources.class, DefaultMessageResources.class, servletContext);
Deleted: sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoContextContainerFactory.java (868 => 869)
--- sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoContextContainerFactory.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoContextContainerFactory.java 2009-01-15 11:36:17 UTC (rev 869) @@ -1,193 +0,0 @@ -/* - * Copyright (c) terms as published in http://waffle.codehaus.org/license.html - */ -package org.codehaus.waffle.context.pico; - -import org.codehaus.waffle.Constants; -import org.codehaus.waffle.WaffleException; -import org.codehaus.waffle.context.ContextContainer; -import org.codehaus.waffle.context.ContextLevel; -import org.codehaus.waffle.context.ContextContainerFactory; -import org.codehaus.waffle.i18n.MessageResources; -import org.codehaus.waffle.monitor.ContextMonitor; -import org.codehaus.waffle.monitor.RegistrarMonitor; -import org.codehaus.waffle.registrar.Registrar; -import org.codehaus.waffle.registrar.RegistrarAssistant; -import org.codehaus.waffle.registrar.pico.ParameterResolver; -import org.codehaus.waffle.registrar.pico.PicoRegistrar; -import org.picocontainer.ComponentMonitor; -import org.picocontainer.DefaultPicoContainer; -import org.picocontainer.LifecycleStrategy; -import org.picocontainer.MutablePicoContainer; -import org.picocontainer.PicoContainer; -import org.picocontainer.monitors.NullComponentMonitor; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; -import javax.servlet.ServletContext; - -/** - * PicoContainer-based implementation of context container factory. - * - * @author Michael Ward - * @author Mauro Talevi - */ -public class PicoContextContainerFactory implements ContextContainerFactory { - private final ComponentMonitor picoComponentMonitor = new NullComponentMonitor(); - private final LifecycleStrategy picoLifecycleStrategy = new PicoLifecycleStrategy(picoComponentMonitor); - private final RegistrarMonitor registrarMonitor; - private final ParameterResolver parameterResolver; - - protected MessageResources getMessageResources() { - return messageResources; - } - - private final MessageResources messageResources; - private RegistrarAssistant registrarAssistant; - private ContextContainer applicationContextContainer; - private final ContextMonitor contextMonitor; - - public PicoContextContainerFactory(MessageResources messageResources, - ContextMonitor contextMonitor, - RegistrarMonitor registrarMonitor, - ParameterResolver parameterResolver) { - this.messageResources = messageResources; - this.contextMonitor = contextMonitor; - this.registrarMonitor = registrarMonitor; - this.parameterResolver = parameterResolver; - } - - protected ContextContainer buildApplicationContextContainer() { - return new ContextContainer(buildMutablePicoContainer(null), messageResources); - } - - public MutablePicoContainer buildSessionLevelContainer() { - MutablePicoContainer parentContainer = (MutablePicoContainer) applicationContextContainer.getDelegate(); - MutablePicoContainer delegate = buildMutablePicoContainer(parentContainer); - delegate.addComponent(new HttpSessionComponentAdapter()); - - ContextContainer sessionContextContainer = new ContextContainer(delegate, messageResources); - registrarAssistant.executeDelegatingRegistrar(createRegistrar(sessionContextContainer), ContextLevel.SESSION); - getContextMonitor().sessionContextContainerCreated(applicationContextContainer); - return sessionContextContainer; - } - - public MutablePicoContainer buildRequestLevelContainer(HttpServletRequest request) { - try { - HttpSession session = request.getSession(); - ContextContainer sessionContextContainer = (ContextContainer) session.getAttribute(Constants.SESSION_CONTAINER_KEY); - if (sessionContextContainer == null) { - sessionContextContainer = (ContextContainer) buildSessionLevelContainer(); - session.setAttribute(Constants.SESSION_CONTAINER_KEY, sessionContextContainer); - sessionContextContainer.start(); - } - MutablePicoContainer delegate = sessionContextContainer.getDelegate(); - - ContextContainer requestContextContainer = new ContextContainer(buildMutablePicoContainer(delegate), messageResources); - registrarAssistant.executeDelegatingRegistrar(createRegistrar(requestContextContainer), ContextLevel.REQUEST); - getContextMonitor().requestContextContainerCreated(sessionContextContainer); - return requestContextContainer; - } finally { -//TODO: setting the locale from the request (which will by default return the server default locale) -// does not seem necessary given a default locale is already configured out-of-the-box -// but more seriously it overrides any configuration set via the MessageResourcesConfiguration -// hence impeding any real configurability. Need a clearer usecase for enabling this (MT) -// messageResources.useLocale(request.getLocale()); - } - } - - protected Registrar createRegistrar(MutablePicoContainer contextContainer) { - Registrar registrar = new PicoRegistrar(contextContainer, parameterResolver, picoLifecycleStrategy, - registrarMonitor, picoComponentMonitor, messageResources); - getContextMonitor().registrarCreated(registrar, registrarMonitor); - return registrar; - } - - private MutablePicoContainer buildMutablePicoContainer(PicoContainer parent) { - return new DefaultPicoContainer(picoComponentMonitor, picoLifecycleStrategy, parent); - } - - protected ComponentMonitor getPicoComponentMonitor() { - return picoComponentMonitor; - } - - protected LifecycleStrategy getPicoLifecycleStrategy() { - return picoLifecycleStrategy; - } - - protected RegistrarMonitor getRegistrarMonitor() { - return registrarMonitor; - } - - protected ParameterResolver getParameterResolver() { - return parameterResolver; - } - - public RegistrarAssistant getRegistrarAssistant() { - return registrarAssistant; - } - - public void initialize(ServletContext servletContext) throws WaffleException { - try { - initializeRegistrar(servletContext); - servletContext.setAttribute(ContextContainerFactory.class.getName(), this); // register self to context - contextMonitor.contextInitialized(); - } catch (WaffleException e) { - contextMonitor.contextInitializationFailed(e); - throw e; // re-throwing exception after failure event has been monitored - } - } - - /** - * Create the Registrar from the ServletContext's InitParameter. - * - * @param servletContext - */ - private void initializeRegistrar(ServletContext servletContext) { - String registrarClassName = servletContext.getInitParameter(Registrar.class.getName()); - - try { - ClassLoader loader = this.getClass().getClassLoader(); - Class<?> registrarClass = loader.loadClass(registrarClassName); - registrarAssistant = new RegistrarAssistant(registrarClass, messageResources); - } catch (ClassNotFoundException e) { - contextMonitor.registrarNotFound(registrarClassName); - String message = messageResources.getMessageWithDefault("registrarNotFound", - "Registrar ''{0}'' defined as context-param in web.xml could not be found.", registrarClassName); - throw new WaffleException(message, e); - } - - // build application context container - applicationContextContainer = buildApplicationContextContainer(); - applicationContextContainer.addComponent(servletContext); - applicationContextContainer.addComponent(messageResources); - - buildApplicationLevelRegistry(); - applicationContextContainer.start(); - contextMonitor.applicationContextContainerStarted(); - } - - public void destroy() { - if (applicationContextContainer != null) { - applicationContextContainer.stop(); - applicationContextContainer.dispose(); - applicationContextContainer = null; - contextMonitor.applicationContextContainerDestroyed(); - } - } - - private void buildApplicationLevelRegistry() { - Registrar registrar = createRegistrar(applicationContextContainer); - registrarAssistant.executeDelegatingRegistrar(registrar, ContextLevel.APPLICATION); - } - - public ContextContainer getApplicationContextContainer() { - return applicationContextContainer; - } - - protected ContextMonitor getContextMonitor() { - return contextMonitor; - } - - -}
Modified: sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/pico/ScriptedPicoContextContainerFactory.java (868 => 869)
--- sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/pico/ScriptedPicoContextContainerFactory.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/context/pico/ScriptedPicoContextContainerFactory.java 2009-01-15 11:36:17 UTC (rev 869) @@ -4,12 +4,14 @@ package org.codehaus.waffle.context.pico; import org.codehaus.waffle.context.ContextContainer; +import org.codehaus.waffle.context.ContextContainerFactory; import org.codehaus.waffle.i18n.MessageResources; import org.codehaus.waffle.monitor.ContextMonitor; import org.codehaus.waffle.monitor.RegistrarMonitor; import org.codehaus.waffle.registrar.pico.ParameterResolver; +import org.picocontainer.MutablePicoContainer; -public abstract class ScriptedPicoContextContainerFactory extends PicoContextContainerFactory { +public abstract class ScriptedPicoContextContainerFactory extends ContextContainerFactory { public ScriptedPicoContextContainerFactory(MessageResources messageResources, ContextMonitor contextMonitor, @@ -19,14 +21,14 @@ } @Override - public ContextContainer buildApplicationContextContainer() { - ContextContainer contextContainer = super.buildApplicationContextContainer(); + public MutablePicoContainer buildApplicationContextContainer() { + MutablePicoContainer contextContainer = super.buildApplicationContextContainer(); registerScriptComponents(contextContainer); return contextContainer; } - protected abstract void registerScriptComponents(ContextContainer contextContainer); + protected abstract void registerScriptComponents(MutablePicoContainer contextContainer); }
Modified: sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java (868 => 869)
--- sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java 2009-01-15 11:36:17 UTC (rev 869) @@ -26,13 +26,13 @@ import org.codehaus.waffle.action.MethodDefinition; import org.codehaus.waffle.action.HierarchicalArgumentResolver.Scope; import org.codehaus.waffle.bind.ValueConverter; -import org.codehaus.waffle.context.ContextContainer; import org.codehaus.waffle.controller.ControllerDefinition; import org.codehaus.waffle.registrar.Registrar; import org.codehaus.waffle.validation.BindErrorMessage; import org.codehaus.waffle.view.RedirectView; import org.codehaus.waffle.view.ResponderView; import org.codehaus.waffle.view.View; +import org.picocontainer.MutablePicoContainer; /** * Abstract implementation of Monitor that delegates writing to concrete subclasses. @@ -320,11 +320,11 @@ write("applicationContextContainerDestroyed"); } - public void sessionContextContainerCreated(ContextContainer applicationContextContainer) { + public void sessionContextContainerCreated(MutablePicoContainer applicationContextContainer) { write("sessionContextContainerCreated", applicationContextContainer); } - public void requestContextContainerCreated(ContextContainer sessionContextContainer){ + public void requestContextContainerCreated(MutablePicoContainer sessionContextContainer){ write("requestContextContainerCreated", sessionContextContainer); }
Modified: sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/monitor/ContextMonitor.java (868 => 869)
--- sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/monitor/ContextMonitor.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-core/src/main/java/org/codehaus/waffle/monitor/ContextMonitor.java 2009-01-15 11:36:17 UTC (rev 869) @@ -6,6 +6,7 @@ import org.codehaus.waffle.WaffleException; import org.codehaus.waffle.context.ContextContainer; import org.codehaus.waffle.registrar.Registrar; +import org.picocontainer.MutablePicoContainer; /** * A monitor for context-related events @@ -26,8 +27,8 @@ void applicationContextContainerDestroyed(); - void sessionContextContainerCreated(ContextContainer applicationContextContainer); + void sessionContextContainerCreated(MutablePicoContainer applicationContextContainer); - void requestContextContainerCreated(ContextContainer sessionContextContainer); + void requestContextContainerCreated(MutablePicoContainer sessionContextContainer); }
Modified: sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/WaffleRequestFilterTest.java (868 => 869)
--- sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/WaffleRequestFilterTest.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/WaffleRequestFilterTest.java 2009-01-15 11:36:17 UTC (rev 869) @@ -1,7 +1,10 @@ package org.codehaus.waffle.context; import org.codehaus.waffle.ComponentRegistry; -import org.codehaus.waffle.context.pico.PicoContextContainerFactory; +import org.codehaus.waffle.registrar.pico.ParameterResolver; +import org.codehaus.waffle.monitor.ContextMonitor; +import org.codehaus.waffle.monitor.RegistrarMonitor; +import org.codehaus.waffle.i18n.MessageResources; import org.jmock.Expectations; import org.jmock.Mockery; import org.jmock.integration.junit4.JMock; @@ -39,7 +42,7 @@ mockery.checking(new Expectations() { { one(registry).getContextContainerFactory(); - will(returnValue(new PicoContextContainerFactory(null, null, null, null))); + will(returnValue(new ContextContainerFactory(null, null, null, null))); } }); @@ -71,7 +74,7 @@ Field field = WaffleRequestFilter.class.getDeclaredField("contextContainerFactory"); field.setAccessible(true); - field.set(filter, new PicoContextContainerFactory(null,null,null,null)); + field.set(filter, new ContextContainerFactory(null,null,null,null)); assertNotNull(field.get(filter)); filter.destroy(); @@ -97,13 +100,11 @@ }); // Mock ContextContainerFactory - final ContextContainerFactory contextContainerFactory = mockery.mock(ContextContainerFactory.class); - mockery.checking(new Expectations() { - { - one(contextContainerFactory).buildRequestLevelContainer((HttpServletRequest) with(an(HttpServletRequest.class))); - will(returnValue(container)); + final ContextContainerFactory contextContainerFactory = new ContextContainerFactory(mockery.mock(MessageResources.class), mockery.mock(ContextMonitor.class), mockery.mock(RegistrarMonitor.class), mockery.mock(ParameterResolver.class)) { + public MutablePicoContainer buildRequestLevelContainer(HttpServletRequest request) { + return container; } - }); + }; // Mock HttpServletRequest final HttpServletRequest request = mockery.mock(HttpServletRequest.class);
Modified: sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java (868 => 869)
--- sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java 2009-01-15 11:36:17 UTC (rev 869) @@ -191,7 +191,7 @@ one(servletContext).getInitParameter(BindMonitor.class.getName()); will(returnValue(StubMonitor.class.getName())); one(servletContext).getInitParameter(ContextContainerFactory.class.getName()); - will(returnValue(PicoContextContainerFactory.class.getName())); + will(returnValue(ContextContainerFactory.class.getName())); one(servletContext).getInitParameter(ContextMonitor.class.getName()); will(returnValue(StubMonitor.class.getName())); one(servletContext).getInitParameter(ControllerDefinitionFactory.class.getName()); @@ -234,7 +234,7 @@ assertTrue(componentRegistry.getBindMonitor() instanceof StubMonitor); assertTrue(componentRegistry.getControllerNameResolver() instanceof StubControllerNameResolver); assertTrue(componentRegistry.getControllerDefinitionFactory() instanceof StubControllerDefinitionFactory); - assertTrue(componentRegistry.getContextContainerFactory() instanceof PicoContextContainerFactory); + assertTrue(componentRegistry.getContextContainerFactory() instanceof ContextContainerFactory); assertFalse(componentRegistry.getControllerDataBinder() instanceof OgnlControllerDataBinder); assertTrue(componentRegistry.getMethodDefinitionFinder() instanceof StubMethodDefinitionFinder); assertTrue(componentRegistry.getMethodNameResolver() instanceof StubMethodNameResolver);
Modified: sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoContextContainerFactoryTest.java (868 => 869)
--- sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoContextContainerFactoryTest.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoContextContainerFactoryTest.java 2009-01-15 11:36:17 UTC (rev 869) @@ -61,8 +61,8 @@ @Test public void canBuildEachContextLevelContainer() { - final PicoContextContainerFactory contextContainerFactory - = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null); + final ContextContainerFactory contextContainerFactory + = new ContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null); // Mock ServletContext final ServletContext servletContext = mockery.mock(ServletContext.class); @@ -76,7 +76,7 @@ contextContainerFactory.initialize(servletContext); // Application - ContextContainer applicationContainer = contextContainerFactory.getApplicationContextContainer(); + MutablePicoContainer applicationContainer = contextContainerFactory.getApplicationContextContainer(); Assert.assertNotNull(applicationContainer.getComponent(ServletContext.class)); assertSame(messageResources, applicationContainer.getComponent(MessageResources.class)); ApplicationLevelComponent applicationLevelComponent = @@ -132,7 +132,7 @@ @Test public void canInitializeContext() { final ContextContainerFactory contextContainerFactory - = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null); + = new ContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null); // Mock ServletContext final ServletContext servletContext = mockery.mock(ServletContext.class); @@ -230,28 +230,27 @@ @Test public void canBuildApplicationContextContainerWithLifecycle() { - PicoContextContainerFactory contextContainerFactory - = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null); - ContextContainer container = contextContainerFactory.buildApplicationContextContainer(); + ContextContainerFactory contextContainerFactory + = new ContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null); + MutablePicoContainer container = contextContainerFactory.buildApplicationContextContainer(); StubStartable startable = new StubStartable(); container.addComponent(startable); // Test lifecycle - MutablePicoContainer picoContainer = (MutablePicoContainer) container.getDelegate(); - picoContainer.start(); + container.start(); assertTrue(startable.started); assertFalse(startable.stopped); - picoContainer.stop(); + container.stop(); assertTrue(startable.stopped); } @Test public void canBuildSessionLevelContainerWithLifecycle() { - final PicoContextContainerFactory contextContainerFactory - = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null); + final ContextContainerFactory contextContainerFactory + = new ContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null); // Mock ServletContext final ServletContext servletContext = mockery.mock(ServletContext.class); @@ -280,8 +279,8 @@ @Test public void canBuildRequestLevelContainerWithLifecycle() { - final PicoContextContainerFactory contextContainerFactory - = new PicoContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null); + final ContextContainerFactory contextContainerFactory + = new ContextContainerFactory(messageResources, new SilentMonitor(), new SilentMonitor(), null); // Mock ServletContext final ServletContext servletContext = mockery.mock(ServletContext.class); @@ -341,8 +340,8 @@ public void canBuildRegistrar() throws Exception { ParameterResolver parameterResolver = new StubParameterResolver(); SilentMonitor registrarMonitor = new SilentMonitor(); - final PicoContextContainerFactory contextContainerFactory - = new PicoContextContainerFactory(messageResources, new SilentMonitor(), registrarMonitor, parameterResolver); + final ContextContainerFactory contextContainerFactory + = new ContextContainerFactory(messageResources, new SilentMonitor(), registrarMonitor, parameterResolver); // Mock ContextContainer final MutablePicoContainer contextContainer = mockery.mock(MutablePicoContainer.class);
Modified: sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoWaffleContextListenerTest.java (868 => 869)
--- sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoWaffleContextListenerTest.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoWaffleContextListenerTest.java 2009-01-15 11:36:17 UTC (rev 869) @@ -9,6 +9,11 @@ import org.codehaus.waffle.ComponentRegistry; import org.codehaus.waffle.Constants; +import org.codehaus.waffle.WaffleException; +import org.codehaus.waffle.registrar.pico.ParameterResolver; +import org.codehaus.waffle.monitor.RegistrarMonitor; +import org.codehaus.waffle.monitor.ContextMonitor; +import org.codehaus.waffle.i18n.MessageResources; import org.codehaus.waffle.context.ContextContainer; import org.codehaus.waffle.context.ContextContainerFactory; import org.codehaus.waffle.context.WaffleContextListener; @@ -16,6 +21,7 @@ import org.jmock.Mockery; import org.jmock.integration.junit4.JMock; import org.junit.Test; +import static org.junit.Assert.assertEquals; import org.junit.runner.RunWith; import org.picocontainer.MutablePicoContainer; @@ -32,15 +38,18 @@ @Test public void canInvokeServletContextListenerMethods() { - // Mock ContextContainerFactory - final ContextContainerFactory contextContainerFactory = mockery.mock(ContextContainerFactory.class); - mockery.checking(new Expectations() { - { - one(contextContainerFactory).initialize((ServletContext) with(an(ServletContext.class))); - one(contextContainerFactory).destroy(); + final StringBuilder sb = new StringBuilder(); + + final ContextContainerFactory contextContainerFactory = new ContextContainerFactory(mockery.mock(MessageResources.class), mockery.mock(ContextMonitor.class), mockery.mock(RegistrarMonitor.class), mockery.mock(ParameterResolver.class)) { + public void initialize(ServletContext servletContext) throws WaffleException { + sb.append("init;"); } - }); + public void destroy() { + sb.append("destroy;"); + } + }; + // Mock ComponentRegistry final ComponentRegistry registry = mockery.mock(ComponentRegistry.class); mockery.checking(new Expectations() { @@ -72,6 +81,8 @@ // test the destroy waffleContextListener.contextDestroyed(event); + + assertEquals("init;destroy;", sb.toString()); } @Test @@ -89,15 +100,14 @@ } }); - // Mock ContextContainerFactory - final ContextContainerFactory contextContainerFactory = mockery.mock(ContextContainerFactory.class); - mockery.checking(new Expectations() { - { - one(contextContainerFactory).buildSessionLevelContainer(); - will(returnValue(container)); + final StringBuilder sb = new StringBuilder(); + + final ContextContainerFactory contextContainerFactory = new ContextContainerFactory(mockery.mock(MessageResources.class), mockery.mock(ContextMonitor.class), mockery.mock(RegistrarMonitor.class), mockery.mock(ParameterResolver.class)) { + public MutablePicoContainer buildSessionLevelContainer() { + sb.append("bs;"); + return container; } - }); - + }; setContextManager(waffleContextListener, contextContainerFactory); // Mock HttpSession @@ -115,6 +125,7 @@ // destroy waffleContextListener.sessionDestroyed(new HttpSessionEvent(httpSession)); + assertEquals("bs;", sb.toString()); } /**
Modified: sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java (868 => 869)
--- sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java 2009-01-15 11:36:17 UTC (rev 869) @@ -14,7 +14,6 @@ import org.codehaus.waffle.action.MethodDefinition; import org.codehaus.waffle.action.HierarchicalArgumentResolver.Scope; import org.codehaus.waffle.bind.ValueConverter; -import org.codehaus.waffle.context.ContextContainer; import org.codehaus.waffle.controller.ControllerDefinition; import org.codehaus.waffle.monitor.ActionMonitor; import org.codehaus.waffle.monitor.BindMonitor; @@ -29,6 +28,7 @@ import org.codehaus.waffle.view.RedirectView; import org.codehaus.waffle.view.ResponderView; import org.codehaus.waffle.view.View; +import org.picocontainer.MutablePicoContainer; public class StubMonitor implements ActionMonitor, BindMonitor, ContextMonitor, ControllerMonitor, RegistrarMonitor, ServletMonitor, ValidationMonitor, ViewMonitor { @@ -111,10 +111,10 @@ public void registrarNotFound(String registrarClassName) { } - public void requestContextContainerCreated(ContextContainer sessionContextContainer) { + public void requestContextContainerCreated(MutablePicoContainer sessionContextContainer) { } - public void sessionContextContainerCreated(ContextContainer applicationContextContainer) { + public void sessionContextContainerCreated(MutablePicoContainer applicationContextContainer) { } public void controllerNameResolved(String name, String path) {
Modified: sandbox/v2experiment/waffle-ruby/src/main/java/org/codehaus/waffle/context/pico/RubyPicoContextContainerFactory.java (868 => 869)
--- sandbox/v2experiment/waffle-ruby/src/main/java/org/codehaus/waffle/context/pico/RubyPicoContextContainerFactory.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-ruby/src/main/java/org/codehaus/waffle/context/pico/RubyPicoContextContainerFactory.java 2009-01-15 11:36:17 UTC (rev 869) @@ -12,7 +12,6 @@ import java.util.ArrayList; import org.codehaus.waffle.WaffleException; -import org.codehaus.waffle.context.ContextContainer; import org.codehaus.waffle.i18n.MessageResources; import org.codehaus.waffle.monitor.ContextMonitor; import org.codehaus.waffle.monitor.RegistrarMonitor; @@ -33,9 +32,8 @@ super(messageResources, contextMonitor, registrarMonitor, parameterResolver); } - protected void registerScriptComponents(ContextContainer contextContainer) { + protected void registerScriptComponents(MutablePicoContainer contextContainer) { // Register Ruby Runtime at Application level - MutablePicoContainer picoContainer = (MutablePicoContainer) contextContainer.getDelegate(); Ruby runtime = Ruby.newInstance(); runtime.getLoadService().init(new ArrayList<Object>()); // this must be called, else we won't be able to load // scripts!! @@ -49,12 +47,12 @@ // <script>:1:in `require': JAR entry string.rb not found in ~/jruby-example/exploded/WEB-INF/lib/core.jar // (IOError) - picoContainer.addComponent(Ruby.class, runtime); - picoContainer.as(CACHE).addComponent(RubyScriptLoader.class); + contextContainer.addComponent(Ruby.class, runtime); + contextContainer.as(CACHE).addComponent(RubyScriptLoader.class); } @Override - protected Registrar createRegistrar(MutablePicoContainer contextContainer) { // todo we need tests for this ... can this + public Registrar createRegistrar(MutablePicoContainer contextContainer) { // todo we need tests for this ... can this // be refactored cleaner? RegistrarMonitor registrarMonitor = getRegistrarMonitor(); Registrar registrar = new RubyScriptedRegistrar(contextContainer, getParameterResolver(),
Modified: sandbox/v2experiment/waffle-ruby/src/test/java/org/codehaus/waffle/context/pico/RubyPicoContextContainerFactoryTest.java (868 => 869)
--- sandbox/v2experiment/waffle-ruby/src/test/java/org/codehaus/waffle/context/pico/RubyPicoContextContainerFactoryTest.java 2009-01-15 11:08:10 UTC (rev 868) +++ sandbox/v2experiment/waffle-ruby/src/test/java/org/codehaus/waffle/context/pico/RubyPicoContextContainerFactoryTest.java 2009-01-15 11:36:17 UTC (rev 869) @@ -18,12 +18,11 @@ public void canBuildApplicationContextContainer() { RubyPicoContextContainerFactory factory = new RubyPicoContextContainerFactory(null, new SilentMonitor(), new SilentMonitor(), null); - ContextContainer contextContainer = factory.buildApplicationContextContainer(); - PicoContainer picoContainer = (MutablePicoContainer)contextContainer.getDelegate(); - Ruby runtime = picoContainer.getComponent(Ruby.class); + MutablePicoContainer contextContainer = factory.buildApplicationContextContainer(); + Ruby runtime = contextContainer.getComponent(Ruby.class); assertNotNull(runtime); - assertNotNull(picoContainer.getComponentAdapter(RubyScriptLoader.class)); + assertNotNull(contextContainer.getComponentAdapter(RubyScriptLoader.class)); // ensure mixin occurred RubyBoolean rubyBoolean = (RubyBoolean) runtime.evalScriptlet("Waffle::Controller.is_a? Module");
To unsubscribe from this list please visit:
