diff --git a/spring-binding/src/main/java/org/springframework/binding/message/MessageBuilder.java b/spring-binding/src/main/java/org/springframework/binding/message/MessageBuilder.java index d441e9b3..7567641e 100644 --- a/spring-binding/src/main/java/org/springframework/binding/message/MessageBuilder.java +++ b/spring-binding/src/main/java/org/springframework/binding/message/MessageBuilder.java @@ -111,7 +111,7 @@ public class MessageBuilder { if (codes == null) { return this; } - this.codes.add(Arrays.asList(codes)); + this.codes.addAll(Arrays.asList(codes)); return this; } @@ -136,7 +136,7 @@ public class MessageBuilder { if (args == null) { return this; } - this.args.add(Arrays.asList(args)); + this.args.addAll(Arrays.asList(args)); return this; } diff --git a/spring-binding/src/test/java/org/springframework/binding/message/MessageBuilderTests.java b/spring-binding/src/test/java/org/springframework/binding/message/MessageBuilderTests.java new file mode 100644 index 00000000..5221bb3a --- /dev/null +++ b/spring-binding/src/test/java/org/springframework/binding/message/MessageBuilderTests.java @@ -0,0 +1,78 @@ +package org.springframework.binding.message; + +import java.util.Locale; + +import junit.framework.TestCase; + +import org.springframework.context.NoSuchMessageException; +import org.springframework.context.support.StaticMessageSource; + +public class MessageBuilderTests extends TestCase { + private StaticMessageSource messageSource = new StaticMessageSource(); + private Locale locale = Locale.getDefault(); + private MessageBuilder builder = new MessageBuilder(); + + public void setUp() { + messageSource.addMessage("foo", locale, "bar"); + } + + public void testBuildDefaultText() { + MessageResolver resolver = builder.defaultText("foo").build(); + Message message = resolver.resolveMessage(messageSource, locale); + assertEquals("foo", message.getText()); + assertEquals(Severity.INFO, message.getSeverity()); + assertNull(message.getSource()); + } + + public void testBuildError() { + MessageResolver resolver = builder.error().defaultText("foo").build(); + Message message = resolver.resolveMessage(messageSource, locale); + assertEquals("foo", message.getText()); + assertEquals(Severity.ERROR, message.getSeverity()); + assertNull(message.getSource()); + } + + public void testBuildWarning() { + MessageResolver resolver = builder.warning().defaultText("foo").build(); + Message message = resolver.resolveMessage(messageSource, locale); + assertEquals("foo", message.getText()); + assertEquals(Severity.WARNING, message.getSeverity()); + assertNull(message.getSource()); + } + + public void testBuildNothing() { + MessageResolver resolver = builder.build(); + try { + resolver.resolveMessage(messageSource, locale); + fail("Should have failed"); + } catch (NoSuchMessageException e) { + + } + } + + public void testBuildCode() { + MessageResolver resolver = builder.error().code("foo").build(); + Message message = resolver.resolveMessage(messageSource, locale); + assertEquals("bar", message.getText()); + assertEquals(Severity.ERROR, message.getSeverity()); + assertNull(message.getSource()); + } + + public void testBuildCodes() { + MessageResolver resolver = builder.error().codes(new String[] { "foo" }).build(); + Message message = resolver.resolveMessage(messageSource, locale); + assertEquals("bar", message.getText()); + assertEquals(Severity.ERROR, message.getSeverity()); + assertNull(message.getSource()); + } + + public void testBuildCodesNull() { + MessageResolver resolver = builder.codes(null).build(); + try { + resolver.resolveMessage(messageSource, locale); + fail("Should have failed"); + } catch (NoSuchMessageException e) { + + } + } +}