SWF-752 - FacesMessage.SEVERITY_FATAL does not propagate through FlowFacesContext

This commit is contained in:
Jeremy Grelle
2008-07-02 15:43:22 +00:00
parent 119384783b
commit 6982e0ac2d
5 changed files with 41 additions and 7 deletions

View File

@@ -38,6 +38,7 @@ import org.springframework.core.style.ToStringCreator;
* </code>
* </p>
* @author Keith Donald
* @author Jeremy Grelle
*/
public class MessageBuilder {
@@ -78,6 +79,15 @@ public class MessageBuilder {
return this;
}
/**
* Records that the message being built is a fatal message.
* @return this, for fluent API usage
*/
public MessageBuilder fatal() {
severity = Severity.FATAL;
return this;
}
/**
* Records that the message being built is against the provided source.
* @param source the source generating the message

View File

@@ -21,6 +21,7 @@ import org.springframework.core.enums.StaticLabeledEnum;
* Enum exposing supported message severities.
*
* @author Keith Donald
* @author Jeremy Grelle
* @see Message
*/
public class Severity extends StaticLabeledEnum {
@@ -37,10 +38,15 @@ public class Severity extends StaticLabeledEnum {
public static final Severity WARNING = new Severity(1, "Warning");
/**
* THe "Error" severity. Used to indicate a significant problem like a business rule violation.
* The "Error" severity. Used to indicate a significant problem like a business rule violation.
*/
public static final Severity ERROR = new Severity(2, "Error");
/**
* The "Fatal" severity. Used to indicate a fatal problem like a system error.
*/
public static final Severity FATAL = new Severity(3, "Fatal");
private Severity(int code, String label) {
super(code, label);
}

View File

@@ -26,6 +26,14 @@ public class MessageBuilderTests extends TestCase {
assertNull(message.getSource());
}
public void testBuildFatal() {
MessageResolver resolver = builder.fatal().defaultText("foo").build();
Message message = resolver.resolveMessage(messageSource, locale);
assertEquals("foo", message.getText());
assertEquals(Severity.FATAL, message.getSeverity());
assertNull(message.getSource());
}
public void testBuildError() {
MessageResolver resolver = builder.error().defaultText("foo").build();
Message message = resolver.resolveMessage(messageSource, locale);

View File

@@ -120,9 +120,12 @@ public class FlowFacesContext extends FacesContext {
} else if (message.getSeverity() == FacesMessage.SEVERITY_WARN) {
summaryResolver = new MessageBuilder().source(summarySource).defaultText(summaryText.toString()).warning()
.build();
} else {
} else if (message.getSeverity() == FacesMessage.SEVERITY_ERROR) {
summaryResolver = new MessageBuilder().source(summarySource).defaultText(summaryText.toString()).error()
.build();
} else {
summaryResolver = new MessageBuilder().source(summarySource).defaultText(summaryText.toString()).fatal()
.build();
}
context.getMessageContext().addMessage(summaryResolver);
@@ -138,9 +141,12 @@ public class FlowFacesContext extends FacesContext {
} else if (message.getSeverity() == FacesMessage.SEVERITY_WARN) {
detailResolver = new MessageBuilder().source(detailSource).defaultText(detailText.toString()).warning()
.build();
} else {
} else if (message.getSeverity() == FacesMessage.SEVERITY_ERROR) {
detailResolver = new MessageBuilder().source(detailSource).defaultText(detailText.toString()).error()
.build();
} else {
detailResolver = new MessageBuilder().source(detailSource).defaultText(detailText.toString()).fatal()
.build();
}
context.getMessageContext().addMessage(detailResolver);
@@ -168,7 +174,7 @@ public class FlowFacesContext extends FacesContext {
if (message.getSeverity().getOrdinal() > max.getOrdinal()) {
max = message.getSeverity();
}
if (max.getOrdinal() == FacesMessage.SEVERITY_ERROR.getOrdinal())
if (max.getOrdinal() == FacesMessage.SEVERITY_FATAL.getOrdinal())
break;
}
return max;
@@ -281,8 +287,10 @@ public class FlowFacesContext extends FacesContext {
return new FacesMessage(FacesMessage.SEVERITY_INFO, summaryMessage.getText(), detailMessage.getText());
} else if (summaryMessage.getSeverity() == Severity.WARNING) {
return new FacesMessage(FacesMessage.SEVERITY_WARN, summaryMessage.getText(), detailMessage.getText());
} else {
} else if (summaryMessage.getSeverity() == Severity.ERROR) {
return new FacesMessage(FacesMessage.SEVERITY_ERROR, summaryMessage.getText(), detailMessage.getText());
} else {
return new FacesMessage(FacesMessage.SEVERITY_FATAL, summaryMessage.getText(), detailMessage.getText());
}
}

View File

@@ -89,7 +89,7 @@ public class FlowFacesContextTests extends TestCase {
assertNotNull(i.next());
iterationCount++;
}
assertEquals("There should be 4 messages to iterate", 4, iterationCount);
assertEquals("There should be 5 messages to iterate", 5, iterationCount);
}
public final void testGetMessagesByClientId_ForComponent() {
@@ -158,7 +158,7 @@ public class FlowFacesContextTests extends TestCase {
EasyMock.expect(requestContext.getMessageContext()).andStubReturn(messageContext);
EasyMock.replay(new Object[] { requestContext });
assertEquals(FacesMessage.SEVERITY_ERROR, facesContext.getMaximumSeverity());
assertEquals(FacesMessage.SEVERITY_FATAL, facesContext.getMaximumSeverity());
}
private void setupMessageContext() {
@@ -177,6 +177,8 @@ public class FlowFacesContextTests extends TestCase {
.build());
prepopulatedMessageContext.addMessage(new MessageBuilder().source("null_detail").defaultText("baz").error()
.build());
prepopulatedMessageContext.addMessage(new MessageBuilder().defaultText("Subzero Wins - Fatality").fatal()
.build());
}
private class TestGetMessagesContext implements MessageContext {