Return-Path: Delivered-To: apmail-commons-dev-archive@www.apache.org Received: (qmail 29322 invoked from network); 8 Mar 2011 20:18:25 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 8 Mar 2011 20:18:25 -0000 Received: (qmail 21139 invoked by uid 500); 8 Mar 2011 20:18:25 -0000 Delivered-To: apmail-commons-dev-archive@commons.apache.org Received: (qmail 21046 invoked by uid 500); 8 Mar 2011 20:18:25 -0000 Mailing-List: contact dev-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Commons Developers List" Delivered-To: mailing list dev@commons.apache.org Received: (qmail 21038 invoked by uid 99); 8 Mar 2011 20:18:25 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 Mar 2011 20:18:25 +0000 X-ASF-Spam-Status: No, hits=0.7 required=5.0 tests=FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_NEUTRAL,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [194.206.126.239] (HELO smtp.nordnet.fr) (194.206.126.239) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 Mar 2011 20:18:17 +0000 Received: from lehrin (86.253.146.195.dynamic.adsl.abo.nordnet.fr [195.146.253.86]) by smtp.nordnet.fr (Postfix) with ESMTP id 1982048036 for ; Tue, 8 Mar 2011 21:17:45 +0100 (CET) Received: by lehrin (Postfix, from userid 5001) id 0278B4073; Tue, 8 Mar 2011 21:17:45 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on lehrin.spaceroots.local X-Spam-Level: Received: from lehrin.spaceroots.local (lehrin.spaceroots.local [127.0.0.1]) by lehrin (Postfix) with ESMTP id 229944071 for ; Tue, 8 Mar 2011 21:17:42 +0100 (CET) Message-ID: <4D768EE6.6050707@free.fr> Date: Tue, 08 Mar 2011 21:17:42 +0100 From: Luc Maisonobe User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.14) Gecko/20110223 Thunderbird/3.1.8 MIME-Version: 1.0 To: dev@commons.apache.org Subject: [math] Re: svn commit: r1078734 References: <20110307103754.1331923889EB@eris.apache.org> In-Reply-To: <20110307103754.1331923889EB@eris.apache.org> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Old-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,FREEMAIL_FROM autolearn=unavailable version=3.3.1 Le 07/03/2011 11:37, erans@apache.org a écrit : > Author: erans > Date: Mon Mar 7 10:37:52 2011 > New Revision: 1078734 > > URL: http://svn.apache.org/viewvc?rev=1078734&view=rev > Log: > MATH-542 > "MathRuntimeException" provides two ways for enhancing the information content: > one for localized messages and one for storing "context" objects. > The additional methods have been added to "MathThrowable". Consequently, dummy > implementations were needed in the old "MathRuntimeException" and > "MathException". > Some parts of the tests for old exceptions were removed as they used methods > that were deleted. A call to "MathUserException" in "AbstractContinuousDistribution" > was simplified for the same reason. > "MathUtils" still contained "String" (instead of "Localizable") as argument to > the constructor of a "MathArithmeticException". > I don't know why a test in "DummyStepInterpolatorTest" stopped working. It is now > commented out; please have a look. [snip] > Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/ode/sampling/DummyStepInterpolatorTest.java > URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/ode/sampling/DummyStepInterpolatorTest.java?rev=1078734&r1=1078733&r2=1078734&view=diff > ============================================================================== > --- commons/proper/math/trunk/src/test/java/org/apache/commons/math/ode/sampling/DummyStepInterpolatorTest.java (original) > +++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/ode/sampling/DummyStepInterpolatorTest.java Mon Mar 7 10:37:52 2011 > @@ -123,7 +123,9 @@ public class DummyStepInterpolatorTest { > fail("an exception should have been thrown"); > } catch (IOException ioe) { > // expected behavior > - assertEquals(0, ioe.getMessage().length()); > + // XXX Why was the message supposed to be empty? > + // With the current code it is "org.apache.commons.math.util.Pair". > + // assertEquals(0, ioe.getMessage().length()); The problem here is that the exception thrown which is an IOException built from the empty string in the BadStepInterpolator below is not the IOException that is caught here. In fact the IOException caught is really a java.io.NotSerializableException which is built with the message "org.apache.commons.math.util.Pair" automatically by the serialization process in the JVM (at least for Oracle implementation). All exceptions must be serializable (this comes from java.lang.Throwable implementing the Serializable interface). This was also one reason why our Localizable interface had to extends Serializable, so it could be used as a field in our exceptions. This change added a List> field in MathRuntimeException. Pair is not serializable. Adding Serializable to the implemented interfaces in Pair does solve the problem (if also the change below is reverted, of course) but I don't think it would be wise unless we also enforce the two generic parameters of Pair to be serializable too. Perhaps we should use a Map instead ? The problem also makes me think that we already had a similar bug in another part of the exceptions for a long time : the Object or Object[] parameters of the exceptions are stored and may not be Serializable too. This was never a problem either because the parameters are often simple primitive ones (int, double ...) or arrays so they were serializable. Perhaps we should change the signature from Object and Object[] to Serializable and Serializable[] ? > } > > } > @@ -137,7 +139,7 @@ public class DummyStepInterpolatorTest { > } > @Override > protected void doFinalize() throws MathUserException { > - throw new MathUserException((Localizable) null, LocalizedFormats.SIMPLE_MESSAGE, ""); > + throw new MathUserException(LocalizedFormats.SIMPLE_MESSAGE, null); This should not have been replaced. Null is not the smae thing as the empty String. Also this introduces a warning due to ambiguous signatures. Luc > } > } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org For additional commands, e-mail: dev-help@commons.apache.org