simplification of EL parsing api

improvements to messages API
tests
This commit is contained in:
Keith Donald
2008-01-14 23:20:51 +00:00
parent 7661cb7675
commit 3e99a26b8e
10 changed files with 356 additions and 332 deletions

View File

@@ -2,6 +2,7 @@ package org.springframework.binding.expression.el;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.el.ELContext;
import javax.el.ELResolver;
@@ -13,6 +14,7 @@ import junit.framework.TestCase;
import org.jboss.el.ExpressionFactoryImpl;
import org.springframework.binding.expression.Expression;
import org.springframework.binding.expression.ExpressionVariable;
import org.springframework.binding.expression.ParserException;
public class ELExpressionParserTests extends TestCase {
@@ -40,6 +42,20 @@ public class ELExpressionParserTests extends TestCase {
}
}
public void testParseEvalExpressionExpectedResultTypeNull() {
String expressionString = "#{value}";
Class expressionTargetType = null;
Class expectedEvaluationResultType = null;
ExpressionVariable[] expressionVariables = null;
try {
parser.parseExpression(expressionString, expressionTargetType, expectedEvaluationResultType,
expressionVariables);
fail("Should have failed");
} catch (ParserException e) {
}
}
public void testParseEvalExpression() {
String expressionString = "#{value}";
Class expressionTargetType = TestBean.class;
@@ -51,15 +67,31 @@ public class ELExpressionParserTests extends TestCase {
assertEquals("foo", exp.getValue(target));
}
public void testParseLiteralExpressionStringAsEvalExpression() {
String expressionString = "value";
Class expressionTargetType = TestBean.class;
Class expectedEvaluationResultType = String.class;
public void testParseEvalExpressionNoTargetType() {
String expressionString = "#{value}";
Class expressionTargetType = null;
Class expectedEvaluationResultType = Object.class;
ExpressionVariable[] expressionVariables = null;
Expression exp = parser.parseExpression(parser.parseEvalExpressionString(expressionString),
expressionTargetType, expectedEvaluationResultType, expressionVariables);
TestBean target = new TestBean();
assertEquals("foo", exp.getValue(target));
try {
parser.parseExpression(expressionString, expressionTargetType, expectedEvaluationResultType,
expressionVariables);
fail("Should have failed");
} catch (ParserException e) {
}
}
public void testParseEvalExpressionNotRegisteredTargetType() {
String expressionString = "#{value}";
Class expressionTargetType = Map.class;
Class expectedEvaluationResultType = Object.class;
ExpressionVariable[] expressionVariables = null;
try {
parser.parseExpression(expressionString, expressionTargetType, expectedEvaluationResultType,
expressionVariables);
fail("Should have failed");
} catch (ParserException e) {
}
}
public void testParseLiteralExpression() {

View File

@@ -0,0 +1,92 @@
package org.springframework.binding.message;
import java.io.Serializable;
import java.util.Locale;
import junit.framework.TestCase;
import org.springframework.context.support.StaticMessageSource;
public class DefaultMessageContextFactoryTests extends TestCase {
private DefaultMessageContextFactory factory;
protected void setUp() {
StaticMessageSource messageSource = new StaticMessageSource();
factory = new DefaultMessageContextFactory(messageSource);
messageSource.addMessage("message", Locale.getDefault(), "Hello world resolved!");
messageSource.addMessage("argmessage", Locale.getDefault(), "Hello world {0}!");
}
public void testCreateMessageContext() {
MessageContext context = factory.createMessageContext();
context.addMessage(new MessageBuilder().defaultText("Hello world!").build());
Message[] messages = context.getMessages();
assertEquals(1, messages.length);
assertEquals("Hello world!", messages[0].getText());
assertEquals(Severity.INFO, messages[0].getSeverity());
assertEquals(null, messages[0].getSource());
}
public void testResolveMessage() {
MessageContext context = factory.createMessageContext();
context.addMessage(new MessageBuilder().warning().source(this).code("message").build());
Message[] messages = context.getMessages(this);
assertEquals(1, messages.length);
assertEquals("Hello world resolved!", messages[0].getText());
assertEquals(Severity.WARNING, messages[0].getSeverity());
assertEquals(this, messages[0].getSource());
}
public void testResolveMessageDefaultText() {
MessageContext context = factory.createMessageContext();
context.addMessage(new MessageBuilder().error().code("bogus").defaultText("Hello world fallback!").build());
Message[] messages = context.getMessages(null);
assertEquals(1, messages.length);
assertEquals("Hello world fallback!", messages[0].getText());
assertEquals(Severity.ERROR, messages[0].getSeverity());
assertEquals(null, messages[0].getSource());
assertTrue(context instanceof StateManageableMessageContext);
}
public void testResolveMessageWithArgs() {
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);
assertEquals(1, messages.length);
assertEquals("Hello world Keith!", messages[0].getText());
assertEquals(Severity.ERROR, messages[0].getSeverity());
assertEquals(this, messages[0].getSource());
assertTrue(context instanceof StateManageableMessageContext);
}
public void testResolveMessageWithMultipleCodes() {
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);
assertEquals(1, messages.length);
assertEquals("Hello world Keith!", messages[0].getText());
assertEquals(Severity.ERROR, messages[0].getSeverity());
assertEquals(this, messages[0].getSource());
assertTrue(context instanceof StateManageableMessageContext);
}
public void testSaveRestoreMessages() {
MessageContext context = factory.createMessageContext();
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);
assertTrue(context instanceof StateManageableMessageContext);
StateManageableMessageContext manageable = (StateManageableMessageContext) context;
Serializable messages = manageable.createMessagesMemento();
context = factory.createMessageContext();
assertEquals(0, context.getMessages().length);
manageable = (StateManageableMessageContext) context;
manageable.restoreMessages(messages);
assertEquals(2, context.getMessages(null).length);
assertEquals(1, context.getMessages(this).length);
}
}