java.text.MessageFormat.applyPattern(String pattern) and two MessageFormat
constructors fail to detect unmatched braces in the pattern
--------------------------------------------------------------------------------------------------------------------------------------
Key: HARMONY-65
URL: http://issues.apache.org/jira/browse/HARMONY-65
Project: Harmony
Type: Bug
Components: Classlib
Reporter: tatyana doubtsova
Problem details:
According to j2se 1.4.2 constructors MessageFormat(String pattern),
MessageFormat(String pattern, Locale) and method applyPattern(String pattern)
should throw IllegalArgumantException, if the pattern is invalid. Harmony
implementation doesn't throw IAE, when there are unmatched braces in the pattern
Code for reproducing Test.java:
import java.text.*;
import java.util.Locale;
public class Test {
public static void main(String[] args) throws Exception {
MessageFormat mf = new MessageFormat("{0,number,integer}");
String badpattern = "{0,number,#";
try{
mf.applyPattern(badpattern);
System.out.println("pattern = " + mf.toPattern());
System.out.println("applyPattern(String) FAILED to detect
invalid pattern");
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
System.out.println("applyPattern(String) PASSED");
System.out.println(e.getMessage());
}
try {
mf = new MessageFormat("{0,number,integer");
System.out.println("pattern = " + mf.toPattern());
System.out.println("MessageFormat(String) FAILED to detect
invalid pattern");
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
System.out.println("MessageFormat(String) PASSED");
}
try {
mf = new MessageFormat("{0,number,integer", Locale.US);
System.out.println("pattern = " + mf.toPattern());
System.out.println("MessageFormat(String, Locale) FAILED to
detect invalid pattern");
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
System.out.println("MessageFormat(String, Locale) PASSED");
}
}
}
Steps to Reproduce:
1. Build Harmony (check-out on 2006-01-30) j2se subset as described in
README.txt.
2. Compile Test.java using BEA 1.4 javac
> javac -d . Test.java
3. Run java using compatible VM (J9)
> java -showversion Test
Output:
java version 1.4.2 (subset)
(c) Copyright 1991, 2005 The Apache Software Foundation or its licensors, as
applicable.
pattern = {0,number,#}
applyPattern(String) FAILED to detect invalid pattern
pattern = {0,number,integer#}
MessageFormat(String) FAILED to detect invalid pattern
pattern = {0,number,integer#}
MessageFormat(String, Locale) FAILED to detect invalid pattern
Output on BEA 1.4.2 to compare with:
Unmatched braces in the pattern.
applyPattern(String) PASSED
Unmatched braces in the pattern.
Unmatched braces in the pattern.
MessageFormat(String) PASSED
Unmatched braces in the pattern.
MessageFormat(String, Locale) PASSED
Suggested junit test case:
package org.apache.harmony.tests.java.text;
import java.text.MessageFormat;
import java.util.Locale;
import junit.framework.TestCase;
public class MessageFormatTest extends TestCase {
public static void main(String[] args) {
junit.textui.TestRunner.run(MessageFormatTest.class);
}
public void test_MessageFormatString() {
try {
MessageFormat mf = new MessageFormat("{0,number,integer");
fail("Assert 0: Failed to detect unmatched brackets.");
} catch (IllegalArgumentException e) {
}
}
public void test_MessageFormatStringLocale() {
try {
MessageFormat mf = new MessageFormat("{0,number,integer",
Locale.US);
fail("Assert 0: Failed to detect unmatched brackets.");
} catch (IllegalArgumentException e) {
}
}
public void test_applyPatternString() {
MessageFormat mf = new MessageFormat("{0,number,integer}");
String badpattern = "{0,number,#";
try{
mf.applyPattern(badpattern);
fail("Assert 0: Failed to detect unmatched brackets.");
} catch (IllegalArgumentException e) {
}
}
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira