You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by Vladimir Ivanov <iv...@gmail.com> on 2006/09/20 09:21:50 UTC

[classlib][math] one more non-bug diff ? ([jira] (HARMONY-1499) BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and ArithmeticException on RI

As pointed in the HARMONY-1499 constructors BigDecimal((BigInteger)null, new
MathContext("precision=14 roundingMode=UNNECESSARY")) and
BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) throws NPE on
Harmony and ArithmeticException on RI.

The spec requires NPE and BEA throws NPE in this case also as Harmony. I
suggest following the spec in this case.
Any objection?

 thanks, Vladimir


---------- Forwarded message ----------
From: Vladimir Ivanov (JIRA) <ji...@apache.org>
Date: Sep 20, 2006 2:05 PM
Subject: [jira] Created: (HARMONY-1499) [classlib][math]
BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and
ArithmeticException on RI
To: ivavladimir@gmail.com

[classlib][math] BigDecimal((BigInteger)null, MathContext) throws NPE on
Harmony and ArithmeticException on RI
--------------------------------------------------------------------------------------------------------------

                Key: HARMONY-1499
                URL: http://issues.apache.org/jira/browse/HARMONY-1499
            Project: Harmony
         Issue Type: Bug
         Components: Classlib
           Reporter: Vladimir Ivanov
           Priority: Minor


The constructors BigDecimal((BigInteger)null, new MathContext("precision=14
roundingMode=UNNECESSARY")) and
BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) throws NPE on
Harmony and ArithmeticException on RI.
The spec says for BigDecimal class: "All methods and constructors for this
class throw NullPointerException when passed a null object reference for any
input parameter" and for the thes constructors: "Throws: ArithmeticException
- if the result is inexact but the rounding mode is UNNECESSARY."

Seems, that the RI does not check input for 'null' values. While BEA throws
NPE in this case and RI behavior contradicts to the spec it may be 'non-bug
diff'.

================== test.java =====================
import java.math.*;

public class test {
   public static void main(String[] args) {
       try {
            System.out.println("res = " + new BigDecimal((BigInteger)null,
new MathContext("precision=14 roundingMode=DOWN")));
       } catch (Exception e) {
            e.printStackTrace();
       }
       try {
            System.out.println("res = " + new BigDecimal((BigInteger)null,
new MathContext("precision=14 roundingMode=UNNECESSARY")));
       } catch (Exception e) {
            e.printStackTrace();
       }
       try {
            System.out.println("res = " + new BigDecimal((BigInteger)null,
1, new MathContext("precision=14 roundingMode=UNNECESSARY")));
       } catch (Exception e) {
            e.printStackTrace();
       }
   }
}
==============================================

Output:
---------------------------------------------------
C:\tmp\tmp17>C:\jdk1.5.0_08\bin\java.exe -cp . -showversion test
java version "1.5.0_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode)

res = -9.2233720368547E+18
java.lang.ArithmeticException: Rounding necessary
       at java.math.BigDecimal.divide(BigDecimal.java:1346)
       at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
       at java.math.BigDecimal.doRound(BigDecimal.java:3433)
       at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
       at java.math.BigDecimal.<init>(BigDecimal.java:811)
       at test.main(test.java:11)
java.lang.ArithmeticException: Rounding necessary
       at java.math.BigDecimal.divide(BigDecimal.java:1346)
       at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
       at java.math.BigDecimal.doRound(BigDecimal.java:3433)
       at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
       at java.math.BigDecimal.<init>(BigDecimal.java:851)
       at test.main(test.java:16)

---------------------------------------------------
C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -cp .
-showversion test
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75,
GC: System optimized over throughput (initial strategy singleparpar))

java.lang.NullPointerException
       at java.math.BigDecimal.doRound(BigDecimal.java:3066)
       at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
       at java.math.BigDecimal.<init>(BigDecimal.java:751)
       at test.main(test.java:6)
java.lang.NullPointerException
       at java.math.BigDecimal.doRound(BigDecimal.java:3066)
       at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
       at java.math.BigDecimal.<init>(BigDecimal.java:751)
       at test.main(test.java:11)
java.lang.NullPointerException
       at java.math.BigDecimal.doRound(BigDecimal.java:3066)
       at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
       at java.math.BigDecimal.<init>(BigDecimal.java:788)
       at test.main(test.java:16)

---------------------------------------------------
C:\tmp\tmp17>C:\harmony\classlib1.5\deploy\jdk\jre\bin\java.exe -cp . test
java.lang.NullPointerException
       at java.math.BigDecimal.<init>(BigDecimal.java:384)
       at java.math.BigDecimal.<init>(BigDecimal.java:372)
       at java.math.BigDecimal.<init>(BigDecimal.java:377)
       at test.main(test.java:6)
java.lang.NullPointerException
       at java.math.BigDecimal.<init>(BigDecimal.java:384)
       at java.math.BigDecimal.<init>(BigDecimal.java:372)
       at java.math.BigDecimal.<init>(BigDecimal.java:377)
       at test.main(test.java:11)
java.lang.NullPointerException
       at java.math.BigDecimal.<init>(BigDecimal.java:384)
       at java.math.BigDecimal.<init>(BigDecimal.java:392)
       at test.main(test.java:16)

---------------------------------------------------
C:\tmp\tmp17>C:\harmony\drlvm1.5\build\win_ia32_msvc_debug\deploy\jre\bin\java
-Dvm.assert_dialog=false -cp . -showversion test
Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software
Foundation or its licensors, as applicable.
java version "1.5.0"
pre-alpha : not complete or compatible
svn = r448020, (Sep 20 2006), Windows/ia32/msvc 1310, debug build
http://incubator.apache.org/harmony
java.lang.NullPointerException
       at test.main(test.java:6)
java.lang.NullPointerException
       at test.main(test.java:11)
java.lang.NullPointerException
       at test.main(test.java:16)


--
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

Re: [classlib][math] one more non-bug diff ? ([jira] (HARMONY-1499) BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and ArithmeticException on RI

Posted by Tim Ellison <t....@gmail.com>.
I can't imagine any app depending upon the RI behavior, so I'll close
this as a non-bug difference.

Regards,
Tim

Daniel Fridlender wrote:
> On 9/20/06, Tony Wu <wu...@gmail.com> wrote:
>> RI disobeys spec because all constructors of BigDecimal do not throw
>> any NPE
>> when encounter a null parameter.
>> I incline to follow spec and mark this issue as an non-bug difference.
> 
> I agree.
> We should keep the current behavior of Harmony implementation since it
> obeys the spec.
> 
> Daniel
> 
>>
>> On 9/20/06, Vladimir Ivanov <iv...@gmail.com> wrote:
>> >
>> > As pointed in the HARMONY-1499 constructors
>> BigDecimal((BigInteger)null,
>> > new
>> > MathContext("precision=14 roundingMode=UNNECESSARY")) and
>> > BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) throws
>> NPE
>> > on
>> > Harmony and ArithmeticException on RI.
>> >
>> > The spec requires NPE and BEA throws NPE in this case also as
>> Harmony. I
>> > suggest following the spec in this case.
>> > Any objection?
>> >
>> > thanks, Vladimir
>> >
>> >
>> > ---------- Forwarded message ----------
>> > From: Vladimir Ivanov (JIRA) <ji...@apache.org>
>> > Date: Sep 20, 2006 2:05 PM
>> > Subject: [jira] Created: (HARMONY-1499) [classlib][math]
>> > BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and
>> > ArithmeticException on RI
>> > To: ivavladimir@gmail.com
>> >
>> > [classlib][math] BigDecimal((BigInteger)null, MathContext) throws
>> NPE on
>> > Harmony and ArithmeticException on RI
>> >
>> >
>> --------------------------------------------------------------------------------------------------------------
>>
>> >
>> >                Key: HARMONY-1499
>> >                URL: http://issues.apache.org/jira/browse/HARMONY-1499
>> >            Project: Harmony
>> >         Issue Type: Bug
>> >         Components: Classlib
>> >           Reporter: Vladimir Ivanov
>> >           Priority: Minor
>> >
>> >
>> > The constructors BigDecimal((BigInteger)null, new
>> > MathContext("precision=14
>> > roundingMode=UNNECESSARY")) and
>> > BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) throws
>> NPE
>> > on
>> > Harmony and ArithmeticException on RI.
>> > The spec says for BigDecimal class: "All methods and constructors
>> for this
>> > class throw NullPointerException when passed a null object reference
>> for
>> > any
>> > input parameter" and for the thes constructors: "Throws:
>> > ArithmeticException
>> > - if the result is inexact but the rounding mode is UNNECESSARY."
>> >
>> > Seems, that the RI does not check input for 'null' values. While BEA
>> > throws
>> > NPE in this case and RI behavior contradicts to the spec it may be
>> > 'non-bug
>> > diff'.
>> >
>> > ================== test.java =====================
>> > import java.math.*;
>> >
>> > public class test {
>> >   public static void main(String[] args) {
>> >       try {
>> >            System.out.println("res = " + new
>> BigDecimal((BigInteger)null,
>> > new MathContext("precision=14 roundingMode=DOWN")));
>> >       } catch (Exception e) {
>> >            e.printStackTrace();
>> >       }
>> >       try {
>> >            System.out.println("res = " + new
>> BigDecimal((BigInteger)null,
>> > new MathContext("precision=14 roundingMode=UNNECESSARY")));
>> >       } catch (Exception e) {
>> >            e.printStackTrace();
>> >       }
>> >       try {
>> >            System.out.println("res = " + new
>> BigDecimal((BigInteger)null,
>> > 1, new MathContext("precision=14 roundingMode=UNNECESSARY")));
>> >       } catch (Exception e) {
>> >            e.printStackTrace();
>> >       }
>> >   }
>> > }
>> > ==============================================
>> >
>> > Output:
>> > ---------------------------------------------------
>> > C:\tmp\tmp17>C:\jdk1.5.0_08\bin\java.exe -cp . -showversion test
>> > java version "1.5.0_08"
>> > Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
>> > Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode)
>> >
>> > res = -9.2233720368547E+18
>> > java.lang.ArithmeticException: Rounding necessary
>> >       at java.math.BigDecimal.divide(BigDecimal.java:1346)
>> >       at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
>> >       at java.math.BigDecimal.doRound(BigDecimal.java:3433)
>> >       at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:811)
>> >       at test.main(test.java:11)
>> > java.lang.ArithmeticException: Rounding necessary
>> >       at java.math.BigDecimal.divide(BigDecimal.java:1346)
>> >       at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
>> >       at java.math.BigDecimal.doRound(BigDecimal.java:3433)
>> >       at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:851)
>> >       at test.main(test.java:16)
>> >
>> > ---------------------------------------------------
>> > C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -cp .
>> > -showversion test
>> > java version "1.5.0"
>> > Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
>> > BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32,
>> > R25.0.0-75,
>> > GC: System optimized over throughput (initial strategy singleparpar))
>> >
>> > java.lang.NullPointerException
>> >       at java.math.BigDecimal.doRound(BigDecimal.java:3066)
>> >       at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:751)
>> >       at test.main(test.java:6)
>> > java.lang.NullPointerException
>> >       at java.math.BigDecimal.doRound(BigDecimal.java:3066)
>> >       at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:751)
>> >       at test.main(test.java:11)
>> > java.lang.NullPointerException
>> >       at java.math.BigDecimal.doRound(BigDecimal.java:3066)
>> >       at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:788)
>> >       at test.main(test.java:16)
>> >
>> > ---------------------------------------------------
>> > C:\tmp\tmp17>C:\harmony\classlib1.5\deploy\jdk\jre\bin\java.exe -cp
>> . test
>> > java.lang.NullPointerException
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:384)
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:372)
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:377)
>> >       at test.main(test.java:6)
>> > java.lang.NullPointerException
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:384)
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:372)
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:377)
>> >       at test.main(test.java:11)
>> > java.lang.NullPointerException
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:384)
>> >       at java.math.BigDecimal.<init>(BigDecimal.java:392)
>> >       at test.main(test.java:16)
>> >
>> > ---------------------------------------------------
>> >
>> >
>> C:\tmp\tmp17>C:\harmony\drlvm1.5\build\win_ia32_msvc_debug\deploy\jre\bin\java
>>
>> > -Dvm.assert_dialog=false -cp . -showversion test
>> > Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software
>> > Foundation or its licensors, as applicable.
>> > java version "1.5.0"
>> > pre-alpha : not complete or compatible
>> > svn = r448020, (Sep 20 2006), Windows/ia32/msvc 1310, debug build
>> > http://incubator.apache.org/harmony
>> > java.lang.NullPointerException
>> >       at test.main(test.java:6)
>> > java.lang.NullPointerException
>> >       at test.main(test.java:11)
>> > java.lang.NullPointerException
>> >       at test.main(test.java:16)
>> >
>> >
>> > --
>> > 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
>> >
>> >
>>
>>
>> -- 
>> Tony Wu
>> China Software Development Lab, IBM
>>
>>
> 
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> 
> 

-- 

Tim Ellison (t.p.ellison@gmail.com)
IBM Java technology centre, UK.

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Re: [classlib][math] one more non-bug diff ? ([jira] (HARMONY-1499) BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and ArithmeticException on RI

Posted by Daniel Fridlender <df...@gmail.com>.
On 9/20/06, Tony Wu <wu...@gmail.com> wrote:
> RI disobeys spec because all constructors of BigDecimal do not throw any NPE
> when encounter a null parameter.
> I incline to follow spec and mark this issue as an non-bug difference.

I agree.
We should keep the current behavior of Harmony implementation since it
obeys the spec.

Daniel

>
> On 9/20/06, Vladimir Ivanov <iv...@gmail.com> wrote:
> >
> > As pointed in the HARMONY-1499 constructors BigDecimal((BigInteger)null,
> > new
> > MathContext("precision=14 roundingMode=UNNECESSARY")) and
> > BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) throws NPE
> > on
> > Harmony and ArithmeticException on RI.
> >
> > The spec requires NPE and BEA throws NPE in this case also as Harmony. I
> > suggest following the spec in this case.
> > Any objection?
> >
> > thanks, Vladimir
> >
> >
> > ---------- Forwarded message ----------
> > From: Vladimir Ivanov (JIRA) <ji...@apache.org>
> > Date: Sep 20, 2006 2:05 PM
> > Subject: [jira] Created: (HARMONY-1499) [classlib][math]
> > BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and
> > ArithmeticException on RI
> > To: ivavladimir@gmail.com
> >
> > [classlib][math] BigDecimal((BigInteger)null, MathContext) throws NPE on
> > Harmony and ArithmeticException on RI
> >
> > --------------------------------------------------------------------------------------------------------------
> >
> >                Key: HARMONY-1499
> >                URL: http://issues.apache.org/jira/browse/HARMONY-1499
> >            Project: Harmony
> >         Issue Type: Bug
> >         Components: Classlib
> >           Reporter: Vladimir Ivanov
> >           Priority: Minor
> >
> >
> > The constructors BigDecimal((BigInteger)null, new
> > MathContext("precision=14
> > roundingMode=UNNECESSARY")) and
> > BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) throws NPE
> > on
> > Harmony and ArithmeticException on RI.
> > The spec says for BigDecimal class: "All methods and constructors for this
> > class throw NullPointerException when passed a null object reference for
> > any
> > input parameter" and for the thes constructors: "Throws:
> > ArithmeticException
> > - if the result is inexact but the rounding mode is UNNECESSARY."
> >
> > Seems, that the RI does not check input for 'null' values. While BEA
> > throws
> > NPE in this case and RI behavior contradicts to the spec it may be
> > 'non-bug
> > diff'.
> >
> > ================== test.java =====================
> > import java.math.*;
> >
> > public class test {
> >   public static void main(String[] args) {
> >       try {
> >            System.out.println("res = " + new BigDecimal((BigInteger)null,
> > new MathContext("precision=14 roundingMode=DOWN")));
> >       } catch (Exception e) {
> >            e.printStackTrace();
> >       }
> >       try {
> >            System.out.println("res = " + new BigDecimal((BigInteger)null,
> > new MathContext("precision=14 roundingMode=UNNECESSARY")));
> >       } catch (Exception e) {
> >            e.printStackTrace();
> >       }
> >       try {
> >            System.out.println("res = " + new BigDecimal((BigInteger)null,
> > 1, new MathContext("precision=14 roundingMode=UNNECESSARY")));
> >       } catch (Exception e) {
> >            e.printStackTrace();
> >       }
> >   }
> > }
> > ==============================================
> >
> > Output:
> > ---------------------------------------------------
> > C:\tmp\tmp17>C:\jdk1.5.0_08\bin\java.exe -cp . -showversion test
> > java version "1.5.0_08"
> > Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
> > Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode)
> >
> > res = -9.2233720368547E+18
> > java.lang.ArithmeticException: Rounding necessary
> >       at java.math.BigDecimal.divide(BigDecimal.java:1346)
> >       at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
> >       at java.math.BigDecimal.doRound(BigDecimal.java:3433)
> >       at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
> >       at java.math.BigDecimal.<init>(BigDecimal.java:811)
> >       at test.main(test.java:11)
> > java.lang.ArithmeticException: Rounding necessary
> >       at java.math.BigDecimal.divide(BigDecimal.java:1346)
> >       at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
> >       at java.math.BigDecimal.doRound(BigDecimal.java:3433)
> >       at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
> >       at java.math.BigDecimal.<init>(BigDecimal.java:851)
> >       at test.main(test.java:16)
> >
> > ---------------------------------------------------
> > C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -cp .
> > -showversion test
> > java version "1.5.0"
> > Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> > BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32,
> > R25.0.0-75,
> > GC: System optimized over throughput (initial strategy singleparpar))
> >
> > java.lang.NullPointerException
> >       at java.math.BigDecimal.doRound(BigDecimal.java:3066)
> >       at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
> >       at java.math.BigDecimal.<init>(BigDecimal.java:751)
> >       at test.main(test.java:6)
> > java.lang.NullPointerException
> >       at java.math.BigDecimal.doRound(BigDecimal.java:3066)
> >       at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
> >       at java.math.BigDecimal.<init>(BigDecimal.java:751)
> >       at test.main(test.java:11)
> > java.lang.NullPointerException
> >       at java.math.BigDecimal.doRound(BigDecimal.java:3066)
> >       at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
> >       at java.math.BigDecimal.<init>(BigDecimal.java:788)
> >       at test.main(test.java:16)
> >
> > ---------------------------------------------------
> > C:\tmp\tmp17>C:\harmony\classlib1.5\deploy\jdk\jre\bin\java.exe -cp . test
> > java.lang.NullPointerException
> >       at java.math.BigDecimal.<init>(BigDecimal.java:384)
> >       at java.math.BigDecimal.<init>(BigDecimal.java:372)
> >       at java.math.BigDecimal.<init>(BigDecimal.java:377)
> >       at test.main(test.java:6)
> > java.lang.NullPointerException
> >       at java.math.BigDecimal.<init>(BigDecimal.java:384)
> >       at java.math.BigDecimal.<init>(BigDecimal.java:372)
> >       at java.math.BigDecimal.<init>(BigDecimal.java:377)
> >       at test.main(test.java:11)
> > java.lang.NullPointerException
> >       at java.math.BigDecimal.<init>(BigDecimal.java:384)
> >       at java.math.BigDecimal.<init>(BigDecimal.java:392)
> >       at test.main(test.java:16)
> >
> > ---------------------------------------------------
> >
> > C:\tmp\tmp17>C:\harmony\drlvm1.5\build\win_ia32_msvc_debug\deploy\jre\bin\java
> > -Dvm.assert_dialog=false -cp . -showversion test
> > Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software
> > Foundation or its licensors, as applicable.
> > java version "1.5.0"
> > pre-alpha : not complete or compatible
> > svn = r448020, (Sep 20 2006), Windows/ia32/msvc 1310, debug build
> > http://incubator.apache.org/harmony
> > java.lang.NullPointerException
> >       at test.main(test.java:6)
> > java.lang.NullPointerException
> >       at test.main(test.java:11)
> > java.lang.NullPointerException
> >       at test.main(test.java:16)
> >
> >
> > --
> > 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
> >
> >
>
>
> --
> Tony Wu
> China Software Development Lab, IBM
>
>

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Re: [classlib][math] one more non-bug diff ? ([jira] (HARMONY-1499) BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and ArithmeticException on RI

Posted by Tony Wu <wu...@gmail.com>.
RI disobeys spec because all constructors of BigDecimal do not throw any NPE
when encounter a null parameter.
I incline to follow spec and mark this issue as an non-bug difference.

On 9/20/06, Vladimir Ivanov <iv...@gmail.com> wrote:
>
> As pointed in the HARMONY-1499 constructors BigDecimal((BigInteger)null,
> new
> MathContext("precision=14 roundingMode=UNNECESSARY")) and
> BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) throws NPE
> on
> Harmony and ArithmeticException on RI.
>
> The spec requires NPE and BEA throws NPE in this case also as Harmony. I
> suggest following the spec in this case.
> Any objection?
>
> thanks, Vladimir
>
>
> ---------- Forwarded message ----------
> From: Vladimir Ivanov (JIRA) <ji...@apache.org>
> Date: Sep 20, 2006 2:05 PM
> Subject: [jira] Created: (HARMONY-1499) [classlib][math]
> BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and
> ArithmeticException on RI
> To: ivavladimir@gmail.com
>
> [classlib][math] BigDecimal((BigInteger)null, MathContext) throws NPE on
> Harmony and ArithmeticException on RI
>
> --------------------------------------------------------------------------------------------------------------
>
>                Key: HARMONY-1499
>                URL: http://issues.apache.org/jira/browse/HARMONY-1499
>            Project: Harmony
>         Issue Type: Bug
>         Components: Classlib
>           Reporter: Vladimir Ivanov
>           Priority: Minor
>
>
> The constructors BigDecimal((BigInteger)null, new
> MathContext("precision=14
> roundingMode=UNNECESSARY")) and
> BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) throws NPE
> on
> Harmony and ArithmeticException on RI.
> The spec says for BigDecimal class: "All methods and constructors for this
> class throw NullPointerException when passed a null object reference for
> any
> input parameter" and for the thes constructors: "Throws:
> ArithmeticException
> - if the result is inexact but the rounding mode is UNNECESSARY."
>
> Seems, that the RI does not check input for 'null' values. While BEA
> throws
> NPE in this case and RI behavior contradicts to the spec it may be
> 'non-bug
> diff'.
>
> ================== test.java =====================
> import java.math.*;
>
> public class test {
>   public static void main(String[] args) {
>       try {
>            System.out.println("res = " + new BigDecimal((BigInteger)null,
> new MathContext("precision=14 roundingMode=DOWN")));
>       } catch (Exception e) {
>            e.printStackTrace();
>       }
>       try {
>            System.out.println("res = " + new BigDecimal((BigInteger)null,
> new MathContext("precision=14 roundingMode=UNNECESSARY")));
>       } catch (Exception e) {
>            e.printStackTrace();
>       }
>       try {
>            System.out.println("res = " + new BigDecimal((BigInteger)null,
> 1, new MathContext("precision=14 roundingMode=UNNECESSARY")));
>       } catch (Exception e) {
>            e.printStackTrace();
>       }
>   }
> }
> ==============================================
>
> Output:
> ---------------------------------------------------
> C:\tmp\tmp17>C:\jdk1.5.0_08\bin\java.exe -cp . -showversion test
> java version "1.5.0_08"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
> Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode)
>
> res = -9.2233720368547E+18
> java.lang.ArithmeticException: Rounding necessary
>       at java.math.BigDecimal.divide(BigDecimal.java:1346)
>       at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
>       at java.math.BigDecimal.doRound(BigDecimal.java:3433)
>       at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
>       at java.math.BigDecimal.<init>(BigDecimal.java:811)
>       at test.main(test.java:11)
> java.lang.ArithmeticException: Rounding necessary
>       at java.math.BigDecimal.divide(BigDecimal.java:1346)
>       at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
>       at java.math.BigDecimal.doRound(BigDecimal.java:3433)
>       at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
>       at java.math.BigDecimal.<init>(BigDecimal.java:851)
>       at test.main(test.java:16)
>
> ---------------------------------------------------
> C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -cp .
> -showversion test
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32,
> R25.0.0-75,
> GC: System optimized over throughput (initial strategy singleparpar))
>
> java.lang.NullPointerException
>       at java.math.BigDecimal.doRound(BigDecimal.java:3066)
>       at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
>       at java.math.BigDecimal.<init>(BigDecimal.java:751)
>       at test.main(test.java:6)
> java.lang.NullPointerException
>       at java.math.BigDecimal.doRound(BigDecimal.java:3066)
>       at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
>       at java.math.BigDecimal.<init>(BigDecimal.java:751)
>       at test.main(test.java:11)
> java.lang.NullPointerException
>       at java.math.BigDecimal.doRound(BigDecimal.java:3066)
>       at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
>       at java.math.BigDecimal.<init>(BigDecimal.java:788)
>       at test.main(test.java:16)
>
> ---------------------------------------------------
> C:\tmp\tmp17>C:\harmony\classlib1.5\deploy\jdk\jre\bin\java.exe -cp . test
> java.lang.NullPointerException
>       at java.math.BigDecimal.<init>(BigDecimal.java:384)
>       at java.math.BigDecimal.<init>(BigDecimal.java:372)
>       at java.math.BigDecimal.<init>(BigDecimal.java:377)
>       at test.main(test.java:6)
> java.lang.NullPointerException
>       at java.math.BigDecimal.<init>(BigDecimal.java:384)
>       at java.math.BigDecimal.<init>(BigDecimal.java:372)
>       at java.math.BigDecimal.<init>(BigDecimal.java:377)
>       at test.main(test.java:11)
> java.lang.NullPointerException
>       at java.math.BigDecimal.<init>(BigDecimal.java:384)
>       at java.math.BigDecimal.<init>(BigDecimal.java:392)
>       at test.main(test.java:16)
>
> ---------------------------------------------------
>
> C:\tmp\tmp17>C:\harmony\drlvm1.5\build\win_ia32_msvc_debug\deploy\jre\bin\java
> -Dvm.assert_dialog=false -cp . -showversion test
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software
> Foundation or its licensors, as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r448020, (Sep 20 2006), Windows/ia32/msvc 1310, debug build
> http://incubator.apache.org/harmony
> java.lang.NullPointerException
>       at test.main(test.java:6)
> java.lang.NullPointerException
>       at test.main(test.java:11)
> java.lang.NullPointerException
>       at test.main(test.java:16)
>
>
> --
> 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
>
>


-- 
Tony Wu
China Software Development Lab, IBM