harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paulex Yang <paulex.y...@gmail.com>
Subject 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
Date Wed, 06 Dec 2006 11:47:05 GMT
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 <paulex.yang@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



Mime
View raw message