Author: luc
Date: Sun Nov 14 21:32:57 2010
New Revision: 1035073
URL: http://svn.apache.org/viewvc?rev=1035073&view=rev
Log:
reverting change introduced in 1035004:
it was the javadoc that did not correspond to the intended behavior, not the
code
Modified:
commons/proper/math/branches/MATH_2_X/src/main/java/org/apache/commons/math/exception/util/MessageFactory.java
commons/proper/math/branches/MATH_2_X/src/test/java/org/apache/commons/math/exception/util/MessageFactoryTest.java
Modified:
commons/proper/math/branches/MATH_2_X/src/main/java/org/apache/commons/math/exception/util/MessageFactory.java
URL:
http://svn.apache.org/viewvc/commons/proper/math/branches/MATH_2_X/src/main/java/org/apache/commons/math/exception/util/MessageFactory.java?rev=1035073&r1=1035072&r2=1035073&view=diff
==============================================================================
---
commons/proper/math/branches/MATH_2_X/src/main/java/org/apache/commons/math/exception/util/MessageFactory.java
(original)
+++
commons/proper/math/branches/MATH_2_X/src/main/java/org/apache/commons/math/exception/util/MessageFactory.java
Sun Nov 14 21:32:57 2010
@@ -52,42 +52,25 @@ public class MessageFactory {
* @param locale Locale in which the message should be translated.
* @param specific Format specifier (may be null).
* @param general Format specifier (may be null).
- * @param arguments Format arguments. They will be substituted first in
- * the {...@code specific} format specifier, then the remaining arguments
- * will be substituted in the {...@code general} format specifier.
+ * @param arguments Format arguments. They will be substituted in
+ * <em>both</em> the {...@code general} and {...@code specific} format
specifiers.
* @return a localized message string.
*/
public static String buildMessage(Locale locale,
Localizable specific,
Localizable general,
Object ... arguments) {
-
final StringBuilder sb = new StringBuilder();
- Object[] generalArgs = arguments;
-
- if (specific != null) {
-
- final MessageFormat specificFmt = new
MessageFormat(specific.getLocalizedString(locale), locale);
-
- // split the arguments: first specific ones then general ones
- final int nbSpecific = Math.min(arguments.length,
specificFmt.getFormatsByArgumentIndex().length);
- final int nbGeneral = arguments.length - nbSpecific;
- Object[] specificArgs = new Object[nbSpecific];
- System.arraycopy(arguments, 0, specificArgs, 0, nbSpecific);
- generalArgs = new Object[nbGeneral];
- System.arraycopy(arguments, nbSpecific, generalArgs, 0, nbGeneral);
-
- // build the message
- sb.append(specificFmt.format(specificArgs));
-
- }
-
if (general != null) {
- if (specific != null) {
+ final MessageFormat fmt = new
MessageFormat(general.getLocalizedString(locale), locale);
+ sb.append(fmt.format(arguments));
+ }
+ if (specific != null) {
+ if (general != null) {
sb.append(": ");
}
- final MessageFormat generalFmt = new
MessageFormat(general.getLocalizedString(locale), locale);
- sb.append(generalFmt.format(generalArgs));
+ final MessageFormat fmt = new
MessageFormat(specific.getLocalizedString(locale), locale);
+ sb.append(fmt.format(arguments));
}
return sb.toString();
Modified:
commons/proper/math/branches/MATH_2_X/src/test/java/org/apache/commons/math/exception/util/MessageFactoryTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/math/branches/MATH_2_X/src/test/java/org/apache/commons/math/exception/util/MessageFactoryTest.java?rev=1035073&r1=1035072&r2=1035073&view=diff
==============================================================================
---
commons/proper/math/branches/MATH_2_X/src/test/java/org/apache/commons/math/exception/util/MessageFactoryTest.java
(original)
+++
commons/proper/math/branches/MATH_2_X/src/test/java/org/apache/commons/math/exception/util/MessageFactoryTest.java
Sun Nov 14 21:32:57 2010
@@ -29,22 +29,22 @@ public class MessageFactoryTest {
Localizable general = new DummyLocalizable("general {0} / {1}");
String message = MessageFactory.buildMessage(Locale.FRENCH, specific,
general,
0, 1, 2, 'a', 'b');
- Assert.assertEquals("specific 0 - 1 - 2: general a / b", message);
+ Assert.assertEquals("general 0 / 1: specific 0 - 1 - 2", message);
}
@Test
public void testNullSpecific() {
Localizable general = new DummyLocalizable("general {0} / {1}");
String message = MessageFactory.buildMessage(Locale.FRENCH, null,
general,
- 'a', 'b');
- Assert.assertEquals("general a / b", message);
+ 0, 1, 2, 'a', 'b');
+ Assert.assertEquals("general 0 / 1", message);
}
@Test
public void testNullGeneral() {
Localizable specific = new DummyLocalizable("specific {0} - {1} -
{2}");
String message = MessageFactory.buildMessage(Locale.FRENCH, specific,
null,
- 0, 1, 2);
+ 0, 1, 2, 'a', 'b');
Assert.assertEquals("specific 0 - 1 - 2", message);
}