- Revision
- 437
- Author
- mauro
- Date
- 2007-11-26 13:39:22 -0600 (Mon, 26 Nov 2007)
Log Message
WAFFLE-41: Added MessagesContext.
Modified Paths
- trunk/waffle-core/src/main/java/org/codehaus/waffle/ComponentRegistry.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/Constants.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/servlet/WaffleServlet.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/servlet/WaffleServletTest.java
Added Paths
- trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/DefaultMessagesContext.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/MessagesContext.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/i18n/DefaultMessagesContextTest.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMessagesContext.java
Diff
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/ComponentRegistry.java (436 => 437)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/ComponentRegistry.java 2007-11-26 16:53:47 UTC (rev 436) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/ComponentRegistry.java 2007-11-26 19:39:22 UTC (rev 437) @@ -24,6 +24,7 @@ import org.codehaus.waffle.controller.ControllerDefinitionFactory; import org.codehaus.waffle.controller.ControllerNameResolver; import org.codehaus.waffle.i18n.MessageResources; +import org.codehaus.waffle.i18n.MessagesContext; import org.codehaus.waffle.monitor.ActionMonitor; import org.codehaus.waffle.monitor.BindMonitor; import org.codehaus.waffle.monitor.ContextMonitor; @@ -71,6 +72,8 @@ DataBinder getDataBinder(); + MessagesContext getMessagesContext(); + MessageResources getMessageResources(); MethodDefinitionFinder getMethodDefinitionFinder();
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/Constants.java (436 => 437)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/Constants.java 2007-11-26 16:53:47 UTC (rev 436) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/Constants.java 2007-11-26 19:39:22 UTC (rev 437) @@ -16,4 +16,5 @@ String VIEW_SUFFIX_KEY = "view.suffix"; String CONTROLLER_KEY = "controller"; String ERRORS_KEY = "errors"; + String MESSAGES_KEY = "messages"; }
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java (436 => 437)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java 2007-11-26 16:53:47 UTC (rev 436) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/context/pico/PicoComponentRegistry.java 2007-11-26 19:39:22 UTC (rev 437) @@ -40,7 +40,9 @@ import org.codehaus.waffle.controller.ControllerDefinitionFactory; import org.codehaus.waffle.controller.ControllerNameResolver; import org.codehaus.waffle.i18n.DefaultMessageResources; +import org.codehaus.waffle.i18n.DefaultMessagesContext; import org.codehaus.waffle.i18n.MessageResources; +import org.codehaus.waffle.i18n.MessagesContext; import org.codehaus.waffle.monitor.ActionMonitor; import org.codehaus.waffle.monitor.BindMonitor; import org.codehaus.waffle.monitor.ContextMonitor; @@ -91,6 +93,7 @@ register(ContextContainerFactory.class, PicoContextContainerFactory.class, servletContext); register(ControllerDefinitionFactory.class, ContextControllerDefinitionFactory.class, servletContext); register(ControllerNameResolver.class, ContextPathControllerNameResolver.class, servletContext); + register(MessagesContext.class, DefaultMessagesContext.class, servletContext); register(MessageResources.class, DefaultMessageResources.class, servletContext); register(ActionMonitor.class, SilentMonitor.class, servletContext); register(BindMonitor.class, SilentMonitor.class, servletContext); @@ -251,6 +254,10 @@ return locateByType(ControllerDefinitionFactory.class); } + public MessagesContext getMessagesContext() { + return locateByType(MessagesContext.class); + } + public MessageResources getMessageResources() { return locateByType(MessageResources.class); }
Added: trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/DefaultMessagesContext.java (0 => 437)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/DefaultMessagesContext.java (rev 0) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/DefaultMessagesContext.java 2007-11-26 19:39:22 UTC (rev 437) @@ -0,0 +1,46 @@ +/***************************************************************************** + * 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.i18n; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Default Map-based implementation of MessagesContext. + * + * @author Mauro Talevi + */ +public class DefaultMessagesContext implements MessagesContext { + private final Map<String, String> messages = new HashMap<String, String>(); + + public void addMessage(String key, String message) { + messages.put(key, message); + } + + public String getMessage(String key) { + return messages.get(key); + } + + public List<String> getMessages() { + return new ArrayList<String>(messages.values()); + } + + public int getMessagesCount() { + return messages.size(); + } + + public void clearMessages() { + messages.clear(); + } + +}
Added: trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/MessagesContext.java (0 => 437)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/MessagesContext.java (rev 0) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/i18n/MessagesContext.java 2007-11-26 19:39:22 UTC (rev 437) @@ -0,0 +1,37 @@ +/***************************************************************************** + * 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.i18n; + +import java.util.List; + + +/** + * MessagesContext holds user business-level messages. Controllers can depend on it and use it to pass messages to the + * view. It is not meant to display validation error messages, which are designed to be handled via the + * [EMAIL PROTECTED] ErrorsContext}. + * + * @author Mauro Talevi + * @see ErrorsContext + */ +public interface MessagesContext { + + void addMessage(String key, String message); + + String getMessage(String key); + + List<String> getMessages(); + + int getMessagesCount(); + + void clearMessages(); + +} +
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/servlet/WaffleServlet.java (436 => 437)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/servlet/WaffleServlet.java 2007-11-26 16:53:47 UTC (rev 436) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/servlet/WaffleServlet.java 2007-11-26 19:39:22 UTC (rev 437) @@ -11,6 +11,7 @@ package org.codehaus.waffle.servlet; import static org.codehaus.waffle.Constants.ERRORS_KEY; +import static org.codehaus.waffle.Constants.MESSAGES_KEY; import static org.codehaus.waffle.Constants.VIEW_PREFIX_KEY; import static org.codehaus.waffle.Constants.VIEW_SUFFIX_KEY; @@ -31,6 +32,7 @@ import org.codehaus.waffle.bind.RequestAttributeBinder; import org.codehaus.waffle.controller.ControllerDefinition; import org.codehaus.waffle.controller.ControllerDefinitionFactory; +import org.codehaus.waffle.i18n.MessagesContext; import org.codehaus.waffle.monitor.ServletMonitor; import org.codehaus.waffle.validation.DefaultErrorsContext; import org.codehaus.waffle.validation.ErrorsContext; @@ -58,6 +60,7 @@ private DataBinder dataBinder; private RequestAttributeBinder requestAttributeBinder; private ControllerDefinitionFactory controllerDefinitionFactory; + private MessagesContext messagesContext; private Validator validator; private String viewPrefix; private String viewSuffix; @@ -79,6 +82,7 @@ * @param dataBinder * @param requestAttributeBinder * @param controllerDefinitionFactory + * @param messagesContext * @param validator */ public WaffleServlet(ActionMethodExecutor actionMethodExecutor, @@ -87,13 +91,14 @@ DataBinder dataBinder, RequestAttributeBinder requestAttributeBinder, ControllerDefinitionFactory controllerDefinitionFactory, - Validator validator) { + MessagesContext messagesContext, Validator validator) { this.actionMethodExecutor = actionMethodExecutor; this.actionMethodResponseHandler = actionMethodResponseHandler; this.servletMonitor = servletMonitor; this.dataBinder = dataBinder; this.requestAttributeBinder = requestAttributeBinder; this.controllerDefinitionFactory = controllerDefinitionFactory; + this.messagesContext = messagesContext; this.validator = validator; componentsRetrieved = true; } @@ -119,6 +124,7 @@ dataBinder = componentRegistry.getDataBinder(); requestAttributeBinder = componentRegistry.getRequestAttributeBinder(); controllerDefinitionFactory = componentRegistry.getControllerDefinitionFactory(); + messagesContext = componentRegistry.getMessagesContext(); validator = componentRegistry.getValidator(); } } @@ -148,6 +154,7 @@ HttpServletResponse response) throws ServletException, IOException { ErrorsContext errorsContext = new DefaultErrorsContext(); request.setAttribute(ERRORS_KEY, errorsContext); + request.setAttribute(MESSAGES_KEY, messagesContext); ControllerDefinition controllerDefinition = getControllerDefinition(request, response); dataBinder.bind(request, response, errorsContext, controllerDefinition.getController());
Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java (436 => 437)
--- trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java 2007-11-26 16:53:47 UTC (rev 436) +++ trunk/waffle-core/src/test/java/org/codehaus/waffle/context/pico/PicoComponentRegistryTest.java 2007-11-26 19:39:22 UTC (rev 437) @@ -39,7 +39,9 @@ import org.codehaus.waffle.controller.ControllerDefinitionFactory; import org.codehaus.waffle.controller.ControllerNameResolver; import org.codehaus.waffle.i18n.DefaultMessageResources; +import org.codehaus.waffle.i18n.DefaultMessagesContext; import org.codehaus.waffle.i18n.MessageResources; +import org.codehaus.waffle.i18n.MessagesContext; import org.codehaus.waffle.monitor.AbstractWritingMonitor; import org.codehaus.waffle.monitor.ActionMonitor; import org.codehaus.waffle.monitor.BindMonitor; @@ -58,6 +60,7 @@ import org.codehaus.waffle.testmodel.StubControllerNameResolver; import org.codehaus.waffle.testmodel.StubDataBinder; import org.codehaus.waffle.testmodel.StubMessageResources; +import org.codehaus.waffle.testmodel.StubMessagesContext; import org.codehaus.waffle.testmodel.StubMethodDefinitionFinder; import org.codehaus.waffle.testmodel.StubMethodNameResolver; import org.codehaus.waffle.testmodel.StubMonitor; @@ -131,7 +134,7 @@ { one(servletContext).getInitParameterNames(); will(returnValue(EMPTY_ENUMERATION)); - exactly(24).of(servletContext).getInitParameter(with(any(String.class))); + exactly(25).of(servletContext).getInitParameter(with(any(String.class))); } }); @@ -149,6 +152,7 @@ assertTrue(componentRegistry.getControllerDefinitionFactory() instanceof ContextControllerDefinitionFactory); assertTrue(componentRegistry.getDataBinder() instanceof OgnlDataBinder); assertTrue(componentRegistry.getMethodNameResolver() instanceof RequestParameterMethodNameResolver); + assertTrue(componentRegistry.getMessagesContext() instanceof DefaultMessagesContext); assertTrue(componentRegistry.getMessageResources() instanceof DefaultMessageResources); assertTrue(componentRegistry.getRegistrarMonitor() instanceof AbstractWritingMonitor); assertTrue(componentRegistry.getServletMonitor() instanceof AbstractWritingMonitor); @@ -172,6 +176,8 @@ will(returnValue(StubActionMethodExecutor.class.getName())); one(servletContext).getInitParameter(Validator.class.getName()); will(returnValue(StubValidator.class.getName())); + one(servletContext).getInitParameter(MessagesContext.class.getName()); + will(returnValue(StubMessagesContext.class.getName())); one(servletContext).getInitParameter(MessageResources.class.getName()); will(returnValue(StubMessageResources.class.getName())); one(servletContext).getInitParameter(MethodDefinitionFinder.class.getName());
Added: trunk/waffle-core/src/test/java/org/codehaus/waffle/i18n/DefaultMessagesContextTest.java (0 => 437)
--- trunk/waffle-core/src/test/java/org/codehaus/waffle/i18n/DefaultMessagesContextTest.java (rev 0) +++ trunk/waffle-core/src/test/java/org/codehaus/waffle/i18n/DefaultMessagesContextTest.java 2007-11-26 19:39:22 UTC (rev 437) @@ -0,0 +1,34 @@ +package org.codehaus.waffle.i18n; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +/** + * + * @author Mauro Talevi + */ +public class DefaultMessagesContextTest { + + @Test + public void canAddAndGetMessages() { + MessagesContext messages = new DefaultMessagesContext(); + messages.addMessage("success", "Waffle action was executed"); + assertEquals(1, messages.getMessagesCount()); + assertEquals("Waffle action was executed", messages.getMessage("success")); + assertEquals("Waffle action was executed", messages.getMessages().iterator().next()); + } + + @Test + public void canAddAndClearMessages() { + MessagesContext messages = new DefaultMessagesContext(); + messages.addMessage("success", "Waffle action was executed"); + assertEquals(1, messages.getMessagesCount()); + messages.clearMessages(); + assertEquals(0, messages.getMessagesCount()); + // add again + messages.addMessage("success", "Waffle action was executed"); + assertEquals(1, messages.getMessagesCount()); + } + +}
Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/servlet/WaffleServletTest.java (436 => 437)
--- trunk/waffle-core/src/test/java/org/codehaus/waffle/servlet/WaffleServletTest.java 2007-11-26 16:53:47 UTC (rev 436) +++ trunk/waffle-core/src/test/java/org/codehaus/waffle/servlet/WaffleServletTest.java 2007-11-26 19:39:22 UTC (rev 437) @@ -40,6 +40,8 @@ import org.codehaus.waffle.context.pico.PicoContextContainer; import org.codehaus.waffle.controller.ControllerDefinition; import org.codehaus.waffle.controller.ControllerDefinitionFactory; +import org.codehaus.waffle.i18n.DefaultMessagesContext; +import org.codehaus.waffle.i18n.MessagesContext; import org.codehaus.waffle.monitor.ServletMonitor; import org.codehaus.waffle.monitor.SilentMonitor; import org.codehaus.waffle.validation.ErrorsContext; @@ -84,6 +86,7 @@ one(componentRegistry).getDataBinder(); one(componentRegistry).getRequestAttributeBinder(); one(componentRegistry).getControllerDefinitionFactory(); + one(componentRegistry).getMessagesContext(); one(componentRegistry).getValidator(); }}); @@ -116,6 +119,7 @@ one(request).getParameterNames(); will(returnValue(enumeration)); one(request).setAttribute(with(equal(Constants.ERRORS_KEY)), with(a(ErrorsContext.class))); + one(request).setAttribute(with(equal(Constants.MESSAGES_KEY)), with(a(MessagesContext.class))); one(request).getMethod(); // todo need to test post will(returnValue("get")); }}); @@ -151,7 +155,7 @@ monitor, new OgnlDataBinder(new OgnlValueConverterFinder(), null, monitor), requestAttributeBinder, - null, validator) { + null, new DefaultMessagesContext(), validator) { @Override protected ControllerDefinition getControllerDefinition(HttpServletRequest request, HttpServletResponse response) { return new ControllerDefinition("no name", nonDispatchingController, methodDefinition); @@ -176,6 +180,7 @@ one(request).getParameterNames(); will(returnValue(enumeration)); one(request).setAttribute(with(equal(Constants.ERRORS_KEY)), with(a(ErrorsContext.class))); + one(request).setAttribute(with(equal(Constants.MESSAGES_KEY)), with(a(MessagesContext.class))); one(request).getMethod(); will(returnValue("post")); one(request).getRequestURL(); @@ -213,7 +218,7 @@ monitor, new OgnlDataBinder(new OgnlValueConverterFinder(), null, monitor), requestAttributeBinder, - null, validator) { + null, new DefaultMessagesContext(), validator) { @Override protected ControllerDefinition getControllerDefinition(HttpServletRequest request, HttpServletResponse response) { return new ControllerDefinition("no name", nonDispatchingController, methodDefinition); @@ -230,6 +235,7 @@ final HttpServletRequest request = mockery.mock(HttpServletRequest.class); mockery.checking(new Expectations() {{ one(request).setAttribute(with(equal(Constants.ERRORS_KEY)), with(any(ErrorsContext.class))); + one(request).setAttribute(with(equal(Constants.MESSAGES_KEY)), with(any(MessagesContext.class))); one(request).getServletPath(); will(returnValue("/foobar")); }}); @@ -264,6 +270,7 @@ one(request).getParameterNames(); will(returnValue(enumeration)); one(request).setAttribute(with(equal(Constants.ERRORS_KEY)), with(any(ErrorsContext.class))); + one(request).setAttribute(with(equal(Constants.MESSAGES_KEY)), with(a(MessagesContext.class))); }}); // Mock HttpServletResponse @@ -293,7 +300,7 @@ new SilentMonitor(), new OgnlDataBinder(new OgnlValueConverterFinder(), null, new SilentMonitor()), requestAttributeBinder, - null, validator) { + null, new DefaultMessagesContext(), validator) { @Override protected ControllerDefinition getControllerDefinition(HttpServletRequest request, HttpServletResponse response) { return new ControllerDefinition("no name", nonDispatchingController, null); @@ -321,6 +328,7 @@ one(request).getParameterNames(); will(returnValue(enumeration)); one(request).setAttribute(with(equal(Constants.ERRORS_KEY)), with(any(ErrorsContext.class))); + one(request).setAttribute(with(equal(Constants.MESSAGES_KEY)), with(any(MessagesContext.class))); }}); // Mock HttpServletResponse
Added: trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMessagesContext.java (0 => 437)
--- trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMessagesContext.java (rev 0) +++ trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMessagesContext.java 2007-11-26 19:39:22 UTC (rev 437) @@ -0,0 +1,27 @@ +package org.codehaus.waffle.testmodel; + +import java.util.List; + +import org.codehaus.waffle.i18n.MessagesContext; + +public class StubMessagesContext implements MessagesContext { + + public void addMessage(String key, String message) { + } + + public void clearMessages() { + } + + public String getMessage(String key) { + return null; + } + + public List<String> getMessages() { + return null; + } + + public int getMessagesCount() { + return 0; + } + +}
To unsubscribe from this list please visit:
