view state tests

polish
This commit is contained in:
Keith Donald
2008-03-08 23:11:53 +00:00
parent 5ac261f6c8
commit af58682d13
2 changed files with 21 additions and 59 deletions

View File

@@ -1,17 +1,8 @@
package org.springframework.binding.message;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.util.Assert;
import org.springframework.util.CachingMapDecorator;
/**
* Default message context factory that simply stores messages indexed in a map by their source. Suitable for use in
@@ -34,55 +25,6 @@ public class DefaultMessageContextFactory implements MessageContextFactory {
}
public StateManageableMessageContext createMessageContext() {
return new MessageContextImpl(messageSource);
}
private static class MessageContextImpl implements StateManageableMessageContext {
private MessageSource messageSource;
private Map objectMessages = new CachingMapDecorator() {
protected Object create(Object objectId) {
return new ArrayList();
}
};
public MessageContextImpl(MessageSource messageSource) {
this.messageSource = messageSource;
}
public Serializable createMessagesMemento() {
return new HashMap(objectMessages);
}
public void restoreMessages(Serializable messagesMemento) {
this.objectMessages.putAll((Map) messagesMemento);
}
public void addMessage(MessageResolver messageResolver) {
Locale currentLocale = LocaleContextHolder.getLocale();
Message message = messageResolver.resolveMessage(messageSource, currentLocale);
List messages = (List) objectMessages.get(message.getSource());
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();
}
return new DefaultMessageContext(messageSource);
}
}