SWF-1055 - FlowFacesContext didn't expose context messages with null source

This commit is contained in:
Jeremy Grelle
2009-03-13 17:42:06 +00:00
parent c9917b12ea
commit b3399fd44b
2 changed files with 29 additions and 12 deletions

View File

@@ -203,7 +203,9 @@ public class FlowFacesContextMessageDelegate {
public Object next() {
Message next = messages[++currentIndex];
if (next.getSource().toString().endsWith(SUMMARY_MESSAGE_KEY)) {
if (next.getSource() == null) {
return null;
} else if (next.getSource().toString().endsWith(SUMMARY_MESSAGE_KEY)) {
return next.getSource().toString().replaceAll(SUMMARY_MESSAGE_KEY, "");
} else {
return next.getSource().toString();
@@ -253,11 +255,14 @@ public class FlowFacesContextMessageDelegate {
private Set identifiedMessageSources = new HashSet();
// From getClientIdsWithMessages docs: If any messages have been queued that were not associated with
// any specific client identifier, a null value will be included in the iterated values.
public boolean test(Message message) {
if (message.getSource() == null || message.getSource().equals("")
|| message.getSource().equals(nullSummaryId)
|| message.getSource().toString().endsWith(DETAIL_MESSAGE_KEY)) {
if (message.getSource() != null && message.getSource().toString().endsWith(DETAIL_MESSAGE_KEY)) {
return false;
} else if (message.getSource() == null || message.getSource().equals("")
|| message.getSource().equals(nullSummaryId)) {
return identifiedMessageSources.add(null);
}
return identifiedMessageSources.add(message.getSource());
}

View File

@@ -1,6 +1,8 @@
package org.springframework.faces.webflow;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
@@ -86,7 +88,7 @@ public class FlowFacesContextTests extends TestCase {
assertNotNull(i.next());
iterationCount++;
}
assertEquals("There should be 5 messages to iterate", 5, iterationCount);
assertEquals("There should be 6 messages to iterate", 6, iterationCount);
}
public final void testMutableGetMessages() {
@@ -117,11 +119,11 @@ public class FlowFacesContextTests extends TestCase {
while (i.hasNext()) {
FacesMessage message = (FacesMessage) i.next();
assertNotNull(message);
assertEquals("componentId_summary", message.getSummary());
assertEquals("componentId_detail", message.getDetail());
assertEquals("componentId_summary" + (iterationCount + 1), message.getSummary());
assertEquals("componentId_detail" + (iterationCount + 1), message.getDetail());
iterationCount++;
}
assertEquals(1, iterationCount);
assertEquals(2, iterationCount);
}
public final void testGetMessagesByClientId_ForUserMessage() {
@@ -159,13 +161,19 @@ public class FlowFacesContextTests extends TestCase {
EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext);
EasyMock.replay(new Object[] { requestContext });
List expectedOrderedIds = new ArrayList();
expectedOrderedIds.add(null);
expectedOrderedIds.add("componentId");
expectedOrderedIds.add("userMessage");
int iterationCount = 0;
Iterator i = facesContext.getClientIdsWithMessages();
while (i.hasNext()) {
i.next();
String clientId = (String) i.next();
assertEquals("Client id not expected", expectedOrderedIds.get(iterationCount), clientId);
iterationCount++;
}
assertEquals(2, iterationCount);
assertEquals(3, iterationCount);
}
public final void testGetMaximumSeverity() {
@@ -189,9 +197,13 @@ public class FlowFacesContextTests extends TestCase {
prepopulatedMessageContext.addMessage(new MessageBuilder().source("null_detail").defaultText("foo").info()
.build());
prepopulatedMessageContext.addMessage(new MessageBuilder().source("componentId_summary").defaultText(
"componentId_summary").warning().build());
"componentId_summary1").warning().build());
prepopulatedMessageContext.addMessage(new MessageBuilder().source("componentId_detail").defaultText(
"componentId_detail").warning().build());
"componentId_detail1").warning().build());
prepopulatedMessageContext.addMessage(new MessageBuilder().source("componentId_summary").defaultText(
"componentId_summary2").warning().build());
prepopulatedMessageContext.addMessage(new MessageBuilder().source("componentId_detail").defaultText(
"componentId_detail2").warning().build());
prepopulatedMessageContext.addMessage(new MessageBuilder().source("userMessage").defaultText("userMessage")
.info().build());
prepopulatedMessageContext.addMessage(new MessageBuilder().source("null_summary").defaultText("baz").error()