initial mvc message display

This commit is contained in:
Keith Donald
2008-04-01 18:50:56 +00:00
parent bc35b3d8a6
commit e9f070b3e3
10 changed files with 169 additions and 66 deletions

View File

@@ -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();
}

View File

@@ -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.