- Revision
- 380
- Author
- mauro
- Date
- 2007-11-15 10:13:04 -0600 (Thu, 15 Nov 2007)
Log Message
Added RegistrarMonitor.
Modified Paths
- trunk/core/src/main/java/org/codehaus/waffle/ComponentRegistry.java
- trunk/core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java
- trunk/core/src/main/java/org/codehaus/waffle/context/pico/PicoContextContainerFactory.java
- trunk/core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java
- trunk/core/src/main/java/org/codehaus/waffle/monitor/BindMonitor.java
- trunk/core/src/main/java/org/codehaus/waffle/monitor/ServletMonitor.java
- trunk/core/src/main/java/org/codehaus/waffle/registrar/Registrar.java
- trunk/core/src/main/java/org/codehaus/waffle/registrar/RubyAwareRegistrar.java
- trunk/core/src/main/java/org/codehaus/waffle/registrar/pico/PicoRegistrar.java
- trunk/core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java
- trunk/core/src/test/java/org/codehaus/waffle/registrar/RegistrarAssistantTest.java
- trunk/core/src/test/java/org/codehaus/waffle/registrar/pico/PicoRegistrarTest.java
- trunk/core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java
- trunk/examples/freemarker-example/src/test/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrarTest.java
- trunk/examples/paranamer-example/src/test/java/org/codehaus/waffle/example/paranamer/ParanamerRegistrarTest.java
- trunk/examples/simple-example/src/test/java/org/codehaus/waffle/example/simple/SimpleRegistrarTest.java
- trunk/extensions/mock/src/main/java/org/codehaus/waffle/mock/AbstractRegistrarMockery.java
- trunk/extensions/mock/src/main/java/org/codehaus/waffle/mock/PicoRegistrarMockery.java
Added Paths
Diff
Modified: trunk/core/src/main/java/org/codehaus/waffle/ComponentRegistry.java (379 => 380)
--- trunk/core/src/main/java/org/codehaus/waffle/ComponentRegistry.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/main/java/org/codehaus/waffle/ComponentRegistry.java 2007-11-15 16:13:04 UTC (rev 380) @@ -11,6 +11,7 @@ package org.codehaus.waffle; import ognl.TypeConverter; + import org.codehaus.waffle.action.ActionMethodExecutor; import org.codehaus.waffle.action.ActionMethodResponseHandler; import org.codehaus.waffle.action.ArgumentResolver; @@ -25,6 +26,7 @@ import org.codehaus.waffle.i18n.MessageResources; import org.codehaus.waffle.monitor.ActionMonitor; import org.codehaus.waffle.monitor.BindMonitor; +import org.codehaus.waffle.monitor.RegistrarMonitor; import org.codehaus.waffle.monitor.ServletMonitor; import org.codehaus.waffle.validation.Validator; import org.codehaus.waffle.view.ViewDispatcher; @@ -67,6 +69,8 @@ MethodNameResolver getMethodNameResolver(); + RegistrarMonitor getRegistrarMonitor(); + RequestAttributeBinder getRequestAttributeBinder(); ServletMonitor getServletMonitor();
Modified: trunk/core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java (379 => 380)
--- trunk/core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java 2007-11-15 16:13:04 UTC (rev 380) @@ -44,6 +44,7 @@ import org.codehaus.waffle.i18n.MessageResources; import org.codehaus.waffle.monitor.ActionMonitor; import org.codehaus.waffle.monitor.BindMonitor; +import org.codehaus.waffle.monitor.RegistrarMonitor; import org.codehaus.waffle.monitor.ServletMonitor; import org.codehaus.waffle.monitor.SilentMonitor; import org.codehaus.waffle.validation.DefaultValidator; @@ -88,6 +89,7 @@ register(MessageResources.class, DefaultMessageResources.class, servletContext); register(MethodDefinitionFinder.class, AnnotatedMethodDefinitionFinder.class, servletContext); register(MethodNameResolver.class, RequestParameterMethodNameResolver.class, servletContext); + register(RegistrarMonitor.class, SilentMonitor.class, servletContext); register(RequestAttributeBinder.class, IntrospectingRequestAttributeBinder.class, servletContext); register(ServletMonitor.class, SilentMonitor.class, servletContext); register(TypeConverter.class, OgnlTypeConverter.class, servletContext); @@ -245,6 +247,10 @@ return locateByType(ActionMonitor.class); } + public RegistrarMonitor getRegistrarMonitor() { + return locateByType(RegistrarMonitor.class); + } + public RequestAttributeBinder getRequestAttributeBinder() { return locateByType(RequestAttributeBinder.class); }
Modified: trunk/core/src/main/java/org/codehaus/waffle/context/pico/PicoContextContainerFactory.java (379 => 380)
--- trunk/core/src/main/java/org/codehaus/waffle/context/pico/PicoContextContainerFactory.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/main/java/org/codehaus/waffle/context/pico/PicoContextContainerFactory.java 2007-11-15 16:13:04 UTC (rev 380) @@ -10,21 +10,23 @@ *****************************************************************************/ package org.codehaus.waffle.context.pico; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + import org.codehaus.waffle.Constants; import org.codehaus.waffle.context.AbstractContextContainerFactory; import org.codehaus.waffle.context.ContextContainer; import org.codehaus.waffle.context.ContextLevel; import org.codehaus.waffle.i18n.MessageResources; +import org.codehaus.waffle.monitor.RegistrarMonitor; +import org.codehaus.waffle.monitor.SilentMonitor; +import org.codehaus.waffle.registrar.Registrar; import org.codehaus.waffle.registrar.pico.PicoRegistrar; -import org.codehaus.waffle.registrar.Registrar; import org.picocontainer.MutablePicoContainer; import org.picocontainer.PicoContainer; import org.picocontainer.defaults.DefaultPicoContainer; import org.picocontainer.monitors.NullComponentMonitor; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; - /** * @author Michael Ward * @author Mauro Talevi @@ -71,7 +73,12 @@ } protected Registrar createRegistrar(ContextContainer contextContainer) { - return new PicoRegistrar((MutablePicoContainer) contextContainer.getDelegate()); + RegistrarMonitor registrarMonitor = contextContainer.getComponentInstanceOfType(RegistrarMonitor.class); + if ( registrarMonitor == null ){ + registrarMonitor = new SilentMonitor(); + // TODO monitor it + } + return new PicoRegistrar((MutablePicoContainer) contextContainer.getDelegate(), registrarMonitor); } private MutablePicoContainer buildMutablePicoContainer(PicoContainer parent) {
Modified: trunk/core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java (379 => 380)
--- trunk/core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java 2007-11-15 16:13:04 UTC (rev 380) @@ -37,7 +37,7 @@ * * @author Mauro Talevi */ -public abstract class AbstractWritingMonitor implements ActionMonitor, BindMonitor, ServletMonitor { +public abstract class AbstractWritingMonitor implements ActionMonitor, BindMonitor, RegistrarMonitor, ServletMonitor { private Map<String, Level> levels; private Map<String, String> templates; @@ -175,6 +175,15 @@ write("viewDispatched", view); } + public void componentRegistered(Object key, Class<?> clazz, Object[] parameters) { + } + + public void instanceRegistered(Object key, Object instance) { + } + + public void nonCachingComponentRegistered(Object key, Class<?> clazz, Object[] parameters) { + } + public void servletServiceFailed(Exception cause){ write("servletServiceFailed", cause); }
Modified: trunk/core/src/main/java/org/codehaus/waffle/monitor/BindMonitor.java (379 => 380)
--- trunk/core/src/main/java/org/codehaus/waffle/monitor/BindMonitor.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/main/java/org/codehaus/waffle/monitor/BindMonitor.java 2007-11-15 16:13:04 UTC (rev 380) @@ -12,7 +12,6 @@ import org.codehaus.waffle.validation.BindErrorMessage; - /** * A monitor for bind-related events *
Added: trunk/core/src/main/java/org/codehaus/waffle/monitor/RegistrarMonitor.java (0 => 380)
--- trunk/core/src/main/java/org/codehaus/waffle/monitor/RegistrarMonitor.java (rev 0) +++ trunk/core/src/main/java/org/codehaus/waffle/monitor/RegistrarMonitor.java 2007-11-15 16:13:04 UTC (rev 380) @@ -0,0 +1,26 @@ +/***************************************************************************** + * Copyright (C) 2005,2006 Michael Ward * + * All rights reserved. * + * ------------------------------------------------------------------------- * + * The software in this package is published under the terms of the BSD * + * style license a copy of which has been included with this distribution in * + * the LICENSE.txt file. * + * * + * Original code by: Mauro Talevi * + *****************************************************************************/ +package org.codehaus.waffle.monitor; + +/** + * A monitor for registrar-related events + * + * @author Mauro Talevi + */ +public interface RegistrarMonitor extends Monitor { + + void componentRegistered(Object key, Class<?> clazz, Object[] parameters); + + void nonCachingComponentRegistered(Object key, Class<?> clazz, Object[] parameters); + + void instanceRegistered(Object key, Object instance); + +}
Modified: trunk/core/src/main/java/org/codehaus/waffle/monitor/ServletMonitor.java (379 => 380)
--- trunk/core/src/main/java/org/codehaus/waffle/monitor/ServletMonitor.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/main/java/org/codehaus/waffle/monitor/ServletMonitor.java 2007-11-15 16:13:04 UTC (rev 380) @@ -10,8 +10,6 @@ *****************************************************************************/ package org.codehaus.waffle.monitor; - - /** * A monitor for servlet-related events *
Modified: trunk/core/src/main/java/org/codehaus/waffle/registrar/Registrar.java (379 => 380)
--- trunk/core/src/main/java/org/codehaus/waffle/registrar/Registrar.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/main/java/org/codehaus/waffle/registrar/Registrar.java 2007-11-15 16:13:04 UTC (rev 380) @@ -11,24 +11,24 @@ package org.codehaus.waffle.registrar; /** - * Defines the available methods for registering Actions and Components. + * Defines the available methods for registering Controllers and Components. * * @author Michael Ward * @author Mauro Talevi */ public interface Registrar { - void register(Class clazz, Object... parameters); + void register(Class<?> type, Object... parameters); - void register(Object key, Class clazz, Object... parameters); + void register(Object key, Class<?> type, Object... parameters); void registerInstance(Object instance); void registerInstance(Object key, Object instance); - void registerNonCaching(Class clazz, Object... parameters); + void registerNonCaching(Class<?> type, Object... parameters); - void registerNonCaching(Object key, Class clazz, Object... parameters); + void registerNonCaching(Object key, Class<?> type, Object... parameters); void application();
Modified: trunk/core/src/main/java/org/codehaus/waffle/registrar/RubyAwareRegistrar.java (379 => 380)
--- trunk/core/src/main/java/org/codehaus/waffle/registrar/RubyAwareRegistrar.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/main/java/org/codehaus/waffle/registrar/RubyAwareRegistrar.java 2007-11-15 16:13:04 UTC (rev 380) @@ -3,4 +3,5 @@ public interface RubyAwareRegistrar { void registerRubyScript(String key, String className); + }
Modified: trunk/core/src/main/java/org/codehaus/waffle/registrar/pico/PicoRegistrar.java (379 => 380)
--- trunk/core/src/main/java/org/codehaus/waffle/registrar/pico/PicoRegistrar.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/main/java/org/codehaus/waffle/registrar/pico/PicoRegistrar.java 2007-11-15 16:13:04 UTC (rev 380) @@ -10,6 +10,7 @@ *****************************************************************************/ package org.codehaus.waffle.registrar.pico; +import org.codehaus.waffle.monitor.RegistrarMonitor; import org.codehaus.waffle.registrar.Registrar; import org.codehaus.waffle.registrar.RubyAwareRegistrar; import org.picocontainer.ComponentAdapter; @@ -28,21 +29,24 @@ */ public class PicoRegistrar implements Registrar, RubyAwareRegistrar { private final MutablePicoContainer picoContainer; + private final RegistrarMonitor registrarMonitor; - public PicoRegistrar(MutablePicoContainer picoContainer) { + public PicoRegistrar(MutablePicoContainer picoContainer, RegistrarMonitor registrarMonitor) { this.picoContainer = picoContainer; + this.registrarMonitor = registrarMonitor; } - public void register(Class clazz, Object ... parameters) { - this.register(clazz, clazz, parameters); + public void register(Class<?> type, Object ... parameters) { + this.register(type, type, parameters); } - public void register(Object key, Class clazz, Object ... parameters) { + public void register(Object key, Class<?> type, Object ... parameters) { if (parameters.length == 0) { - picoContainer.registerComponentImplementation(key, clazz); + picoContainer.registerComponentImplementation(key, type); } else { - picoContainer.registerComponentImplementation(key, clazz, picoParameters(parameters)); + picoContainer.registerComponentImplementation(key, type, picoParameters(parameters)); } + registrarMonitor.componentRegistered(key, type, parameters); } public void registerInstance(Object instance) { @@ -51,28 +55,30 @@ public void registerInstance(Object key, Object instance) { picoContainer.registerComponentInstance(key, instance); + registrarMonitor.instanceRegistered(key, instance); } - public void registerNonCaching(Class clazz, Object ... parameters) { - this.registerNonCaching(clazz, clazz, parameters); + public void registerNonCaching(Class<?> type, Object ... parameters) { + this.registerNonCaching(type, type, parameters); } - public void registerNonCaching(Object key, Class clazz, Object ... parameters) { + public void registerNonCaching(Object key, Class<?> type, Object ... parameters) { ConstructorInjectionComponentAdapter componentAdapter; if (parameters.length == 0) { - componentAdapter = new ConstructorInjectionComponentAdapter(key, clazz); + componentAdapter = new ConstructorInjectionComponentAdapter(key, type); } else { - componentAdapter = new ConstructorInjectionComponentAdapter(key, clazz, picoParameters(parameters)); + componentAdapter = new ConstructorInjectionComponentAdapter(key, type, picoParameters(parameters)); } picoContainer.registerComponent(componentAdapter); + registrarMonitor.nonCachingComponentRegistered(key, type, parameters); } public void registerRubyScript(String key, String className) { ComponentAdapter componentAdapter = new RubyScriptComponentAdapter(key, className); - CachingComponentAdapter cachingComponentAcdapter = new CachingComponentAdapter(componentAdapter); - this.registerComponentAdapter(cachingComponentAcdapter); + CachingComponentAdapter cachingComponentAdapter = new CachingComponentAdapter(componentAdapter); + this.registerComponentAdapter(cachingComponentAdapter); } public void registerComponentAdapter(ComponentAdapter componentAdapter) {
Modified: trunk/core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java (379 => 380)
--- trunk/core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java 2007-11-15 16:13:04 UTC (rev 380) @@ -45,6 +45,7 @@ import org.codehaus.waffle.monitor.AbstractWritingMonitor; import org.codehaus.waffle.monitor.ActionMonitor; import org.codehaus.waffle.monitor.BindMonitor; +import org.codehaus.waffle.monitor.RegistrarMonitor; import org.codehaus.waffle.monitor.ServletMonitor; import org.codehaus.waffle.testmodel.StubActionMethodExecutor; import org.codehaus.waffle.testmodel.StubActionMethodResponseHandler; @@ -128,7 +129,7 @@ { one(servletContext).getInitParameterNames(); will(returnValue(EMPTY_ENUMERATION)); - exactly(19).of(servletContext).getInitParameter(with(any(String.class))); + exactly(20).of(servletContext).getInitParameter(with(any(String.class))); } }); @@ -138,18 +139,19 @@ assertTrue(componentRegistry.getActionMethodResponseHandler() instanceof DefaultActionMethodResponseHandler); assertTrue(componentRegistry.getActionMonitor() instanceof AbstractWritingMonitor); assertTrue(componentRegistry.getBindErrorMessageResolver() instanceof DefaultBindErrorMessageResolver); - assertTrue(componentRegistry.getDataBinder() instanceof OgnlDataBinder); assertTrue(componentRegistry.getBindMonitor() instanceof AbstractWritingMonitor); assertTrue(componentRegistry.getControllerNameResolver() instanceof ContextPathControllerNameResolver); assertTrue(componentRegistry.getControllerDefinitionFactory() instanceof ContextControllerDefinitionFactory); assertTrue(componentRegistry.getContextContainerFactory() instanceof AbstractContextContainerFactory); + assertTrue(componentRegistry.getDataBinder() instanceof OgnlDataBinder); assertTrue(componentRegistry.getMethodNameResolver() instanceof RequestParameterMethodNameResolver); assertTrue(componentRegistry.getMessageResources() instanceof DefaultMessageResources); + assertTrue(componentRegistry.getRegistrarMonitor() instanceof AbstractWritingMonitor); + assertTrue(componentRegistry.getServletMonitor() instanceof AbstractWritingMonitor); + assertTrue(componentRegistry.getTypeConverter() instanceof OgnlTypeConverter); assertTrue(componentRegistry.getViewDispatcher() instanceof DefaultViewDispatcher); - assertTrue(componentRegistry.getTypeConverter() instanceof OgnlTypeConverter); assertTrue(componentRegistry.getViewResolver() instanceof DefaultViewResolver); assertTrue(componentRegistry.getValidator() instanceof DefaultValidator); - assertTrue(componentRegistry.getServletMonitor() instanceof AbstractWritingMonitor); } @Test @@ -178,48 +180,52 @@ will(returnValue(StubArgumentResolver.class.getName())); one(servletContext).getInitParameter(BindErrorMessageResolver.class.getName()); will(returnValue(StubBindErrorMessageResolver.class.getName())); + one(servletContext).getInitParameter(BindMonitor.class.getName()); + will(returnValue(StubMonitor.class.getName())); + one(servletContext).getInitParameter(ControllerDefinitionFactory.class.getName()); + will(returnValue(StubControllerDefinitionFactory.class.getName())); + one(servletContext).getInitParameter(ContextContainerFactory.class.getName()); + will(returnValue(StubContextContainerFactory.class.getName())); + one(servletContext).getInitParameter(ControllerNameResolver.class.getName()); + will(returnValue(StubControllerNameResolver.class.getName())); one(servletContext).getInitParameter(DataBinder.class.getName()); will(returnValue(StubDataBinder.class.getName())); + one(servletContext).getInitParameter(RegistrarMonitor.class.getName()); + will(returnValue(StubMonitor.class.getName())); one(servletContext).getInitParameter(RequestAttributeBinder.class.getName()); will(returnValue(StubRequestAttributeBinder.class.getName())); - one(servletContext).getInitParameter(BindMonitor.class.getName()); + one(servletContext).getInitParameter(ServletMonitor.class.getName()); will(returnValue(StubMonitor.class.getName())); - one(servletContext).getInitParameter(ControllerNameResolver.class.getName()); - will(returnValue(StubControllerNameResolver.class.getName())); one(servletContext).getInitParameter(TypeConverter.class.getName()); will(returnValue(DefaultTypeConverter.class.getName())); one(servletContext).getInitParameter(ViewDispatcher.class.getName()); will(returnValue(StubViewDispatcher.class.getName())); one(servletContext).getInitParameter(ViewResolver.class.getName()); will(returnValue(StubViewResolver.class.getName())); - one(servletContext).getInitParameter(ControllerDefinitionFactory.class.getName()); - will(returnValue(StubControllerDefinitionFactory.class.getName())); - one(servletContext).getInitParameter(ContextContainerFactory.class.getName()); - will(returnValue(StubContextContainerFactory.class.getName())); - one(servletContext).getInitParameter(ServletMonitor.class.getName()); - will(returnValue(StubMonitor.class.getName())); } }); ComponentRegistry componentRegistry = new PicoComponentRegistry(servletContext); + assertTrue(componentRegistry.getActionMethodExecutor() instanceof StubActionMethodExecutor); + assertTrue(componentRegistry.getActionMethodResponseHandler() instanceof StubActionMethodResponseHandler); + assertTrue(componentRegistry.getActionMonitor() instanceof StubMonitor); + assertTrue(componentRegistry.getArgumentResolver() instanceof StubArgumentResolver); + assertTrue(componentRegistry.getBindErrorMessageResolver() instanceof StubBindErrorMessageResolver); + assertTrue(componentRegistry.getBindMonitor() instanceof StubMonitor); assertTrue(componentRegistry.getControllerNameResolver() instanceof StubControllerNameResolver); assertTrue(componentRegistry.getControllerDefinitionFactory() instanceof StubControllerDefinitionFactory); - assertTrue(componentRegistry.getArgumentResolver() instanceof StubArgumentResolver); - assertTrue(componentRegistry.getBindErrorMessageResolver() instanceof StubBindErrorMessageResolver); assertTrue(componentRegistry.getContextContainerFactory() instanceof StubContextContainerFactory); assertFalse(componentRegistry.getDataBinder() instanceof OgnlDataBinder); - assertTrue(componentRegistry.getActionMethodExecutor() instanceof StubActionMethodExecutor); assertTrue(componentRegistry.getMethodDefinitionFinder() instanceof StubMethodDefinitionFinder); assertTrue(componentRegistry.getMethodNameResolver() instanceof StubMethodNameResolver); - assertTrue(componentRegistry.getActionMethodResponseHandler() instanceof StubActionMethodResponseHandler); assertTrue(componentRegistry.getMessageResources() instanceof StubMessageResources); + assertTrue(componentRegistry.getRegistrarMonitor() instanceof StubMonitor); assertTrue(componentRegistry.getRequestAttributeBinder() instanceof StubRequestAttributeBinder); + assertTrue(componentRegistry.getServletMonitor() instanceof StubMonitor); assertTrue(componentRegistry.getTypeConverter() instanceof DefaultTypeConverter); assertTrue(componentRegistry.getValidator() instanceof StubValidator); assertTrue(componentRegistry.getViewDispatcher() instanceof StubViewDispatcher); assertTrue(componentRegistry.getViewResolver() instanceof StubViewResolver); - assertTrue(componentRegistry.getActionMonitor() instanceof StubMonitor); - assertTrue(componentRegistry.getBindMonitor() instanceof StubMonitor); } public void testRegisterAdditionalComponents() {
Modified: trunk/core/src/test/java/org/codehaus/waffle/registrar/RegistrarAssistantTest.java (379 => 380)
--- trunk/core/src/test/java/org/codehaus/waffle/registrar/RegistrarAssistantTest.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/test/java/org/codehaus/waffle/registrar/RegistrarAssistantTest.java 2007-11-15 16:13:04 UTC (rev 380) @@ -12,6 +12,7 @@ import org.codehaus.waffle.WaffleException; import org.codehaus.waffle.context.ContextLevel; +import org.codehaus.waffle.monitor.SilentMonitor; import org.codehaus.waffle.registrar.pico.PicoRegistrar; import org.codehaus.waffle.testmodel.CustomRegistrar; import org.junit.Test; @@ -22,12 +23,12 @@ @Test public void canExecute() { DefaultPicoContainer picoContainer = new DefaultPicoContainer(); - PicoRegistrar picoRegistrar = new PicoRegistrar(picoContainer); + Registrar registrar = new PicoRegistrar(picoContainer, new SilentMonitor()); RegistrarAssistant registrarAssistant = new RegistrarAssistant(CustomRegistrar.class); - registrarAssistant.executeDelegatingRegistrar(picoRegistrar, ContextLevel.APPLICATION); - registrarAssistant.executeDelegatingRegistrar(picoRegistrar, ContextLevel.SESSION); - registrarAssistant.executeDelegatingRegistrar(picoRegistrar, ContextLevel.REQUEST); + registrarAssistant.executeDelegatingRegistrar(registrar, ContextLevel.APPLICATION); + registrarAssistant.executeDelegatingRegistrar(registrar, ContextLevel.SESSION); + registrarAssistant.executeDelegatingRegistrar(registrar, ContextLevel.REQUEST); assertNotNull(picoContainer.getComponentInstance("application")); assertNotNull(picoContainer.getComponentInstance("session"));
Modified: trunk/core/src/test/java/org/codehaus/waffle/registrar/pico/PicoRegistrarTest.java (379 => 380)
--- trunk/core/src/test/java/org/codehaus/waffle/registrar/pico/PicoRegistrarTest.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/test/java/org/codehaus/waffle/registrar/pico/PicoRegistrarTest.java 2007-11-15 16:13:04 UTC (rev 380) @@ -13,19 +13,44 @@ import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertSame; +import org.codehaus.waffle.monitor.RegistrarMonitor; +import org.codehaus.waffle.monitor.SilentMonitor; +import org.codehaus.waffle.registrar.Registrar; import org.codehaus.waffle.testmodel.FakeController; +import org.jmock.Expectations; +import org.jmock.Mockery; +import org.jmock.integration.junit4.JMock; import org.junit.Test; +import org.junit.runner.RunWith; import org.picocontainer.MutablePicoContainer; import org.picocontainer.defaults.ConstructorInjectionComponentAdapter; import org.picocontainer.defaults.DefaultPicoContainer; +/** + * + * @author Mauro Talevi + */ [EMAIL PROTECTED](JMock.class) public class PicoRegistrarTest { + private Mockery mockery = new Mockery(); + @Test - public void testRegister() { + public void canRegisterComponent() { + MutablePicoContainer pico = new DefaultPicoContainer(); - PicoRegistrar picoRegistrar = new PicoRegistrar(pico); - picoRegistrar.register(FakeController.class); + + // Mock RegistrarMonitor + final RegistrarMonitor registrarMonitor = mockery.mock(RegistrarMonitor.class); + final Class<?> type = FakeController.class; + mockery.checking(new Expectations() { + { + one(registrarMonitor).componentRegistered(type, type, new Object[]{}); + } + }); + + Registrar registrar = new PicoRegistrar(pico, registrarMonitor); + registrar.register(type); FakeController controllerOne = (FakeController) pico.getComponentInstance(FakeController.class); FakeController controllerTwo = (FakeController) pico.getComponentInstance(FakeController.class); @@ -34,47 +59,81 @@ } @Test - public void testRegisterWithKey() { + public void canRegisterComponentWithKey() { MutablePicoContainer pico = new DefaultPicoContainer(); - PicoRegistrar picoRegistrar = new PicoRegistrar(pico); - picoRegistrar.register("foobar", FakeController.class); + // Mock RegistrarMonitor + final RegistrarMonitor registrarMonitor = mockery.mock(RegistrarMonitor.class); + final String key = "foobar"; + final Class<?> type = FakeController.class; + mockery.checking(new Expectations() { + { + one(registrarMonitor).componentRegistered(key, type, new Object[]{}); + } + }); - FakeController controllerOne = (FakeController) pico.getComponentInstance("foobar"); - FakeController controllerTwo = (FakeController) pico.getComponentInstance("foobar"); + Registrar registrar = new PicoRegistrar(pico, registrarMonitor); + registrar.register(key, type); + FakeController controllerOne = (FakeController) pico.getComponentInstance(key); + FakeController controllerTwo = (FakeController) pico.getComponentInstance(key); + assertSame(controllerOne, controllerTwo); - assertSame(controllerOne, pico.getComponentInstanceOfType(FakeController.class)); + assertSame(controllerOne, pico.getComponentInstanceOfType(type)); } @Test - public void testRegisterInstance() { + public void canRegisterInstance() { + MutablePicoContainer pico = new DefaultPicoContainer(); - PicoRegistrar picoRegistrar = new PicoRegistrar(pico); + // Mock RegistrarMonitor + final RegistrarMonitor registrarMonitor = mockery.mock(RegistrarMonitor.class); + final FakeController fakeController = new FakeController(); + mockery.checking(new Expectations() { + { + one(registrarMonitor).instanceRegistered(fakeController, fakeController); + } + }); + + Registrar registrar = new PicoRegistrar(pico, registrarMonitor); + registrar.registerInstance(fakeController); - FakeController fakeController = new FakeController(); - picoRegistrar.registerInstance(fakeController); - assertSame(fakeController, pico.getComponentInstanceOfType(FakeController.class)); } @Test - public void testRegisterInstanceWithKey() { + public void canRegisterInstanceWithKey() { MutablePicoContainer pico = new DefaultPicoContainer(); - PicoRegistrar picoRegistrar = new PicoRegistrar(pico); + // Mock RegistrarMonitor + final RegistrarMonitor registrarMonitor = mockery.mock(RegistrarMonitor.class); + final String key = "foobar"; + final FakeController fakeController = new FakeController(); + mockery.checking(new Expectations() { + { + one(registrarMonitor).instanceRegistered(key, fakeController); + } + }); + + Registrar registrar = new PicoRegistrar(pico, registrarMonitor); + registrar.registerInstance(key, fakeController); - FakeController fakeController = new FakeController(); - picoRegistrar.registerInstance("foobar", fakeController); - assertSame(fakeController, pico.getComponentInstance("foobar")); assertSame(fakeController, pico.getComponentInstanceOfType(FakeController.class)); } @Test - public void testNonCachingRegistration() { + public void canRegisterNonCachingComponent() { MutablePicoContainer pico = new DefaultPicoContainer(); - PicoRegistrar picoRegistrar = new PicoRegistrar(pico); + // Mock RegistrarMonitor + final RegistrarMonitor registrarMonitor = mockery.mock(RegistrarMonitor.class); + final Class<?> type = FakeController.class; + mockery.checking(new Expectations() { + { + one(registrarMonitor).nonCachingComponentRegistered(type, type, new Object[]{}); + } + }); - picoRegistrar.registerNonCaching(FakeController.class); + Registrar registrar = new PicoRegistrar(pico, registrarMonitor); + registrar.registerNonCaching(type); FakeController controllerOne = (FakeController) pico.getComponentInstance(FakeController.class); FakeController controllerTwo = (FakeController) pico.getComponentInstance(FakeController.class); @@ -83,11 +142,20 @@ } @Test - public void testNonCachingRegistrationWithKey() { + public void canRegisterNonCachingComponentWithKey() { MutablePicoContainer pico = new DefaultPicoContainer(); - PicoRegistrar picoRegistrar = new PicoRegistrar(pico); + // Mock RegistrarMonitor + final RegistrarMonitor registrarMonitor = mockery.mock(RegistrarMonitor.class); + final String key = "foobar"; + final Class<?> type = FakeController.class; + mockery.checking(new Expectations() { + { + one(registrarMonitor).nonCachingComponentRegistered(key, type, new Object[]{}); + } + }); - picoRegistrar.registerNonCaching("foobar", FakeController.class); + Registrar registrar = new PicoRegistrar(pico, registrarMonitor); + registrar.registerNonCaching(key, type); FakeController controllerOne = (FakeController) pico.getComponentInstance("foobar"); FakeController controllerTwo = (FakeController) pico.getComponentInstance("foobar"); @@ -96,13 +164,13 @@ } @Test - public void testRegisterComponentAdapter() { + public void canRegisterComponentAdapter() { MutablePicoContainer pico = new DefaultPicoContainer(); - PicoRegistrar picoRegistrar = new PicoRegistrar(pico); - + ConstructorInjectionComponentAdapter componentAdapter = new ConstructorInjectionComponentAdapter("a", FakeController.class); + PicoRegistrar picoRegistrar = new PicoRegistrar(pico, new SilentMonitor()); picoRegistrar.registerComponentAdapter(componentAdapter); FakeController controllerOne = (FakeController) pico.getComponentInstance("a");
Modified: trunk/core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java (379 => 380)
--- trunk/core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java 2007-11-15 16:13:04 UTC (rev 380) @@ -10,11 +10,12 @@ import org.codehaus.waffle.action.HierarchicalArgumentResolver.Scope; import org.codehaus.waffle.monitor.ActionMonitor; import org.codehaus.waffle.monitor.BindMonitor; +import org.codehaus.waffle.monitor.RegistrarMonitor; import org.codehaus.waffle.monitor.ServletMonitor; import org.codehaus.waffle.validation.BindErrorMessage; import org.codehaus.waffle.view.View; -public class StubMonitor implements ActionMonitor, BindMonitor, ServletMonitor { +public class StubMonitor implements ActionMonitor, BindMonitor, RegistrarMonitor, ServletMonitor { public void defaultActionMethodFound(MethodDefinition methodDefinition) { } @@ -61,4 +62,13 @@ public void servletServiceFailed(Exception cause) { } + public void componentRegistered(Object key, Class<?> clazz, Object[] parameters) { + } + + public void instanceRegistered(Object key, Object instance) { + } + + public void nonCachingComponentRegistered(Object key, Class<?> clazz, Object[] parameters) { + } + }
Modified: trunk/examples/freemarker-example/src/test/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrarTest.java (379 => 380)
--- trunk/examples/freemarker-example/src/test/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrarTest.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/examples/freemarker-example/src/test/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrarTest.java 2007-11-15 16:13:04 UTC (rev 380) @@ -7,8 +7,7 @@ @Test public void canAssertConfiguration() { - PicoRegistrarMockery mockery = new PicoRegistrarMockery(); - mockery.assertConfiguration(FreemarkerRegistrar.class); + new PicoRegistrarMockery().assertConfiguration(FreemarkerRegistrar.class); } }
Modified: trunk/examples/paranamer-example/src/test/java/org/codehaus/waffle/example/paranamer/ParanamerRegistrarTest.java (379 => 380)
--- trunk/examples/paranamer-example/src/test/java/org/codehaus/waffle/example/paranamer/ParanamerRegistrarTest.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/examples/paranamer-example/src/test/java/org/codehaus/waffle/example/paranamer/ParanamerRegistrarTest.java 2007-11-15 16:13:04 UTC (rev 380) @@ -7,8 +7,7 @@ @Test public void canAssertConfiguration() { - PicoRegistrarMockery mockery = new PicoRegistrarMockery(); - mockery.assertConfiguration(ParanamerRegistrar.class); + new PicoRegistrarMockery().assertConfiguration(ParanamerRegistrar.class); } }
Modified: trunk/examples/simple-example/src/test/java/org/codehaus/waffle/example/simple/SimpleRegistrarTest.java (379 => 380)
--- trunk/examples/simple-example/src/test/java/org/codehaus/waffle/example/simple/SimpleRegistrarTest.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/examples/simple-example/src/test/java/org/codehaus/waffle/example/simple/SimpleRegistrarTest.java 2007-11-15 16:13:04 UTC (rev 380) @@ -7,8 +7,7 @@ @Test public void canAssertConfiguration() { - PicoRegistrarMockery mockery = new PicoRegistrarMockery(); - mockery.assertConfiguration(SimpleRegistrar.class); + new PicoRegistrarMockery().assertConfiguration(SimpleRegistrar.class); } }
Modified: trunk/extensions/mock/src/main/java/org/codehaus/waffle/mock/AbstractRegistrarMockery.java (379 => 380)
--- trunk/extensions/mock/src/main/java/org/codehaus/waffle/mock/AbstractRegistrarMockery.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/extensions/mock/src/main/java/org/codehaus/waffle/mock/AbstractRegistrarMockery.java 2007-11-15 16:13:04 UTC (rev 380) @@ -18,6 +18,8 @@ import org.codehaus.waffle.context.ContextContainer; import org.codehaus.waffle.context.ContextLevel; import org.codehaus.waffle.i18n.MessageResources; +import org.codehaus.waffle.monitor.RegistrarMonitor; +import org.codehaus.waffle.monitor.SilentMonitor; import org.codehaus.waffle.registrar.Registrar; import org.codehaus.waffle.registrar.RegistrarAssistant; import org.jmock.Mockery; @@ -108,4 +110,13 @@ protected abstract Registrar createRegistrar(ContextContainer container); + protected RegistrarMonitor getRegistrarMonitor(ContextContainer container) { + RegistrarMonitor registrarMonitor = container.getComponentInstanceOfType(RegistrarMonitor.class); + if ( registrarMonitor == null ){ + registrarMonitor = new SilentMonitor(); + // TODO monitor it + } + return registrarMonitor; + } + }
Modified: trunk/extensions/mock/src/main/java/org/codehaus/waffle/mock/PicoRegistrarMockery.java (379 => 380)
--- trunk/extensions/mock/src/main/java/org/codehaus/waffle/mock/PicoRegistrarMockery.java 2007-11-15 13:40:57 UTC (rev 379) +++ trunk/extensions/mock/src/main/java/org/codehaus/waffle/mock/PicoRegistrarMockery.java 2007-11-15 16:13:04 UTC (rev 380) @@ -1,11 +1,10 @@ package org.codehaus.waffle.mock; -import org.picocontainer.MutablePicoContainer; - import org.codehaus.waffle.context.ContextContainer; import org.codehaus.waffle.context.pico.PicoContextContainer; import org.codehaus.waffle.registrar.Registrar; import org.codehaus.waffle.registrar.pico.PicoRegistrar; +import org.picocontainer.MutablePicoContainer; /** * Registrar Mockery that uses PicoContainer as the ContextContainer @@ -19,6 +18,6 @@ } protected Registrar createRegistrar(ContextContainer container) { - return new PicoRegistrar((MutablePicoContainer) container.getDelegate()); + return new PicoRegistrar((MutablePicoContainer) container.getDelegate(), getRegistrarMonitor(container)); } }
To unsubscribe from this list please visit:
