Title: [waffle-scm] [380] trunk/core/src/main/java/org/codehaus/waffle: Added RegistrarMonitor.
Revision
380
Author
mauro
Date
2007-11-15 10:13:04 -0600 (Thu, 15 Nov 2007)

Log Message

Added RegistrarMonitor.

Modified Paths


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:

http://xircles.codehaus.org/manage_email

Reply via email to