Title: [waffle-scm] [427] trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor: Ensured validation method can be found in controller if validator instance is not found.

Diff

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java (426 => 427)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java	2007-11-25 10:49:23 UTC (rev 426)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java	2007-11-25 11:47:55 UTC (rev 427)
@@ -142,7 +142,7 @@
         messages.put("instanceRegistered", "Registered instance {1} with key {0}");
         messages.put("nonCachingComponentRegistered", "Registered non-caching component of type {1} with key {0} and parameters {2}");
         messages.put("servletServiceFailed", "Servlet service failed: {0}");
-        messages.put("controllerValidatorNotFound", "Controller validator not found");
+        messages.put("controllerValidatorNotFound", "Controller validator not found for name {0}");
         messages.put("methodDefinitionNotFound", "Method definition not found in controller definition {0}");        
         messages.put("validationFailed", "Validation failed: {0}");  
         messages.put("viewForwarded", "View forwarded to path {0}");        
@@ -315,8 +315,8 @@
         write("servletServiceFailed", cause);        
     }
     
-    public void controllerValidatorNotFound() {
-        write("controllerValidatorNotFound");
+    public void controllerValidatorNotFound(String controllerValidatorName) {
+        write("controllerValidatorNotFound", controllerValidatorName);
     }
 
     public void methodDefinitionNotFound(ControllerDefinition controllerDefinition) {

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/ValidationMonitor.java (426 => 427)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/ValidationMonitor.java	2007-11-25 10:49:23 UTC (rev 426)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/ValidationMonitor.java	2007-11-25 11:47:55 UTC (rev 427)
@@ -19,7 +19,7 @@
  */
 public interface ValidationMonitor extends Monitor {
 
-    void controllerValidatorNotFound();
+    void controllerValidatorNotFound(String controllerValidatorName);
 
     void methodDefinitionNotFound(ControllerDefinition controllerDefinition);
 

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/DefaultValidator.java (426 => 427)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/DefaultValidator.java	2007-11-25 10:49:23 UTC (rev 426)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/DefaultValidator.java	2007-11-25 11:47:55 UTC (rev 427)
@@ -43,15 +43,16 @@
 
     public void validate(ControllerDefinition controllerDefinition, ErrorsContext errorsContext) {
         ContextContainer container = RequestLevelContainer.get();
-        Object controllerValidator = container.getComponentInstance(controllerDefinition.getName() + validatorConfiguration.getSuffix());
+        String controllerValidatorName = controllerDefinition.getName() + validatorConfiguration.getSuffix();
+        Object controllerValidator = container.getComponentInstance(controllerValidatorName);
 
         if (controllerValidator == null) {
-            validationMonitor.controllerValidatorNotFound();
-            return; // doesn't exist ... go no further
+            // default to use validation in controller
+            controllerValidator = container.getComponentInstance(controllerDefinition.getName());
+            validationMonitor.controllerValidatorNotFound(controllerValidatorName);
         }
 
         MethodDefinition methodDefinition = controllerDefinition.getMethodDefinition();
-        
         if (methodDefinition == null) {
             validationMonitor.methodDefinitionNotFound(controllerDefinition);
             return; // no method ... go no further

Added: trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/FakeControllerWithValidation.java (0 => 427)

--- trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/FakeControllerWithValidation.java	                        (rev 0)
+++ trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/FakeControllerWithValidation.java	2007-11-25 11:47:55 UTC (rev 427)
@@ -0,0 +1,25 @@
+/*****************************************************************************
+ * 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: Michael Ward                                            *
+ *****************************************************************************/
+package org.codehaus.waffle.testmodel;
+
+import org.codehaus.waffle.validation.ErrorsContext;
+
+public class FakeControllerWithValidation extends FakeController {
+   
+    public ErrorsContext errorsContext;
+    public String value;
+
+    public void sayHello(ErrorsContext errorsContext, String value) {
+        this.errorsContext = errorsContext;
+        this.value = value;
+    }
+
+}

Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java (426 => 427)

--- trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java	2007-11-25 10:49:23 UTC (rev 426)
+++ trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java	2007-11-25 11:47:55 UTC (rev 427)
@@ -114,7 +114,7 @@
     public void servletServiceFailed(Exception cause) {
     }
 
-    public void controllerValidatorNotFound() {
+    public void controllerValidatorNotFound(String controllerValidatorName) {
     }
 
     public void methodDefinitionNotFound(ControllerDefinition controllerDefinition) {        

Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/validation/DefaultValidatorTest.java (426 => 427)

--- trunk/waffle-core/src/test/java/org/codehaus/waffle/validation/DefaultValidatorTest.java	2007-11-25 10:49:23 UTC (rev 426)
+++ trunk/waffle-core/src/test/java/org/codehaus/waffle/validation/DefaultValidatorTest.java	2007-11-25 11:47:55 UTC (rev 427)
@@ -12,6 +12,7 @@
 import org.codehaus.waffle.monitor.SilentMonitor;
 import org.codehaus.waffle.testmodel.FakeController;
 import org.codehaus.waffle.testmodel.FakeControllerValidator;
+import org.codehaus.waffle.testmodel.FakeControllerWithValidation;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.jmock.integration.junit4.JMock;
@@ -33,29 +34,40 @@
     public void tearDown() throws Exception {
         RequestLevelContainer.set(null);
     }
+    
+    @Test
+    public void canValidateWithControllerValidation() throws Exception {
+        FakeController fakeController = new FakeControllerWithValidation();
+        Validator validator = new DefaultValidator(new SilentMonitor());
+        assertValidation(validator, fakeController, null, DefaultValidatorConfiguration.DEFAULT_SUFFIX);
+    }
 
     @Test
-    public void canValidateWithDefaultSuffix() throws Exception {
+    public void canValidateWithControllerValidatorOfDefaultSuffix() throws Exception {
+        FakeController fakeController = new FakeController();
         Validator validator = new DefaultValidator(new SilentMonitor());
-        assertValidator(validator, DefaultValidatorConfiguration.DEFAULT_SUFFIX);
+        assertValidation(validator, fakeController, new FakeControllerValidator(), DefaultValidatorConfiguration.DEFAULT_SUFFIX);
     }
     
     @Test
-    public void canValidateWithCustumSuffix() throws Exception {
+    public void canValidateWithControllerValidatorOfCustomSuffix() throws Exception {
+        FakeController fakeController = new FakeController();
         String suffix = "Check";
         Validator validator = new DefaultValidator(new DefaultValidatorConfiguration(suffix), new SilentMonitor());
-        assertValidator(validator, suffix);
+        assertValidation(validator, fakeController, new FakeControllerValidator(), suffix);
     }
 
-    private void assertValidator(Validator validator, final String suffix) throws NoSuchMethodException {
-        final FakeControllerValidator fakeControllerValidator = new FakeControllerValidator();
-
+    private void assertValidation(Validator validator, final FakeController fakeController, final FakeControllerValidator fakeControllerValidator, final String suffix) throws NoSuchMethodException {
         // Mock ContextContainer
         final ContextContainer contextContainer = mockery.mock(ContextContainer.class);
         mockery.checking(new Expectations() {
-            {
+            {                
                 one(contextContainer).getComponentInstance("theController"+suffix);
                 will(returnValue(fakeControllerValidator));
+                if (fakeControllerValidator == null) {
+                    one(contextContainer).getComponentInstance("theController");
+                    will(returnValue(fakeController));
+                }
             }
         });
         RequestLevelContainer.set(contextContainer);
@@ -65,14 +77,19 @@
         MethodDefinition methodDefinition = new MethodDefinition(method);
         methodDefinition.addMethodArgument("foobar");
 
-        FakeController fakeController = new FakeController();
         ControllerDefinition controllerDefinition = new ControllerDefinition("theController", fakeController, methodDefinition);
 
         ErrorsContext errorsContext = new DefaultErrorsContext();
         validator.validate(controllerDefinition, errorsContext);
 
-        assertSame(errorsContext, fakeControllerValidator.errorsContext);
-        assertEquals("foobar", fakeControllerValidator.value);
+        if ( fakeControllerValidator != null ){
+            assertSame(errorsContext, fakeControllerValidator.errorsContext);
+            assertEquals("foobar", fakeControllerValidator.value);
+        } else if ( fakeController instanceof FakeControllerWithValidation ){
+            FakeControllerWithValidation fakeControllerWithValidation = (FakeControllerWithValidation) fakeController;
+            assertSame(errorsContext, fakeControllerWithValidation.errorsContext);
+            assertEquals("foobar", fakeControllerWithValidation.value);            
+        }
     }
 
     @Test


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to