You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by Alexey Varlamov <al...@gmail.com> on 2006/12/06 03:15:03 UTC
Re: [classlib][compatibility] Do we need to use assert like RI (Re: [jira] Created: (HARMONY-2420) [luni] java.util.prefs.AbstractPreferences.exportNode(OutputStream) and java.util.prefs.AbstractPreferences.exportSubtree(OutputStream) throws Assertio
Paulex,
What I read in the bug description, this is our impl which throws
AssertionError, seemingly regardless of assertion status ?
In general I agree, we need not strive to be assrtion-compatible.
--
Alexey
2006/12/5, Paulex Yang <pa...@gmail.com>:
> This incompatibility is obviously caused by RI's assert usage, whether
> or not we need to be "assert compatible" with RI? assert on/off in Java
> is runtime decided, so that it's still possible that user application
> run JRE in assert enable mode. And if we do want to "assert compatible",
> we need to run our test suites in both mode.
>
> IMHO, "assert compatibility" is not necessary, because it is not likely
> to cause user application fail, it seems crazy to expect assert error in
> the application logic. And I don't believe there are JCK test cases
> against assert, but I'm open to other's comments.
>
> Artem Aliev (JIRA) wrote:
> > [luni] java.util.prefs.AbstractPreferences.exportNode(OutputStream) and
> java.util.prefs.AbstractPreferences.exportSubtree(OutputStream) throws
> AssertionError instead of NPE in a case when OutputStream is null
> >
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> >
> > Key: HARMONY-2420
> > URL: http://issues.apache.org/jira/browse/HARMONY-2420
> > Project: Harmony
> > Issue Type: Bug
> > Components: Classlib
> > Reporter: Artem Aliev
> > Priority: Minor
> >
> >
> > exportNode(OutputStream) and exportSubtree(OutputStream) throws
> > AssertionError not NullPointerException in a case when OutputStream is
> null.
> >
> > Test to reproduce:
> > import junit.framework.TestCase;
> >
> > import java.io.IOException;
> > import java.util.prefs.*;
> >
> > class AbstractPreferencesImpl extends AbstractPreferences{
> >
> > protected AbstractPreferencesImpl(AbstractPreferences arg0, String
> > arg1) {
> > super(arg0, arg1);
> > }
> >
> > protected AbstractPreferences childSpi(String arg0) {
> > return null;
> > }
> >
> > protected String[] childrenNamesSpi() throws BackingStoreException
> {
> > return null;
> > }
> >
> > protected void flushSpi() throws BackingStoreException {
> > }
> >
> > protected String getSpi(String arg0) {
> > return null;
> > }
> >
> > protected String[] keysSpi() throws BackingStoreException {
> > return null;
> > }
> >
> > protected void putSpi(String arg0, String arg1) {
> > }
> >
> > protected void removeNodeSpi() throws BackingStoreException {
> > }
> >
> > protected void removeSpi(String arg0) {
> > }
> >
> > protected void syncSpi() throws BackingStoreException {
> > }
> > }
> >
> > public class Test extends TestCase {
> >
> > public void testcase() {
> > AbstractPreferences ap = new AbstractPreferencesImpl(null,
> "");
> > boolean res1 = false, res2 = false;
> > try {
> > ap.exportNode(null);
> > } catch (IOException e) {
> > e.printStackTrace();
> > } catch (BackingStoreException e) {
> > e.printStackTrace();
> > }catch (NullPointerException e) {
> > e.printStackTrace();
> > System.out.println("Got Expected
> > NullPointerException");
> > } catch (AssertionError ae) {
> > ae.printStackTrace();
> > res1 = true;
> > System.out.println("Got Unexpected
> AssertionError");
> > }
> > try {
> > ap.exportSubtree(null);
> > } catch (IOException e) {
> > e.printStackTrace();
> > } catch (BackingStoreException e) {
> > e.printStackTrace();
> > }catch (NullPointerException e) {
> > e.printStackTrace();
> > System.out.println("Got Expected
> > NullPointerException");
> > } catch (AssertionError ae) {
> > ae.printStackTrace();
> > res2 = true;
> > System.out.println("Got Unexpected
> AssertionError");
> > }
> > if (res1 || res2) {
> > fail();
> > }
> > }
> > }
> >
> > Output on Harmony:
> > 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 = rsvn: '.' is not a working copy, (Sep 20 2006), Windows/ia32/msvc
> 1310,
> > release build
> > http://incubator.apache.org/harmony
> >
> > .java.lang.AssertionError: Stream is null
> > at
> >
> java.util.prefs.AbstractPreferences.exportNode(AbstractPreferences.java:373)
> > at Test.testcase(Test.java:50)
> > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> > at java.lang.reflect.Method.invoke(Unknown Source)
> > at junit.framework.TestCase.runTest(TestCase.java:154)
> > at junit.framework.TestCase.runBare(TestCase.java:127)
> > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > at junit.framework.TestResult.runProtected(TestResult.java:124)
> > at junit.framework.TestResult.run(TestResult.java:109)
> > at junit.framework.TestCase.run(TestCase.java:118)
> > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > at junit.framework.TestSuite.run(TestSuite.java:203)
> > at junit.textui.TestRunner.doRun(TestRunner.java:115)
> > at junit.textui.TestRunner.start(TestRunner.java:172)
> > at junit.textui.TestRunner.main(TestRunner.java:138)
> > Got Unexpected AssertionError
> > java.lang.AssertionError: Stream is null
> > at
> >
> java.util.prefs.AbstractPreferences.exportSubtree(AbstractPreferences.java:388)
> > at Test.testcase(Test.java:64)
> > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> > at java.lang.reflect.Method.invoke(Unknown Source)
> > at junit.framework.TestCase.runTest(TestCase.java:154)
> > at junit.framework.TestCase.runBare(TestCase.java:127)
> > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > at junit.framework.TestResult.runProtected(TestResult.java:124)
> > at junit.framework.TestResult.run(TestResult.java:109)
> > at junit.framework.TestCase.run(TestCase.java:118)
> > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > at junit.framework.TestSuite.run(TestSuite.java:203)
> > at junit.textui.TestRunner.doRun(TestRunner.java:115)
> > at junit.textui.TestRunner.start(TestRunner.java:172)
> > at junit.textui.TestRunner.main(TestRunner.java:138)
> > Got Unexpected AssertionError
> > F
> > Time: 0.125
> > There was 1 failure:
> > 1) testcase(Test)junit.framework.AssertionFailedError
> > at Test.testcase(Test.java:78)
> > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> >
> > FAILURES!!!
> > Tests run: 1, Failures: 1, Errors: 0
> >
> > res = 1
> >
> >
> > Output on RI:
> > java version "1.5.0_06"
> > Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
> > Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)
> > .java.lang.NullPointerException
> > at
> java.util.prefs.XmlSupport.putPreferencesInXml(XmlSupport.java:140)
> > at java.util.prefs.XmlSupport.export(XmlSupport.java:104)
> > at
> >
> java.util.prefs.AbstractPreferences.exportNode(AbstractPreferences.java:1575)
> > at Test.testcase(Test.java:50)
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > at java.lang.reflect.Method.invoke(Method.java:585)
> > at junit.framework.TestCase.runTest(TestCase.java:154)
> > at junit.framework.TestCase.runBare(TestCase.java:127)
> > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > at junit.framework.TestResult.runProtected(TestResult.java:124)
> > at junit.framework.TestResult.run(TestResult.java:109)
> > at junit.framework.TestCase.run(TestCase.java:118)
> > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > at junit.framework.TestSuite.run(TestSuite.java:203)
> > at junit.textui.TestRunner.doRun(TestRunner.java:116)
> > at junit.textui.TestRunner.start(TestRunner.java:172)
> > at junit.textui.TestRunner.main(TestRunner.java:138)
> > Got Expected NullPointerException
> > java.lang.NullPointerException
> > at
> java.util.prefs.XmlSupport.putPreferencesInXml(XmlSupport.java:140)
> > at java.util.prefs.XmlSupport.export(XmlSupport.java:104)
> > at
> >
> java.util.prefs.AbstractPreferences.exportSubtree(AbstractPreferences.java:1591)
> > at Test.testcase(Test.java:64)
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > at java.lang.reflect.Method.invoke(Method.java:585)
> > at junit.framework.TestCase.runTest(TestCase.java:154)
> > at junit.framework.TestCase.runBare(TestCase.java:127)
> > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > at junit.framework.TestResult.runProtected(TestResult.java:124)
> > at junit.framework.TestResult.run(TestResult.java:109)
> > at junit.framework.TestCase.run(TestCase.java:118)
> > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > at junit.framework.TestSuite.run(TestSuite.java:203)
> > at junit.textui.TestRunner.doRun(TestRunner.java:116)
> > at junit.textui.TestRunner.start(TestRunner.java:172)
> > at junit.textui.TestRunner.main(TestRunner.java:138)
> > Got Expected NullPointerException
> >
> > Time: 0.078
> >
> > OK (1 test)
> >
> > res = 0
> >
> >
> >
>
>
> --
> Paulex Yang
> China Software Development Lab
> IBM
>
>
>
Re: [classlib][compatibility] Do we need to use assert like RI (Re:
[jira] Created: (HARMONY-2420) [luni] java.util.prefs.AbstractPreferences.exportNode(OutputStream)
and java.util.prefs.AbstractPreferences.exportSubtree(OutputStream) throws
Assertio
Posted by Paulex Yang <pa...@gmail.com>.
Alexey Varlamov wrote:
> Paulex,
>
> What I read in the bug description, this is our impl which throws
> AssertionError, seemingly regardless of assertion status ?
D'oh...I'm sorry that I thought it was RI that throw
AssertionError(obviously I needed some coffee at that time), just had a
look at Harmony's implementation[1], yes it should be fixed...
[1]
if(ostream == null) {
// prefs.5=Stream is null
throw new AssertionError(Messages.getString("prefs.5"));
//$NON-NLS-1$
}
>
> In general I agree, we need not strive to be assrtion-compatible.
>
> --
> Alexey
>
> 2006/12/5, Paulex Yang <pa...@gmail.com>:
>> This incompatibility is obviously caused by RI's assert usage, whether
>> or not we need to be "assert compatible" with RI? assert on/off in Java
>> is runtime decided, so that it's still possible that user application
>> run JRE in assert enable mode. And if we do want to "assert compatible",
>> we need to run our test suites in both mode.
>>
>> IMHO, "assert compatibility" is not necessary, because it is not likely
>> to cause user application fail, it seems crazy to expect assert error in
>> the application logic. And I don't believe there are JCK test cases
>> against assert, but I'm open to other's comments.
>>
>> Artem Aliev (JIRA) wrote:
>> > [luni]
>> java.util.prefs.AbstractPreferences.exportNode(OutputStream) and
>> java.util.prefs.AbstractPreferences.exportSubtree(OutputStream) throws
>> AssertionError instead of NPE in a case when OutputStream is null
>> >
>> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> >
>> > Key: HARMONY-2420
>> > URL:
>> http://issues.apache.org/jira/browse/HARMONY-2420
>> > Project: Harmony
>> > Issue Type: Bug
>> > Components: Classlib
>> > Reporter: Artem Aliev
>> > Priority: Minor
>> >
>> >
>> > exportNode(OutputStream) and exportSubtree(OutputStream) throws
>> > AssertionError not NullPointerException in a case when OutputStream is
>> null.
>> >
>> > Test to reproduce:
>> > import junit.framework.TestCase;
>> >
>> > import java.io.IOException;
>> > import java.util.prefs.*;
>> >
>> > class AbstractPreferencesImpl extends AbstractPreferences{
>> >
>> > protected AbstractPreferencesImpl(AbstractPreferences arg0,
>> String
>> > arg1) {
>> > super(arg0, arg1);
>> > }
>> >
>> > protected AbstractPreferences childSpi(String arg0) {
>> > return null;
>> > }
>> >
>> > protected String[] childrenNamesSpi() throws
>> BackingStoreException
>> {
>> > return null;
>> > }
>> >
>> > protected void flushSpi() throws BackingStoreException {
>> > }
>> >
>> > protected String getSpi(String arg0) {
>> > return null;
>> > }
>> >
>> > protected String[] keysSpi() throws BackingStoreException {
>> > return null;
>> > }
>> >
>> > protected void putSpi(String arg0, String arg1) {
>> > }
>> >
>> > protected void removeNodeSpi() throws BackingStoreException {
>> > }
>> >
>> > protected void removeSpi(String arg0) {
>> > }
>> >
>> > protected void syncSpi() throws BackingStoreException {
>> > }
>> > }
>> >
>> > public class Test extends TestCase {
>> >
>> > public void testcase() {
>> > AbstractPreferences ap = new
>> AbstractPreferencesImpl(null,
>> "");
>> > boolean res1 = false, res2 = false;
>> > try {
>> > ap.exportNode(null);
>> > } catch (IOException e) {
>> > e.printStackTrace();
>> > } catch (BackingStoreException e) {
>> > e.printStackTrace();
>> > }catch (NullPointerException e) {
>> > e.printStackTrace();
>> > System.out.println("Got Expected
>> > NullPointerException");
>> > } catch (AssertionError ae) {
>> > ae.printStackTrace();
>> > res1 = true;
>> > System.out.println("Got Unexpected
>> AssertionError");
>> > }
>> > try {
>> > ap.exportSubtree(null);
>> > } catch (IOException e) {
>> > e.printStackTrace();
>> > } catch (BackingStoreException e) {
>> > e.printStackTrace();
>> > }catch (NullPointerException e) {
>> > e.printStackTrace();
>> > System.out.println("Got Expected
>> > NullPointerException");
>> > } catch (AssertionError ae) {
>> > ae.printStackTrace();
>> > res2 = true;
>> > System.out.println("Got Unexpected
>> AssertionError");
>> > }
>> > if (res1 || res2) {
>> > fail();
>> > }
>> > }
>> > }
>> >
>> > Output on Harmony:
>> > 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 = rsvn: '.' is not a working copy, (Sep 20 2006),
>> Windows/ia32/msvc
>> 1310,
>> > release build
>> > http://incubator.apache.org/harmony
>> >
>> > .java.lang.AssertionError: Stream is null
>> > at
>> >
>> java.util.prefs.AbstractPreferences.exportNode(AbstractPreferences.java:373)
>>
>> > at Test.testcase(Test.java:50)
>> > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
>> > at java.lang.reflect.Method.invoke(Unknown Source)
>> > at junit.framework.TestCase.runTest(TestCase.java:154)
>> > at junit.framework.TestCase.runBare(TestCase.java:127)
>> > at junit.framework.TestResult$1.protect(TestResult.java:106)
>> > at
>> junit.framework.TestResult.runProtected(TestResult.java:124)
>> > at junit.framework.TestResult.run(TestResult.java:109)
>> > at junit.framework.TestCase.run(TestCase.java:118)
>> > at junit.framework.TestSuite.runTest(TestSuite.java:208)
>> > at junit.framework.TestSuite.run(TestSuite.java:203)
>> > at junit.textui.TestRunner.doRun(TestRunner.java:115)
>> > at junit.textui.TestRunner.start(TestRunner.java:172)
>> > at junit.textui.TestRunner.main(TestRunner.java:138)
>> > Got Unexpected AssertionError
>> > java.lang.AssertionError: Stream is null
>> > at
>> >
>> java.util.prefs.AbstractPreferences.exportSubtree(AbstractPreferences.java:388)
>>
>> > at Test.testcase(Test.java:64)
>> > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
>> > at java.lang.reflect.Method.invoke(Unknown Source)
>> > at junit.framework.TestCase.runTest(TestCase.java:154)
>> > at junit.framework.TestCase.runBare(TestCase.java:127)
>> > at junit.framework.TestResult$1.protect(TestResult.java:106)
>> > at
>> junit.framework.TestResult.runProtected(TestResult.java:124)
>> > at junit.framework.TestResult.run(TestResult.java:109)
>> > at junit.framework.TestCase.run(TestCase.java:118)
>> > at junit.framework.TestSuite.runTest(TestSuite.java:208)
>> > at junit.framework.TestSuite.run(TestSuite.java:203)
>> > at junit.textui.TestRunner.doRun(TestRunner.java:115)
>> > at junit.textui.TestRunner.start(TestRunner.java:172)
>> > at junit.textui.TestRunner.main(TestRunner.java:138)
>> > Got Unexpected AssertionError
>> > F
>> > Time: 0.125
>> > There was 1 failure:
>> > 1) testcase(Test)junit.framework.AssertionFailedError
>> > at Test.testcase(Test.java:78)
>> > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
>> >
>> > FAILURES!!!
>> > Tests run: 1, Failures: 1, Errors: 0
>> >
>> > res = 1
>> >
>> >
>> > Output on RI:
>> > java version "1.5.0_06"
>> > Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
>> > Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)
>> > .java.lang.NullPointerException
>> > at
>> java.util.prefs.XmlSupport.putPreferencesInXml(XmlSupport.java:140)
>> > at java.util.prefs.XmlSupport.export(XmlSupport.java:104)
>> > at
>> >
>> java.util.prefs.AbstractPreferences.exportNode(AbstractPreferences.java:1575)
>>
>> > at Test.testcase(Test.java:50)
>> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> > at
>> >
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>
>> > at
>> >
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>
>> > at java.lang.reflect.Method.invoke(Method.java:585)
>> > at junit.framework.TestCase.runTest(TestCase.java:154)
>> > at junit.framework.TestCase.runBare(TestCase.java:127)
>> > at junit.framework.TestResult$1.protect(TestResult.java:106)
>> > at
>> junit.framework.TestResult.runProtected(TestResult.java:124)
>> > at junit.framework.TestResult.run(TestResult.java:109)
>> > at junit.framework.TestCase.run(TestCase.java:118)
>> > at junit.framework.TestSuite.runTest(TestSuite.java:208)
>> > at junit.framework.TestSuite.run(TestSuite.java:203)
>> > at junit.textui.TestRunner.doRun(TestRunner.java:116)
>> > at junit.textui.TestRunner.start(TestRunner.java:172)
>> > at junit.textui.TestRunner.main(TestRunner.java:138)
>> > Got Expected NullPointerException
>> > java.lang.NullPointerException
>> > at
>> java.util.prefs.XmlSupport.putPreferencesInXml(XmlSupport.java:140)
>> > at java.util.prefs.XmlSupport.export(XmlSupport.java:104)
>> > at
>> >
>> java.util.prefs.AbstractPreferences.exportSubtree(AbstractPreferences.java:1591)
>>
>> > at Test.testcase(Test.java:64)
>> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> > at
>> >
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>
>> > at
>> >
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>
>> > at java.lang.reflect.Method.invoke(Method.java:585)
>> > at junit.framework.TestCase.runTest(TestCase.java:154)
>> > at junit.framework.TestCase.runBare(TestCase.java:127)
>> > at junit.framework.TestResult$1.protect(TestResult.java:106)
>> > at
>> junit.framework.TestResult.runProtected(TestResult.java:124)
>> > at junit.framework.TestResult.run(TestResult.java:109)
>> > at junit.framework.TestCase.run(TestCase.java:118)
>> > at junit.framework.TestSuite.runTest(TestSuite.java:208)
>> > at junit.framework.TestSuite.run(TestSuite.java:203)
>> > at junit.textui.TestRunner.doRun(TestRunner.java:116)
>> > at junit.textui.TestRunner.start(TestRunner.java:172)
>> > at junit.textui.TestRunner.main(TestRunner.java:138)
>> > Got Expected NullPointerException
>> >
>> > Time: 0.078
>> >
>> > OK (1 test)
>> >
>> > res = 0
>> >
>> >
>> >
>>
>>
>> --
>> Paulex Yang
>> China Software Development Lab
>> IBM
>>
>>
>>
>
--
Paulex Yang
China Software Development Lab
IBM
Re: [classlib][compatibility] Do we need to use assert like RI (Re: [jira] Created: (HARMONY-2420) [luni] java.util.prefs.AbstractPreferences.exportNode(OutputStream) and java.util.prefs.AbstractPreferences.exportSubtree(OutputStream) throws Assertio
Posted by Nathan Beyer <nb...@gmail.com>.
Yep. This looks like a higher issue though; exportNode and
exportSubtree are public APIs. You don't assert the state of
parameters of a public API.
-Nathan
On 12/5/06, Alexey Varlamov <al...@gmail.com> wrote:
> Yes, unless this is a compatibility issue of thrown exception type.
>
> 2006/12/6, Nathan Beyer <nb...@gmail.com>:
> > Throwing an AssertionError without an assert statement is fine and
> > actually suggested practice (at least according to the SCJP
> > guidelines), as long as it's a proper assertion scenario.
> >
> > -Nathan
> >
> > On 12/5/06, Alexey Varlamov <al...@gmail.com> wrote:
> > > Paulex,
> > >
> > > What I read in the bug description, this is our impl which throws
> > > AssertionError, seemingly regardless of assertion status ?
> > >
> > > In general I agree, we need not strive to be assrtion-compatible.
> > >
> > > --
> > > Alexey
> > >
> > > 2006/12/5, Paulex Yang <pa...@gmail.com>:
> > > > This incompatibility is obviously caused by RI's assert usage, whether
> > > > or not we need to be "assert compatible" with RI? assert on/off in Java
> > > > is runtime decided, so that it's still possible that user application
> > > > run JRE in assert enable mode. And if we do want to "assert compatible",
> > > > we need to run our test suites in both mode.
> > > >
> > > > IMHO, "assert compatibility" is not necessary, because it is not likely
> > > > to cause user application fail, it seems crazy to expect assert error in
> > > > the application logic. And I don't believe there are JCK test cases
> > > > against assert, but I'm open to other's comments.
> > > >
> > > > Artem Aliev (JIRA) wrote:
> > > > > [luni] java.util.prefs.AbstractPreferences.exportNode(OutputStream)
> > and
> > > > java.util.prefs.AbstractPreferences.exportSubtree(OutputStream) throws
> > > > AssertionError instead of NPE in a case when OutputStream is null
> > > > >
> > > >
> > ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> > > > >
> > > > > Key: HARMONY-2420
> > > > > URL:
> > http://issues.apache.org/jira/browse/HARMONY-2420
> > > > > Project: Harmony
> > > > > Issue Type: Bug
> > > > > Components: Classlib
> > > > > Reporter: Artem Aliev
> > > > > Priority: Minor
> > > > >
> > > > >
> > > > > exportNode(OutputStream) and exportSubtree(OutputStream) throws
> > > > > AssertionError not NullPointerException in a case when OutputStream is
> > > > null.
> > > > >
> > > > > Test to reproduce:
> > > > > import junit.framework.TestCase;
> > > > >
> > > > > import java.io.IOException;
> > > > > import java.util.prefs.*;
> > > > >
> > > > > class AbstractPreferencesImpl extends AbstractPreferences{
> > > > >
> > > > > protected AbstractPreferencesImpl(AbstractPreferences arg0,
> > String
> > > > > arg1) {
> > > > > super(arg0, arg1);
> > > > > }
> > > > >
> > > > > protected AbstractPreferences childSpi(String arg0) {
> > > > > return null;
> > > > > }
> > > > >
> > > > > protected String[] childrenNamesSpi() throws
> > BackingStoreException
> > > > {
> > > > > return null;
> > > > > }
> > > > >
> > > > > protected void flushSpi() throws BackingStoreException {
> > > > > }
> > > > >
> > > > > protected String getSpi(String arg0) {
> > > > > return null;
> > > > > }
> > > > >
> > > > > protected String[] keysSpi() throws BackingStoreException {
> > > > > return null;
> > > > > }
> > > > >
> > > > > protected void putSpi(String arg0, String arg1) {
> > > > > }
> > > > >
> > > > > protected void removeNodeSpi() throws BackingStoreException {
> > > > > }
> > > > >
> > > > > protected void removeSpi(String arg0) {
> > > > > }
> > > > >
> > > > > protected void syncSpi() throws BackingStoreException {
> > > > > }
> > > > > }
> > > > >
> > > > > public class Test extends TestCase {
> > > > >
> > > > > public void testcase() {
> > > > > AbstractPreferences ap = new
> > AbstractPreferencesImpl(null,
> > > > "");
> > > > > boolean res1 = false, res2 = false;
> > > > > try {
> > > > > ap.exportNode(null);
> > > > > } catch (IOException e) {
> > > > > e.printStackTrace();
> > > > > } catch (BackingStoreException e) {
> > > > > e.printStackTrace();
> > > > > }catch (NullPointerException e) {
> > > > > e.printStackTrace();
> > > > > System.out.println("Got Expected
> > > > > NullPointerException");
> > > > > } catch (AssertionError ae) {
> > > > > ae.printStackTrace();
> > > > > res1 = true;
> > > > > System.out.println("Got Unexpected
> > > > AssertionError");
> > > > > }
> > > > > try {
> > > > > ap.exportSubtree(null);
> > > > > } catch (IOException e) {
> > > > > e.printStackTrace();
> > > > > } catch (BackingStoreException e) {
> > > > > e.printStackTrace();
> > > > > }catch (NullPointerException e) {
> > > > > e.printStackTrace();
> > > > > System.out.println("Got Expected
> > > > > NullPointerException");
> > > > > } catch (AssertionError ae) {
> > > > > ae.printStackTrace();
> > > > > res2 = true;
> > > > > System.out.println("Got Unexpected
> > > > AssertionError");
> > > > > }
> > > > > if (res1 || res2) {
> > > > > fail();
> > > > > }
> > > > > }
> > > > > }
> > > > >
> > > > > Output on Harmony:
> > > > > 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 = rsvn: '.' is not a working copy, (Sep 20 2006),
> > Windows/ia32/msvc
> > > > 1310,
> > > > > release build
> > > > > http://incubator.apache.org/harmony
> > > > >
> > > > > .java.lang.AssertionError: Stream is null
> > > > > at
> > > > >
> > > >
> > java.util.prefs.AbstractPreferences.exportNode(AbstractPreferences.java:373)
> > > > > at Test.testcase(Test.java:50)
> > > > > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> > > > > at java.lang.reflect.Method.invoke(Unknown Source)
> > > > > at junit.framework.TestCase.runTest(TestCase.java:154)
> > > > > at junit.framework.TestCase.runBare(TestCase.java:127)
> > > > > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > > > > at
> > junit.framework.TestResult.runProtected(TestResult.java:124)
> > > > > at junit.framework.TestResult.run(TestResult.java:109)
> > > > > at junit.framework.TestCase.run(TestCase.java:118)
> > > > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > > > at junit.framework.TestSuite.run(TestSuite.java:203)
> > > > > at junit.textui.TestRunner.doRun(TestRunner.java:115)
> > > > > at junit.textui.TestRunner.start(TestRunner.java:172)
> > > > > at junit.textui.TestRunner.main(TestRunner.java:138)
> > > > > Got Unexpected AssertionError
> > > > > java.lang.AssertionError: Stream is null
> > > > > at
> > > > >
> > > >
> > java.util.prefs.AbstractPreferences.exportSubtree(AbstractPreferences.java:388)
> > > > > at Test.testcase(Test.java:64)
> > > > > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> > > > > at java.lang.reflect.Method.invoke(Unknown Source)
> > > > > at junit.framework.TestCase.runTest(TestCase.java:154)
> > > > > at junit.framework.TestCase.runBare(TestCase.java:127)
> > > > > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > > > > at
> > junit.framework.TestResult.runProtected(TestResult.java:124)
> > > > > at junit.framework.TestResult.run(TestResult.java:109)
> > > > > at junit.framework.TestCase.run(TestCase.java:118)
> > > > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > > > at junit.framework.TestSuite.run(TestSuite.java:203)
> > > > > at junit.textui.TestRunner.doRun(TestRunner.java:115)
> > > > > at junit.textui.TestRunner.start(TestRunner.java:172)
> > > > > at junit.textui.TestRunner.main(TestRunner.java:138)
> > > > > Got Unexpected AssertionError
> > > > > F
> > > > > Time: 0.125
> > > > > There was 1 failure:
> > > > > 1) testcase(Test)junit.framework.AssertionFailedError
> > > > > at Test.testcase(Test.java:78)
> > > > > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> > > > >
> > > > > FAILURES!!!
> > > > > Tests run: 1, Failures: 1, Errors: 0
> > > > >
> > > > > res = 1
> > > > >
> > > > >
> > > > > Output on RI:
> > > > > java version "1.5.0_06"
> > > > > Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
> > > > > Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)
> > > > > .java.lang.NullPointerException
> > > > > at
> > > > java.util.prefs.XmlSupport.putPreferencesInXml(XmlSupport.java:140)
> > > > > at java.util.prefs.XmlSupport.export(XmlSupport.java:104)
> > > > > at
> > > > >
> > > >
> > java.util.prefs.AbstractPreferences.exportNode(AbstractPreferences.java:1575)
> > > > > at Test.testcase(Test.java:50)
> > > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > > > > at
> > > > >
> > > >
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > > > > at
> > > > >
> > > >
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > > > > at java.lang.reflect.Method.invoke(Method.java:585)
> > > > > at junit.framework.TestCase.runTest(TestCase.java:154)
> > > > > at junit.framework.TestCase.runBare(TestCase.java:127)
> > > > > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > > > > at
> > junit.framework.TestResult.runProtected(TestResult.java:124)
> > > > > at junit.framework.TestResult.run(TestResult.java:109)
> > > > > at junit.framework.TestCase.run(TestCase.java:118)
> > > > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > > > at junit.framework.TestSuite.run(TestSuite.java:203)
> > > > > at junit.textui.TestRunner.doRun(TestRunner.java:116)
> > > > > at junit.textui.TestRunner.start(TestRunner.java:172)
> > > > > at junit.textui.TestRunner.main(TestRunner.java:138)
> > > > > Got Expected NullPointerException
> > > > > java.lang.NullPointerException
> > > > > at
> > > > java.util.prefs.XmlSupport.putPreferencesInXml(XmlSupport.java:140)
> > > > > at java.util.prefs.XmlSupport.export(XmlSupport.java:104)
> > > > > at
> > > > >
> > > >
> > java.util.prefs.AbstractPreferences.exportSubtree(AbstractPreferences.java:1591)
> > > > > at Test.testcase(Test.java:64)
> > > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > > > > at
> > > > >
> > > >
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > > > > at
> > > > >
> > > >
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > > > > at java.lang.reflect.Method.invoke(Method.java:585)
> > > > > at junit.framework.TestCase.runTest(TestCase.java:154)
> > > > > at junit.framework.TestCase.runBare(TestCase.java:127)
> > > > > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > > > > at
> > junit.framework.TestResult.runProtected(TestResult.java:124)
> > > > > at junit.framework.TestResult.run(TestResult.java:109)
> > > > > at junit.framework.TestCase.run(TestCase.java:118)
> > > > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > > > at junit.framework.TestSuite.run(TestSuite.java:203)
> > > > > at junit.textui.TestRunner.doRun(TestRunner.java:116)
> > > > > at junit.textui.TestRunner.start(TestRunner.java:172)
> > > > > at junit.textui.TestRunner.main(TestRunner.java:138)
> > > > > Got Expected NullPointerException
> > > > >
> > > > > Time: 0.078
> > > > >
> > > > > OK (1 test)
> > > > >
> > > > > res = 0
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Paulex Yang
> > > > China Software Development Lab
> > > > IBM
> > > >
> > > >
> > > >
> > >
> >
>
Re: [classlib][compatibility] Do we need to use assert like RI (Re: [jira] Created: (HARMONY-2420) [luni] java.util.prefs.AbstractPreferences.exportNode(OutputStream) and java.util.prefs.AbstractPreferences.exportSubtree(OutputStream) throws Assertio
Posted by Alexey Varlamov <al...@gmail.com>.
Yes, unless this is a compatibility issue of thrown exception type.
2006/12/6, Nathan Beyer <nb...@gmail.com>:
> Throwing an AssertionError without an assert statement is fine and
> actually suggested practice (at least according to the SCJP
> guidelines), as long as it's a proper assertion scenario.
>
> -Nathan
>
> On 12/5/06, Alexey Varlamov <al...@gmail.com> wrote:
> > Paulex,
> >
> > What I read in the bug description, this is our impl which throws
> > AssertionError, seemingly regardless of assertion status ?
> >
> > In general I agree, we need not strive to be assrtion-compatible.
> >
> > --
> > Alexey
> >
> > 2006/12/5, Paulex Yang <pa...@gmail.com>:
> > > This incompatibility is obviously caused by RI's assert usage, whether
> > > or not we need to be "assert compatible" with RI? assert on/off in Java
> > > is runtime decided, so that it's still possible that user application
> > > run JRE in assert enable mode. And if we do want to "assert compatible",
> > > we need to run our test suites in both mode.
> > >
> > > IMHO, "assert compatibility" is not necessary, because it is not likely
> > > to cause user application fail, it seems crazy to expect assert error in
> > > the application logic. And I don't believe there are JCK test cases
> > > against assert, but I'm open to other's comments.
> > >
> > > Artem Aliev (JIRA) wrote:
> > > > [luni] java.util.prefs.AbstractPreferences.exportNode(OutputStream)
> and
> > > java.util.prefs.AbstractPreferences.exportSubtree(OutputStream) throws
> > > AssertionError instead of NPE in a case when OutputStream is null
> > > >
> > >
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> > > >
> > > > Key: HARMONY-2420
> > > > URL:
> http://issues.apache.org/jira/browse/HARMONY-2420
> > > > Project: Harmony
> > > > Issue Type: Bug
> > > > Components: Classlib
> > > > Reporter: Artem Aliev
> > > > Priority: Minor
> > > >
> > > >
> > > > exportNode(OutputStream) and exportSubtree(OutputStream) throws
> > > > AssertionError not NullPointerException in a case when OutputStream is
> > > null.
> > > >
> > > > Test to reproduce:
> > > > import junit.framework.TestCase;
> > > >
> > > > import java.io.IOException;
> > > > import java.util.prefs.*;
> > > >
> > > > class AbstractPreferencesImpl extends AbstractPreferences{
> > > >
> > > > protected AbstractPreferencesImpl(AbstractPreferences arg0,
> String
> > > > arg1) {
> > > > super(arg0, arg1);
> > > > }
> > > >
> > > > protected AbstractPreferences childSpi(String arg0) {
> > > > return null;
> > > > }
> > > >
> > > > protected String[] childrenNamesSpi() throws
> BackingStoreException
> > > {
> > > > return null;
> > > > }
> > > >
> > > > protected void flushSpi() throws BackingStoreException {
> > > > }
> > > >
> > > > protected String getSpi(String arg0) {
> > > > return null;
> > > > }
> > > >
> > > > protected String[] keysSpi() throws BackingStoreException {
> > > > return null;
> > > > }
> > > >
> > > > protected void putSpi(String arg0, String arg1) {
> > > > }
> > > >
> > > > protected void removeNodeSpi() throws BackingStoreException {
> > > > }
> > > >
> > > > protected void removeSpi(String arg0) {
> > > > }
> > > >
> > > > protected void syncSpi() throws BackingStoreException {
> > > > }
> > > > }
> > > >
> > > > public class Test extends TestCase {
> > > >
> > > > public void testcase() {
> > > > AbstractPreferences ap = new
> AbstractPreferencesImpl(null,
> > > "");
> > > > boolean res1 = false, res2 = false;
> > > > try {
> > > > ap.exportNode(null);
> > > > } catch (IOException e) {
> > > > e.printStackTrace();
> > > > } catch (BackingStoreException e) {
> > > > e.printStackTrace();
> > > > }catch (NullPointerException e) {
> > > > e.printStackTrace();
> > > > System.out.println("Got Expected
> > > > NullPointerException");
> > > > } catch (AssertionError ae) {
> > > > ae.printStackTrace();
> > > > res1 = true;
> > > > System.out.println("Got Unexpected
> > > AssertionError");
> > > > }
> > > > try {
> > > > ap.exportSubtree(null);
> > > > } catch (IOException e) {
> > > > e.printStackTrace();
> > > > } catch (BackingStoreException e) {
> > > > e.printStackTrace();
> > > > }catch (NullPointerException e) {
> > > > e.printStackTrace();
> > > > System.out.println("Got Expected
> > > > NullPointerException");
> > > > } catch (AssertionError ae) {
> > > > ae.printStackTrace();
> > > > res2 = true;
> > > > System.out.println("Got Unexpected
> > > AssertionError");
> > > > }
> > > > if (res1 || res2) {
> > > > fail();
> > > > }
> > > > }
> > > > }
> > > >
> > > > Output on Harmony:
> > > > 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 = rsvn: '.' is not a working copy, (Sep 20 2006),
> Windows/ia32/msvc
> > > 1310,
> > > > release build
> > > > http://incubator.apache.org/harmony
> > > >
> > > > .java.lang.AssertionError: Stream is null
> > > > at
> > > >
> > >
> java.util.prefs.AbstractPreferences.exportNode(AbstractPreferences.java:373)
> > > > at Test.testcase(Test.java:50)
> > > > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> > > > at java.lang.reflect.Method.invoke(Unknown Source)
> > > > at junit.framework.TestCase.runTest(TestCase.java:154)
> > > > at junit.framework.TestCase.runBare(TestCase.java:127)
> > > > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > > > at
> junit.framework.TestResult.runProtected(TestResult.java:124)
> > > > at junit.framework.TestResult.run(TestResult.java:109)
> > > > at junit.framework.TestCase.run(TestCase.java:118)
> > > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > > at junit.framework.TestSuite.run(TestSuite.java:203)
> > > > at junit.textui.TestRunner.doRun(TestRunner.java:115)
> > > > at junit.textui.TestRunner.start(TestRunner.java:172)
> > > > at junit.textui.TestRunner.main(TestRunner.java:138)
> > > > Got Unexpected AssertionError
> > > > java.lang.AssertionError: Stream is null
> > > > at
> > > >
> > >
> java.util.prefs.AbstractPreferences.exportSubtree(AbstractPreferences.java:388)
> > > > at Test.testcase(Test.java:64)
> > > > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> > > > at java.lang.reflect.Method.invoke(Unknown Source)
> > > > at junit.framework.TestCase.runTest(TestCase.java:154)
> > > > at junit.framework.TestCase.runBare(TestCase.java:127)
> > > > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > > > at
> junit.framework.TestResult.runProtected(TestResult.java:124)
> > > > at junit.framework.TestResult.run(TestResult.java:109)
> > > > at junit.framework.TestCase.run(TestCase.java:118)
> > > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > > at junit.framework.TestSuite.run(TestSuite.java:203)
> > > > at junit.textui.TestRunner.doRun(TestRunner.java:115)
> > > > at junit.textui.TestRunner.start(TestRunner.java:172)
> > > > at junit.textui.TestRunner.main(TestRunner.java:138)
> > > > Got Unexpected AssertionError
> > > > F
> > > > Time: 0.125
> > > > There was 1 failure:
> > > > 1) testcase(Test)junit.framework.AssertionFailedError
> > > > at Test.testcase(Test.java:78)
> > > > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> > > >
> > > > FAILURES!!!
> > > > Tests run: 1, Failures: 1, Errors: 0
> > > >
> > > > res = 1
> > > >
> > > >
> > > > Output on RI:
> > > > java version "1.5.0_06"
> > > > Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
> > > > Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)
> > > > .java.lang.NullPointerException
> > > > at
> > > java.util.prefs.XmlSupport.putPreferencesInXml(XmlSupport.java:140)
> > > > at java.util.prefs.XmlSupport.export(XmlSupport.java:104)
> > > > at
> > > >
> > >
> java.util.prefs.AbstractPreferences.exportNode(AbstractPreferences.java:1575)
> > > > at Test.testcase(Test.java:50)
> > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > > > at
> > > >
> > >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > > > at
> > > >
> > >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > > > at java.lang.reflect.Method.invoke(Method.java:585)
> > > > at junit.framework.TestCase.runTest(TestCase.java:154)
> > > > at junit.framework.TestCase.runBare(TestCase.java:127)
> > > > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > > > at
> junit.framework.TestResult.runProtected(TestResult.java:124)
> > > > at junit.framework.TestResult.run(TestResult.java:109)
> > > > at junit.framework.TestCase.run(TestCase.java:118)
> > > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > > at junit.framework.TestSuite.run(TestSuite.java:203)
> > > > at junit.textui.TestRunner.doRun(TestRunner.java:116)
> > > > at junit.textui.TestRunner.start(TestRunner.java:172)
> > > > at junit.textui.TestRunner.main(TestRunner.java:138)
> > > > Got Expected NullPointerException
> > > > java.lang.NullPointerException
> > > > at
> > > java.util.prefs.XmlSupport.putPreferencesInXml(XmlSupport.java:140)
> > > > at java.util.prefs.XmlSupport.export(XmlSupport.java:104)
> > > > at
> > > >
> > >
> java.util.prefs.AbstractPreferences.exportSubtree(AbstractPreferences.java:1591)
> > > > at Test.testcase(Test.java:64)
> > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > > > at
> > > >
> > >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > > > at
> > > >
> > >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > > > at java.lang.reflect.Method.invoke(Method.java:585)
> > > > at junit.framework.TestCase.runTest(TestCase.java:154)
> > > > at junit.framework.TestCase.runBare(TestCase.java:127)
> > > > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > > > at
> junit.framework.TestResult.runProtected(TestResult.java:124)
> > > > at junit.framework.TestResult.run(TestResult.java:109)
> > > > at junit.framework.TestCase.run(TestCase.java:118)
> > > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > > at junit.framework.TestSuite.run(TestSuite.java:203)
> > > > at junit.textui.TestRunner.doRun(TestRunner.java:116)
> > > > at junit.textui.TestRunner.start(TestRunner.java:172)
> > > > at junit.textui.TestRunner.main(TestRunner.java:138)
> > > > Got Expected NullPointerException
> > > >
> > > > Time: 0.078
> > > >
> > > > OK (1 test)
> > > >
> > > > res = 0
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > Paulex Yang
> > > China Software Development Lab
> > > IBM
> > >
> > >
> > >
> >
>
Re: [classlib][compatibility] Do we need to use assert like RI (Re: [jira] Created: (HARMONY-2420) [luni] java.util.prefs.AbstractPreferences.exportNode(OutputStream) and java.util.prefs.AbstractPreferences.exportSubtree(OutputStream) throws Assertio
Posted by Nathan Beyer <nb...@gmail.com>.
Throwing an AssertionError without an assert statement is fine and
actually suggested practice (at least according to the SCJP
guidelines), as long as it's a proper assertion scenario.
-Nathan
On 12/5/06, Alexey Varlamov <al...@gmail.com> wrote:
> Paulex,
>
> What I read in the bug description, this is our impl which throws
> AssertionError, seemingly regardless of assertion status ?
>
> In general I agree, we need not strive to be assrtion-compatible.
>
> --
> Alexey
>
> 2006/12/5, Paulex Yang <pa...@gmail.com>:
> > This incompatibility is obviously caused by RI's assert usage, whether
> > or not we need to be "assert compatible" with RI? assert on/off in Java
> > is runtime decided, so that it's still possible that user application
> > run JRE in assert enable mode. And if we do want to "assert compatible",
> > we need to run our test suites in both mode.
> >
> > IMHO, "assert compatibility" is not necessary, because it is not likely
> > to cause user application fail, it seems crazy to expect assert error in
> > the application logic. And I don't believe there are JCK test cases
> > against assert, but I'm open to other's comments.
> >
> > Artem Aliev (JIRA) wrote:
> > > [luni] java.util.prefs.AbstractPreferences.exportNode(OutputStream) and
> > java.util.prefs.AbstractPreferences.exportSubtree(OutputStream) throws
> > AssertionError instead of NPE in a case when OutputStream is null
> > >
> > ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> > >
> > > Key: HARMONY-2420
> > > URL: http://issues.apache.org/jira/browse/HARMONY-2420
> > > Project: Harmony
> > > Issue Type: Bug
> > > Components: Classlib
> > > Reporter: Artem Aliev
> > > Priority: Minor
> > >
> > >
> > > exportNode(OutputStream) and exportSubtree(OutputStream) throws
> > > AssertionError not NullPointerException in a case when OutputStream is
> > null.
> > >
> > > Test to reproduce:
> > > import junit.framework.TestCase;
> > >
> > > import java.io.IOException;
> > > import java.util.prefs.*;
> > >
> > > class AbstractPreferencesImpl extends AbstractPreferences{
> > >
> > > protected AbstractPreferencesImpl(AbstractPreferences arg0, String
> > > arg1) {
> > > super(arg0, arg1);
> > > }
> > >
> > > protected AbstractPreferences childSpi(String arg0) {
> > > return null;
> > > }
> > >
> > > protected String[] childrenNamesSpi() throws BackingStoreException
> > {
> > > return null;
> > > }
> > >
> > > protected void flushSpi() throws BackingStoreException {
> > > }
> > >
> > > protected String getSpi(String arg0) {
> > > return null;
> > > }
> > >
> > > protected String[] keysSpi() throws BackingStoreException {
> > > return null;
> > > }
> > >
> > > protected void putSpi(String arg0, String arg1) {
> > > }
> > >
> > > protected void removeNodeSpi() throws BackingStoreException {
> > > }
> > >
> > > protected void removeSpi(String arg0) {
> > > }
> > >
> > > protected void syncSpi() throws BackingStoreException {
> > > }
> > > }
> > >
> > > public class Test extends TestCase {
> > >
> > > public void testcase() {
> > > AbstractPreferences ap = new AbstractPreferencesImpl(null,
> > "");
> > > boolean res1 = false, res2 = false;
> > > try {
> > > ap.exportNode(null);
> > > } catch (IOException e) {
> > > e.printStackTrace();
> > > } catch (BackingStoreException e) {
> > > e.printStackTrace();
> > > }catch (NullPointerException e) {
> > > e.printStackTrace();
> > > System.out.println("Got Expected
> > > NullPointerException");
> > > } catch (AssertionError ae) {
> > > ae.printStackTrace();
> > > res1 = true;
> > > System.out.println("Got Unexpected
> > AssertionError");
> > > }
> > > try {
> > > ap.exportSubtree(null);
> > > } catch (IOException e) {
> > > e.printStackTrace();
> > > } catch (BackingStoreException e) {
> > > e.printStackTrace();
> > > }catch (NullPointerException e) {
> > > e.printStackTrace();
> > > System.out.println("Got Expected
> > > NullPointerException");
> > > } catch (AssertionError ae) {
> > > ae.printStackTrace();
> > > res2 = true;
> > > System.out.println("Got Unexpected
> > AssertionError");
> > > }
> > > if (res1 || res2) {
> > > fail();
> > > }
> > > }
> > > }
> > >
> > > Output on Harmony:
> > > 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 = rsvn: '.' is not a working copy, (Sep 20 2006), Windows/ia32/msvc
> > 1310,
> > > release build
> > > http://incubator.apache.org/harmony
> > >
> > > .java.lang.AssertionError: Stream is null
> > > at
> > >
> > java.util.prefs.AbstractPreferences.exportNode(AbstractPreferences.java:373)
> > > at Test.testcase(Test.java:50)
> > > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> > > at java.lang.reflect.Method.invoke(Unknown Source)
> > > at junit.framework.TestCase.runTest(TestCase.java:154)
> > > at junit.framework.TestCase.runBare(TestCase.java:127)
> > > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > > at junit.framework.TestResult.runProtected(TestResult.java:124)
> > > at junit.framework.TestResult.run(TestResult.java:109)
> > > at junit.framework.TestCase.run(TestCase.java:118)
> > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > at junit.framework.TestSuite.run(TestSuite.java:203)
> > > at junit.textui.TestRunner.doRun(TestRunner.java:115)
> > > at junit.textui.TestRunner.start(TestRunner.java:172)
> > > at junit.textui.TestRunner.main(TestRunner.java:138)
> > > Got Unexpected AssertionError
> > > java.lang.AssertionError: Stream is null
> > > at
> > >
> > java.util.prefs.AbstractPreferences.exportSubtree(AbstractPreferences.java:388)
> > > at Test.testcase(Test.java:64)
> > > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> > > at java.lang.reflect.Method.invoke(Unknown Source)
> > > at junit.framework.TestCase.runTest(TestCase.java:154)
> > > at junit.framework.TestCase.runBare(TestCase.java:127)
> > > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > > at junit.framework.TestResult.runProtected(TestResult.java:124)
> > > at junit.framework.TestResult.run(TestResult.java:109)
> > > at junit.framework.TestCase.run(TestCase.java:118)
> > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > at junit.framework.TestSuite.run(TestSuite.java:203)
> > > at junit.textui.TestRunner.doRun(TestRunner.java:115)
> > > at junit.textui.TestRunner.start(TestRunner.java:172)
> > > at junit.textui.TestRunner.main(TestRunner.java:138)
> > > Got Unexpected AssertionError
> > > F
> > > Time: 0.125
> > > There was 1 failure:
> > > 1) testcase(Test)junit.framework.AssertionFailedError
> > > at Test.testcase(Test.java:78)
> > > at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> > >
> > > FAILURES!!!
> > > Tests run: 1, Failures: 1, Errors: 0
> > >
> > > res = 1
> > >
> > >
> > > Output on RI:
> > > java version "1.5.0_06"
> > > Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
> > > Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)
> > > .java.lang.NullPointerException
> > > at
> > java.util.prefs.XmlSupport.putPreferencesInXml(XmlSupport.java:140)
> > > at java.util.prefs.XmlSupport.export(XmlSupport.java:104)
> > > at
> > >
> > java.util.prefs.AbstractPreferences.exportNode(AbstractPreferences.java:1575)
> > > at Test.testcase(Test.java:50)
> > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > > at
> > >
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > > at
> > >
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > > at java.lang.reflect.Method.invoke(Method.java:585)
> > > at junit.framework.TestCase.runTest(TestCase.java:154)
> > > at junit.framework.TestCase.runBare(TestCase.java:127)
> > > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > > at junit.framework.TestResult.runProtected(TestResult.java:124)
> > > at junit.framework.TestResult.run(TestResult.java:109)
> > > at junit.framework.TestCase.run(TestCase.java:118)
> > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > at junit.framework.TestSuite.run(TestSuite.java:203)
> > > at junit.textui.TestRunner.doRun(TestRunner.java:116)
> > > at junit.textui.TestRunner.start(TestRunner.java:172)
> > > at junit.textui.TestRunner.main(TestRunner.java:138)
> > > Got Expected NullPointerException
> > > java.lang.NullPointerException
> > > at
> > java.util.prefs.XmlSupport.putPreferencesInXml(XmlSupport.java:140)
> > > at java.util.prefs.XmlSupport.export(XmlSupport.java:104)
> > > at
> > >
> > java.util.prefs.AbstractPreferences.exportSubtree(AbstractPreferences.java:1591)
> > > at Test.testcase(Test.java:64)
> > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > > at
> > >
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > > at
> > >
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > > at java.lang.reflect.Method.invoke(Method.java:585)
> > > at junit.framework.TestCase.runTest(TestCase.java:154)
> > > at junit.framework.TestCase.runBare(TestCase.java:127)
> > > at junit.framework.TestResult$1.protect(TestResult.java:106)
> > > at junit.framework.TestResult.runProtected(TestResult.java:124)
> > > at junit.framework.TestResult.run(TestResult.java:109)
> > > at junit.framework.TestCase.run(TestCase.java:118)
> > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > at junit.framework.TestSuite.run(TestSuite.java:203)
> > > at junit.textui.TestRunner.doRun(TestRunner.java:116)
> > > at junit.textui.TestRunner.start(TestRunner.java:172)
> > > at junit.textui.TestRunner.main(TestRunner.java:138)
> > > Got Expected NullPointerException
> > >
> > > Time: 0.078
> > >
> > > OK (1 test)
> > >
> > > res = 0
> > >
> > >
> > >
> >
> >
> > --
> > Paulex Yang
> > China Software Development Lab
> > IBM
> >
> >
> >
>