Skip to content

Commit 318d66e

Browse files
author
Luc Maisonobe
committed
allow either specific or generic formats to be null
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1035009 13f79535-47bb-0310-9956-ffa450edef68
1 parent 183ad33 commit 318d66e

File tree

2 files changed

+33
-6
lines changed

2 files changed

+33
-6
lines changed

src/main/java/org/apache/commons/math/exception/util/MessageFactory.java

+9-5
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ public static String buildMessage(Locale locale,
5050
* an argument list.
5151
*
5252
* @param locale Locale in which the message should be translated.
53-
* @param specific Format specifier.
54-
* @param general Format specifier.
53+
* @param specific Format specifier (may be null).
54+
* @param general Format specifier (may be null).
5555
* @param arguments Format arguments. They will be substituted first in
5656
* the {@code specific} format specifier, then the remaining arguments
5757
* will be substituted in the {@code general} format specifier.
@@ -63,7 +63,6 @@ public static String buildMessage(Locale locale,
6363
Object ... arguments) {
6464

6565
final StringBuilder sb = new StringBuilder();
66-
final MessageFormat generalFmt = new MessageFormat(general.getLocalizedString(locale), locale);
6766
Object[] generalArgs = arguments;
6867

6968
if (specific != null) {
@@ -80,11 +79,16 @@ public static String buildMessage(Locale locale,
8079

8180
// build the message
8281
sb.append(specificFmt.format(specificArgs));
83-
sb.append(": ");
8482

8583
}
8684

87-
sb.append(generalFmt.format(generalArgs));
85+
if (general != null) {
86+
if (specific != null) {
87+
sb.append(": ");
88+
}
89+
final MessageFormat generalFmt = new MessageFormat(general.getLocalizedString(locale), locale);
90+
sb.append(generalFmt.format(generalArgs));
91+
}
8892

8993
return sb.toString();
9094
}

src/test/java/org/apache/commons/math/exception/util/MessageFactoryTest.java

+24-1
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,35 @@
2424
public class MessageFactoryTest {
2525

2626
@Test
27-
public void testSpecificGeneric() {
27+
public void testSpecificGeneral() {
2828
Localizable specific = new DummyLocalizable("specific {0} - {1} - {2}");
2929
Localizable general = new DummyLocalizable("general {0} / {1}");
3030
String message = MessageFactory.buildMessage(Locale.FRENCH, specific, general,
3131
0, 1, 2, 'a', 'b');
3232
Assert.assertEquals("specific 0 - 1 - 2: general a / b", message);
3333
}
3434

35+
@Test
36+
public void testNullSpecific() {
37+
Localizable general = new DummyLocalizable("general {0} / {1}");
38+
String message = MessageFactory.buildMessage(Locale.FRENCH, null, general,
39+
'a', 'b');
40+
Assert.assertEquals("general a / b", message);
41+
}
42+
43+
@Test
44+
public void testNullGeneral() {
45+
Localizable specific = new DummyLocalizable("specific {0} - {1} - {2}");
46+
String message = MessageFactory.buildMessage(Locale.FRENCH, specific, null,
47+
0, 1, 2);
48+
Assert.assertEquals("specific 0 - 1 - 2", message);
49+
}
50+
51+
52+
@Test
53+
public void testNull() {
54+
String message = MessageFactory.buildMessage(Locale.FRENCH, null, null, "nothing");
55+
Assert.assertEquals("", message);
56+
}
57+
3558
}

0 commit comments

Comments
 (0)