- Revision
- 427
- Author
- mauro
- Date
- 2007-11-25 05:47:55 -0600 (Sun, 25 Nov 2007)
Log Message
Ensured validation method can be found in controller if validator instance is not found.
Modified Paths
- trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/ValidationMonitor.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/DefaultValidator.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/validation/DefaultValidatorTest.java
Added Paths
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:
