RFR: 8294989: ResourceBundle naming convention issue in JdbcRowSetResourceBundle.java

Naoto Sato naoto at openjdk.org
Wed Oct 19 22:30:49 UTC 2022


On Fri, 7 Oct 2022 18:24:02 GMT, Justin Lu <duke at openjdk.org> wrote:

> Issue: Resource bundle name does not follow proper naming conventions according to [getBundle method](https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html#getBundle-java.lang.String-java.util.Locale-) for base name parameter
> 
> Fix: Modified bundle name to be a fully qualified class and added regression tests.

test/jdk/javax/sql/resourceBundleTests/ValidateGetBundle.java line 45:

> 43:     private static final String PATH_TO_BUNDLE = "com/sun/rowset/RowSetResourceBundle";
> 44:     // Default Locale
> 45:     private static final Locale DEFAULT_LOCALE = Locale.getDefault();

Is using the default locale OK? What if the test is run under some locale where JDBC does not provide the localized bundle?

test/jdk/javax/sql/resourceBundleTests/ValidateGetBundle.java line 62:

> 60:     private static void testResourceBundleAccess(String bundleName, boolean expectBundle) {
> 61:         try {
> 62:             var bundle = (PropertyResourceBundle) ResourceBundle.getBundle(

Is casting to `PropertyResourceBundle` needed? If you intend to check the bundle type, I'd explicitly check the type.

test/jdk/javax/sql/resourceBundleTests/ValidateGetBundle.java line 64:

> 62:             var bundle = (PropertyResourceBundle) ResourceBundle.getBundle(
> 63:                     bundleName, DEFAULT_LOCALE, JdbcRowSetResourceBundle.class.getModule());
> 64:             System.out.printf("$$$ %s found as expected!%n", bundleName);

I think `expectBundle` needs to be examined here. If it is `false`, it should throw an exception.

test/jdk/javax/sql/testng/test/rowset/ValidateResourceBundleAccess.java line 42:

> 40:     private static final String invalidState = "Invalid state";
> 41:     // Expected JDBCResourceBundle message, crsreader.connecterr
> 42:     private static final String rsReaderError = "Internal Error in RowSetReader: no connection or command";

Should be tested in English environment, if the test is going to compare the result with English text.

test/jdk/javax/sql/testng/test/rowset/ValidateResourceBundleAccess.java line 53:

> 51:         // is found from the resource bundle
> 52:         try {
> 53:             jrs.getMetaData();

The test should fail if the execution of `getMetaData()` succeeds.

test/jdk/javax/sql/testng/test/rowset/ValidateResourceBundleAccess.java line 59:

> 57:         // Now tests via CachedRowSet
> 58:         try {
> 59:             crs.execute();

Ditto, as above.

-------------

PR: https://git.openjdk.org/jdk/pull/10612


More information about the core-libs-dev mailing list