initial mvc message display
This commit is contained in:
@@ -26,6 +26,7 @@ import java.util.Map;
|
||||
import org.springframework.context.MessageSource;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.core.style.ToStringCreator;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.CachingMapDecorator;
|
||||
|
||||
/**
|
||||
@@ -47,12 +48,36 @@ class DefaultMessageContext implements StateManageableMessageContext {
|
||||
this.messageSource = messageSource;
|
||||
}
|
||||
|
||||
public Serializable createMessagesMemento() {
|
||||
return new HashMap(objectMessages);
|
||||
// implementing message context
|
||||
|
||||
public Message[] getAllMessages() {
|
||||
List messages = new ArrayList();
|
||||
Iterator it = objectMessages.keySet().iterator();
|
||||
while (it.hasNext()) {
|
||||
messages.addAll((List) objectMessages.get(it.next()));
|
||||
}
|
||||
return (Message[]) messages.toArray(new Message[messages.size()]);
|
||||
}
|
||||
|
||||
public void restoreMessages(Serializable messagesMemento) {
|
||||
this.objectMessages.putAll((Map) messagesMemento);
|
||||
public Message[] getMessagesBySource(Object source) {
|
||||
List messages = (List) objectMessages.get(source);
|
||||
return (Message[]) messages.toArray(new Message[messages.size()]);
|
||||
}
|
||||
|
||||
public Message[] getMessagesByCriteria(MessageCriteria criteria) {
|
||||
Assert.notNull(criteria, "The message criteria is required");
|
||||
List messages = new ArrayList();
|
||||
Iterator it = objectMessages.values().iterator();
|
||||
while (it.hasNext()) {
|
||||
List sourceMessages = (List) it.next();
|
||||
for (Iterator it2 = sourceMessages.iterator(); it2.hasNext();) {
|
||||
Message message = (Message) it2.next();
|
||||
if (criteria.test(message)) {
|
||||
messages.add(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
return (Message[]) messages.toArray(new Message[messages.size()]);
|
||||
}
|
||||
|
||||
public void addMessage(MessageResolver messageResolver) {
|
||||
@@ -62,24 +87,20 @@ class DefaultMessageContext implements StateManageableMessageContext {
|
||||
messages.add(message);
|
||||
}
|
||||
|
||||
public Message[] getMessages() {
|
||||
List messages = new ArrayList();
|
||||
Iterator i = objectMessages.keySet().iterator();
|
||||
while (i.hasNext()) {
|
||||
messages.addAll((List) objectMessages.get(i.next()));
|
||||
}
|
||||
return (Message[]) messages.toArray(new Message[messages.size()]);
|
||||
}
|
||||
|
||||
public Message[] getMessages(Object source) {
|
||||
List messages = (List) objectMessages.get(source);
|
||||
return (Message[]) messages.toArray(new Message[messages.size()]);
|
||||
}
|
||||
|
||||
public void clearMessages() {
|
||||
objectMessages.clear();
|
||||
}
|
||||
|
||||
// implementing state manageable message context
|
||||
|
||||
public Serializable createMessagesMemento() {
|
||||
return new HashMap(objectMessages);
|
||||
}
|
||||
|
||||
public void restoreMessages(Serializable messagesMemento) {
|
||||
this.objectMessages.putAll((Map) messagesMemento);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return new ToStringCreator(this).append("objectMessages", objectMessages).toString();
|
||||
}
|
||||
|
||||
@@ -9,14 +9,20 @@ public interface MessageContext {
|
||||
* Get all messages in this context. The messages returned should be suitable for display as-is.
|
||||
* @return the messages
|
||||
*/
|
||||
public Message[] getMessages();
|
||||
public Message[] getAllMessages();
|
||||
|
||||
/**
|
||||
* Get all messages in this context from the source provided.
|
||||
* @param source the source that recorded the message
|
||||
* Get all messages in this context for the source provided.
|
||||
* @param source the source associated with messages, or null for global messages
|
||||
* @return the source's messages
|
||||
*/
|
||||
public Message[] getMessages(Object source);
|
||||
public Message[] getMessagesBySource(Object source);
|
||||
|
||||
/**
|
||||
* Get all messages that meet the given result criteria.
|
||||
* @param criteria the message criteria
|
||||
*/
|
||||
public Message[] getMessagesByCriteria(MessageCriteria criteria);
|
||||
|
||||
/**
|
||||
* Add a new message to this context.
|
||||
|
||||
@@ -20,7 +20,7 @@ public class DefaultMessageContextFactoryTests extends TestCase {
|
||||
public void testCreateMessageContext() {
|
||||
MessageContext context = factory.createMessageContext();
|
||||
context.addMessage(new MessageBuilder().defaultText("Hello world!").build());
|
||||
Message[] messages = context.getMessages();
|
||||
Message[] messages = context.getAllMessages();
|
||||
assertEquals(1, messages.length);
|
||||
assertEquals("Hello world!", messages[0].getText());
|
||||
assertEquals(Severity.INFO, messages[0].getSeverity());
|
||||
@@ -30,7 +30,7 @@ public class DefaultMessageContextFactoryTests extends TestCase {
|
||||
public void testResolveMessage() {
|
||||
MessageContext context = factory.createMessageContext();
|
||||
context.addMessage(new MessageBuilder().warning().source(this).code("message").build());
|
||||
Message[] messages = context.getMessages(this);
|
||||
Message[] messages = context.getMessagesBySource(this);
|
||||
assertEquals(1, messages.length);
|
||||
assertEquals("Hello world resolved!", messages[0].getText());
|
||||
assertEquals(Severity.WARNING, messages[0].getSeverity());
|
||||
@@ -40,7 +40,7 @@ public class DefaultMessageContextFactoryTests extends TestCase {
|
||||
public void testResolveMessageDefaultText() {
|
||||
MessageContext context = factory.createMessageContext();
|
||||
context.addMessage(new MessageBuilder().error().code("bogus").defaultText("Hello world fallback!").build());
|
||||
Message[] messages = context.getMessages(null);
|
||||
Message[] messages = context.getAllMessages();
|
||||
assertEquals(1, messages.length);
|
||||
assertEquals("Hello world fallback!", messages[0].getText());
|
||||
assertEquals(Severity.ERROR, messages[0].getSeverity());
|
||||
@@ -52,7 +52,7 @@ public class DefaultMessageContextFactoryTests extends TestCase {
|
||||
MessageContext context = factory.createMessageContext();
|
||||
context.addMessage(new MessageBuilder().error().source(this).code("argmessage").arg("Keith").defaultText(
|
||||
"Hello world fallback!").build());
|
||||
Message[] messages = context.getMessages(this);
|
||||
Message[] messages = context.getAllMessages();
|
||||
assertEquals(1, messages.length);
|
||||
assertEquals("Hello world Keith!", messages[0].getText());
|
||||
assertEquals(Severity.ERROR, messages[0].getSeverity());
|
||||
@@ -64,7 +64,7 @@ public class DefaultMessageContextFactoryTests extends TestCase {
|
||||
MessageContext context = factory.createMessageContext();
|
||||
context.addMessage(new MessageBuilder().error().source(this).codes(new String[] { "bogus", "argmessage" })
|
||||
.args(new Object[] { "Keith" }).defaultText("Hello world fallback!").build());
|
||||
Message[] messages = context.getMessages(this);
|
||||
Message[] messages = context.getMessagesBySource(this);
|
||||
assertEquals(1, messages.length);
|
||||
assertEquals("Hello world Keith!", messages[0].getText());
|
||||
assertEquals(Severity.ERROR, messages[0].getSeverity());
|
||||
@@ -77,16 +77,16 @@ public class DefaultMessageContextFactoryTests extends TestCase {
|
||||
context.addMessage(new MessageBuilder().defaultText("Info").build());
|
||||
context.addMessage(new MessageBuilder().error().defaultText("Error").build());
|
||||
context.addMessage(new MessageBuilder().warning().source(this).code("message").build());
|
||||
assertEquals(2, context.getMessages(null).length);
|
||||
assertEquals(1, context.getMessages(this).length);
|
||||
assertEquals(2, context.getMessagesBySource(null).length);
|
||||
assertEquals(1, context.getMessagesBySource(this).length);
|
||||
assertTrue(context instanceof StateManageableMessageContext);
|
||||
StateManageableMessageContext manageable = (StateManageableMessageContext) context;
|
||||
Serializable messages = manageable.createMessagesMemento();
|
||||
context = factory.createMessageContext();
|
||||
assertEquals(0, context.getMessages().length);
|
||||
assertEquals(0, context.getAllMessages().length);
|
||||
manageable = (StateManageableMessageContext) context;
|
||||
manageable.restoreMessages(messages);
|
||||
assertEquals(2, context.getMessages(null).length);
|
||||
assertEquals(1, context.getMessages(this).length);
|
||||
assertEquals(2, context.getMessagesBySource(null).length);
|
||||
assertEquals(1, context.getMessagesBySource(this).length);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user