db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Deepa Remesh (JIRA)" <derby-...@db.apache.org>
Subject [jira] Updated: (DERBY-470) Exception when using LOCALIZEDDISPLAY with JSR169
Date Wed, 27 Jul 2005 17:32:21 GMT
     [ http://issues.apache.org/jira/browse/DERBY-470?page=all ]

Deepa Remesh updated DERBY-470:

    Attachment: derby-470.diff

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 {
			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:
For more information on JIRA, see:

View raw message