Return-Path: Delivered-To: apmail-harmony-dev-archive@www.apache.org Received: (qmail 49085 invoked from network); 6 Dec 2006 02:34:41 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 6 Dec 2006 02:34:41 -0000 Received: (qmail 85843 invoked by uid 500); 6 Dec 2006 02:34:49 -0000 Delivered-To: apmail-harmony-dev-archive@harmony.apache.org Received: (qmail 85236 invoked by uid 500); 6 Dec 2006 02:34:47 -0000 Mailing-List: contact dev-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list dev@harmony.apache.org Received: (qmail 85227 invoked by uid 99); 6 Dec 2006 02:34:47 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 05 Dec 2006 18:34:47 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: domain of nbeyer@gmail.com designates 66.249.82.234 as permitted sender) Received: from [66.249.82.234] (HELO wx-out-0506.google.com) (66.249.82.234) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 05 Dec 2006 18:34:36 -0800 Received: by wx-out-0506.google.com with SMTP id i26so56768wxd for ; Tue, 05 Dec 2006 18:34:15 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=QYyBpdbFimM2GZc6ybeuAsVjerB83PMc2yDvfctHCQu+lzUfTKiZQGcZoIk7PyPTW/bmq3v1NtOO1QVRXKCcxHftfoS7lTbUMxtqJidj88hntikR9T+ogtyYsWPA5SOqtPm6fCmaTzq/r7sMaDNSC8vuGjTu6Iz8hiV1bKyZf54= Received: by 10.90.118.12 with SMTP id q12mr323255agc.1165372455336; Tue, 05 Dec 2006 18:34:15 -0800 (PST) Received: by 10.90.66.18 with HTTP; Tue, 5 Dec 2006 18:34:15 -0800 (PST) Message-ID: <3b3f27c60612051834h51f6ce9bi7675f65c92feec39@mail.gmail.com> Date: Tue, 5 Dec 2006 20:34:15 -0600 From: "Nathan Beyer" To: dev@harmony.apache.org 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 In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: X-Virus-Checked: Checked by ClamAV on apache.org 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 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 : > > 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 > > > > > > >