[ http://issues.apache.org/jira/browse/DERBY-470?page=all ]
Deepa Remesh updated DERBY-470:
-------------------------------
Attachment: derby-470.diff
derby-470.status
I have added the following in LocalizedResource.java to check if BigDecimal is
available in the JVM.
private static boolean HAVE_BIG_DECIMAL;
{
boolean haveBigDecimal;
try {
Class.forName("java.math.BigDecimal");
haveBigDecimal = true;
} catch (Throwable t) {
haveBigDecimal = false;
}
HAVE_BIG_DECIMAL = haveBigDecimal;
}
The above code is also there in org.apache.derby.impl.tools.ij.util.java. Will
it be okay to make HAVE_BIG_DECIMAL in util.java public and re-use it? This
would be good if there are more scenarios which may need a similar check.
Please let me know and I can submit a new patch, if needed.
With this patch, I have run derbyall with Sun JDK 1.4.2 and IBM's WCTME 5.7
J2ME/CDC/FP. In J2ME, one testcase failed. The failure is not related to this
change.
> Exception when using LOCALIZEDDISPLAY with JSR169
> -------------------------------------------------
>
> Key: DERBY-470
> URL: http://issues.apache.org/jira/browse/DERBY-470
> Project: Derby
> Type: Bug
> Components: Localization
> Environment: IBM's J2ME/CDC/Foundation Profile and JSR169
> Reporter: Deepa Remesh
> Assignee: Deepa Remesh
> Attachments: derby-470.diff, derby-470.status
>
> As I did not get any response to my mail, I am opening a JIRA issue for this.
> When I run the test i18n/I18NImportExport.java with JSR169 using IBM's
> J2ME/CDC/Foundation Profile, I get the following exception:
> "JAVA ERROR: java.lang.NoSuchMethodError:
> java/sql/ResultSet.getBigDecimal(II)Ljava/math/BigDecimal;"
> In the test, LOCALIZEDDISPLAY is on and the table has a DECIMAL column. This
> causes the exception. On looking at the code, following is done to format
> DECIMAL types in LocalizedResource:
> if (type == Types.NUMERIC || type == Types.DECIMAL) {
> return getNumberAsString(rs.getBigDecimal(columnNumber,
> rsm.getScale(columnNumber)));
> }
> where getNumberAsString method does the following:
> public String getNumberAsString(Object o){
> if (enableLocalized){
> return formatNumber.format(o, new StringBuffer(), new
> FieldPosition(0)).toString();
> }
> else {
> return o.toString();
> }
> }
> As a solution, I am planning to do the following:
> 1. Check for BigDecimal class in the JVM by doing a Class.forName
> 2. Call getNumberAsString for NUMERIC and DECIMAL types only if BigDecimal
> class is available. Otherwise, return rs.getString.
> This solution would mean that NUMERIC and DECIMAL types will not be
> localized in these JVM environments. Please let me know if any comments on
> this.
> Thanks,
> Deepa
--
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