Here is a patch reflecting the changes I have made for classes that need
to sport serialversionUID's. It also contains a modification to one of
the analysis Test classes (BisectionSolverTest and QuinticFunction)
showing how a test for serialization is verified using some copy/paste
from an existing test case.
-Mark
p.s. I removed Serialization of ValueServer for the time being.
Mark R. Diggory wrote:
I'd like to clarify my position in more detail because it is not 100%
-1 on removing Serialization Interfaces. There are items on the list
for which I agree serialization can/should be removed.
1.) Its ok to remove Serialization from Factories which are not
instantiated.
2.) Its ok to remove Serialization from Abstract classes.
3.) StaticUtils don't benefit from serialization, I didn't see any
with it present within them. If you see any, feel free to remove the
Serialization Interface from them.
I would very much prefer to see Serialization interfaces maintained on
all non-Abstract implementation classes so that the API can be used
within applications which take advantage of Serialization.
a.) Abstract Classes in which Serialization interface can be removed
without impact to overall serialization of API:
o.a.c.m.analysis.UnivariateRealSolverImpl
o.a.c.m.stat.univariate.SummaryStatistics
o.a.c.m.stat.univariate.DescriptiveStatistics
b.) Classes I would like to maintain Serialization on (and for which
its pretty much zero effort).
o.a.c.m.analysis.
BisectionSolver
BrentSolver
NewtonSolver
PolynomialFunction
PolynomialSplineFunction
SecantSolver
SplineInterpolator
UnivariateRealSolverFactoryImpl --> Instantiable Factory
o.a.c.m.complex.
Complex
ComplexFormat
o.a.c.m.distribution.
BinomialDistributionImpl
ChiSquaredDistributionImpl
DistributionFactoryImpl --> Instantiable Factory
ExponentialDistributionImpl
FDistributionImpl
GammaDistributionImpl
HypergeometricDistributionImpl
NormalDistributionImpl
TDistributionImpl
o.a.c.m.linear
RealMatrixImpl
o.a.c.m.random
EmpiricalDistributionImpl (Pluse inner classes)
RandomDataImpl
o.a.c.m.stat
Frequency
o.a.c.m.stat.inference
ChiSquareTestImpl
TTestImpl
o.a.c.m.stat.multivariate
BivariateRegression
o.a.c.m.stat.univariate
DescriptiveStatisticsImpl
StatisticalSummaryValues
SummaryStatisticsImpl
o.a.c.m.stat.univariate.xxx (All classes)
o.a.c.m.util
ContinuedFraction
ContractableDoubleArray
DefaultTransformer
ExpandableDoubleArray
FixedDoubleArray
TransformerMap
c.) With very little effort I can make the following Serializable such
that the Replayable Data Streams can be recovered and continued on
from given the presence of the Datasource is available.
o.a.c.m.random
ValueServer
So, to review Phil's list:
AbstractDescriptiveStatistics
+1
BisectionSolver
BrentSolver
ChiSquareTestImpl
DefaultTransformer
-1
DescriptiveStatistics
+1
DescriptiveStatisticsImpl
DistributionFactoryImpl
Erf
Gamma
NewtonSolver
SecantSolver
SplineInterpolator
SummaryStatisticsImpl
TTestImpl
TransformerMap
UnivariateRealSolverFactoryImpl
-1
UnivariateRealSolverImpl
+1
ValueServer
-0 (I can make it Serializable if you like)
-Mark
p.s. As a reminder, I've serailversionUID's generated for all these
files now.
Mark R. Diggory wrote:
Phil Steitz wrote:
Since implementing Serializable requires that all subclasses also
implement serializable and that care be taken to ensure backward
serialization compatability, my view is that we should implement
Serializable iff there is a reason to do so, not by default for all
classes.
This is not true, you only have to implement serializable in your
subclass if you want to support serialization, there is no
requirement that you are forced to do so because the parent class
implements it. It is completely transparent to the user in this reguard.
I am interested in others' views on this. Maybe I am missing
something, but I see no value in implementing Serializable for
factories, abstract classes, utility classes and such.
Yes, I'll agree for abstracts, its not really neccessary, it was more
a practice on my part to confirm that they were truly serializable. I
also agree its probibly not very important for factories, but its a
no-brainer, effects very little in terms of source code and
performance and is a very simple thing toi maintain. Arguing that
this creates all kinds of headaches is really a "Red Herring". I
spent an hour on it this afternoon and can confidently state that our
API can easily support it without headaches to anyone. Removing it
only steps on peoples toes in the long run.
-1 on removing Serialization Interfaces.
Mark
Phil
Index: java/org/apache/commons/math/ConvergenceException.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/ConvergenceException.java,v
retrieving revision 1.12
diff -u -r1.12 ConvergenceException.java
--- java/org/apache/commons/math/ConvergenceException.java 27 Apr 2004 04:37:58
-0000 1.12
+++ java/org/apache/commons/math/ConvergenceException.java 25 May 2004 21:22:01
-0000
@@ -24,6 +24,10 @@
* @version $Revision: 1.12 $ $Date: 2004/04/27 04:37:58 $
*/
public class ConvergenceException extends MathException implements Serializable{
+
+ /** Serializable version identifier */
+ static final long serialVersionUID = -3657394299929217890L;
+
/**
* Default constructor.
*/
Index: java/org/apache/commons/math/MathConfigurationException.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/MathConfigurationException.java,v
retrieving revision 1.16
diff -u -r1.16 MathConfigurationException.java
--- java/org/apache/commons/math/MathConfigurationException.java 27 Apr 2004
04:37:58 -0000 1.16
+++ java/org/apache/commons/math/MathConfigurationException.java 25 May 2004
21:22:01 -0000
@@ -22,6 +22,9 @@
* @version $Revision: 1.16 $ $Date: 2004/04/27 04:37:58 $
*/
public class MathConfigurationException extends MathException implements Serializable
{
+
+ /** Serializable version identifier */
+ static final long serialVersionUID = -7958299004965931723L;
/**
* Default constructor.
Index: java/org/apache/commons/math/MathException.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/MathException.java,v
retrieving revision 1.15
diff -u -r1.15 MathException.java
--- java/org/apache/commons/math/MathException.java 27 Apr 2004 04:37:58 -0000
1.15
+++ java/org/apache/commons/math/MathException.java 25 May 2004 21:22:01 -0000
@@ -25,6 +25,9 @@
*/
public class MathException extends NestableException implements Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = -8594613561393443827L;
+
/**
* Constructs a MathException
*/
Index: java/org/apache/commons/math/analysis/BisectionSolver.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/analysis/BisectionSolver.java,v
retrieving revision 1.15
diff -u -r1.15 BisectionSolver.java
--- java/org/apache/commons/math/analysis/BisectionSolver.java 27 Apr 2004 16:42:33
-0000 1.15
+++ java/org/apache/commons/math/analysis/BisectionSolver.java 25 May 2004 21:22:01
-0000
@@ -27,6 +27,9 @@
*/
public class BisectionSolver extends UnivariateRealSolverImpl implements Serializable
{
+ /** Serializable version identifier */
+ static final long serialVersionUID = 7137520585963699578L;
+
/**
* Construct a solver for the given function.
* @param f function to solve.
Index: java/org/apache/commons/math/analysis/BrentSolver.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/analysis/BrentSolver.java,v
retrieving revision 1.14
diff -u -r1.14 BrentSolver.java
--- java/org/apache/commons/math/analysis/BrentSolver.java 27 Apr 2004 04:37:58
-0000 1.14
+++ java/org/apache/commons/math/analysis/BrentSolver.java 25 May 2004 21:22:01
-0000
@@ -28,6 +28,10 @@
* @version $Revision: 1.14 $ $Date: 2004/04/27 04:37:58 $
*/
public class BrentSolver extends UnivariateRealSolverImpl implements Serializable {
+
+ /** Serializable version identifier */
+ static final long serialVersionUID = 3350616277306882875L;
+
/**
* Construct a solver for the given function.
* @param f function to solve.
Index: java/org/apache/commons/math/analysis/NewtonSolver.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/analysis/NewtonSolver.java,v
retrieving revision 1.3
diff -u -r1.3 NewtonSolver.java
--- java/org/apache/commons/math/analysis/NewtonSolver.java 27 Apr 2004 04:37:58
-0000 1.3
+++ java/org/apache/commons/math/analysis/NewtonSolver.java 25 May 2004 21:22:01
-0000
@@ -30,6 +30,9 @@
*/
public class NewtonSolver extends UnivariateRealSolverImpl implements Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = 2606474895443431607L;
+
/** The first derivative of the target function. */
private UnivariateRealFunction derivative;
Index: java/org/apache/commons/math/analysis/PolynomialFunction.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/analysis/PolynomialFunction.java,v
retrieving revision 1.9
diff -u -r1.9 PolynomialFunction.java
--- java/org/apache/commons/math/analysis/PolynomialFunction.java 27 Apr 2004
04:37:58 -0000 1.9
+++ java/org/apache/commons/math/analysis/PolynomialFunction.java 25 May 2004
21:22:01 -0000
@@ -27,6 +27,9 @@
*/
public class PolynomialFunction implements DifferentiableUnivariateRealFunction,
Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = 3322454535052136809L;
+
/**
* The coefficients of the polynomial, ordered by degree -- i.e.,
coefficients[0] is the constant term
* and coefficients[n] is the coefficient of x^n where n is the degree of the
polynomial.
Index: java/org/apache/commons/math/analysis/PolynomialSplineFunction.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/analysis/PolynomialSplineFunction.java,v
retrieving revision 1.4
diff -u -r1.4 PolynomialSplineFunction.java
--- java/org/apache/commons/math/analysis/PolynomialSplineFunction.java 27 Apr 2004
04:37:58 -0000 1.4
+++ java/org/apache/commons/math/analysis/PolynomialSplineFunction.java 25 May 2004
21:22:01 -0000
@@ -45,6 +45,9 @@
*/
public class PolynomialSplineFunction implements UnivariateRealFunction, Serializable
{
+ /** Serializable version identifier */
+ static final long serialVersionUID = 7011031166416885789L;
+
/** Spline segment interval delimiters (knots). Size is n+1 for n segments. */
private double knots[];
Index: java/org/apache/commons/math/analysis/SecantSolver.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/analysis/SecantSolver.java,v
retrieving revision 1.14
diff -u -r1.14 SecantSolver.java
--- java/org/apache/commons/math/analysis/SecantSolver.java 27 Apr 2004 04:37:58
-0000 1.14
+++ java/org/apache/commons/math/analysis/SecantSolver.java 25 May 2004 21:22:01
-0000
@@ -34,6 +34,10 @@
* @version $Revision: 1.14 $ $Date: 2004/04/27 04:37:58 $
*/
public class SecantSolver extends UnivariateRealSolverImpl implements Serializable {
+
+ /** Serializable version identifier */
+ static final long serialVersionUID = 1984971194738974867L;
+
/**
* Construct a solver for the given function.
* @param f function to solve.
Index: java/org/apache/commons/math/analysis/SplineInterpolator.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/analysis/SplineInterpolator.java,v
retrieving revision 1.17
diff -u -r1.17 SplineInterpolator.java
--- java/org/apache/commons/math/analysis/SplineInterpolator.java 22 May 2004
19:59:22 -0000 1.17
+++ java/org/apache/commons/math/analysis/SplineInterpolator.java 25 May 2004
21:22:01 -0000
@@ -44,6 +44,9 @@
*/
public class SplineInterpolator implements UnivariateRealInterpolator, Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = 1451615602299855697L;
+
/**
* Computes an interpolating function for the data set.
* @param x the arguments for the interpolation points
Index: java/org/apache/commons/math/analysis/UnivariateRealSolverFactoryImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/analysis/UnivariateRealSolverFactoryImpl.java,v
retrieving revision 1.11
diff -u -r1.11 UnivariateRealSolverFactoryImpl.java
--- java/org/apache/commons/math/analysis/UnivariateRealSolverFactoryImpl.java 8 Apr
2004 21:19:17 -0000 1.11
+++ java/org/apache/commons/math/analysis/UnivariateRealSolverFactoryImpl.java 25 May
2004 21:22:02 -0000
@@ -28,6 +28,9 @@
public class UnivariateRealSolverFactoryImpl
extends UnivariateRealSolverFactory implements Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = -6438970414252648435L;
+
/**
* Default constructor.
*/
Index: java/org/apache/commons/math/analysis/UnivariateRealSolverImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/analysis/UnivariateRealSolverImpl.java,v
retrieving revision 1.12
diff -u -r1.12 UnivariateRealSolverImpl.java
--- java/org/apache/commons/math/analysis/UnivariateRealSolverImpl.java 27 Apr 2004
16:42:33 -0000 1.12
+++ java/org/apache/commons/math/analysis/UnivariateRealSolverImpl.java 25 May 2004
21:22:02 -0000
@@ -16,8 +16,6 @@
package org.apache.commons.math.analysis;
-import java.io.Serializable;
-
import org.apache.commons.math.MathException;
/**
@@ -27,7 +25,7 @@
* @version $Revision: 1.12 $ $Date: 2004/04/27 16:42:33 $
*/
public abstract class UnivariateRealSolverImpl
- implements UnivariateRealSolver, Serializable {
+ implements UnivariateRealSolver{
/** Maximum absolute error. */
protected double absoluteAccuracy;
Index: java/org/apache/commons/math/complex/Complex.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/complex/Complex.java,v
retrieving revision 1.7
diff -u -r1.7 Complex.java
--- java/org/apache/commons/math/complex/Complex.java 29 Feb 2004 19:52:01 -0000
1.7
+++ java/org/apache/commons/math/complex/Complex.java 25 May 2004 21:22:02 -0000
@@ -27,6 +27,9 @@
*/
public class Complex implements Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = -6530173849413811929L;
+
/** The square root of -1. A number representing "0.0 + 1.0i".*/
public static final Complex I = new Complex(0.0, 1.0);
Index: java/org/apache/commons/math/complex/ComplexFormat.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/complex/ComplexFormat.java,v
retrieving revision 1.6
diff -u -r1.6 ComplexFormat.java
--- java/org/apache/commons/math/complex/ComplexFormat.java 23 May 2004 00:52:32
-0000 1.6
+++ java/org/apache/commons/math/complex/ComplexFormat.java 25 May 2004 21:22:02
-0000
@@ -16,6 +16,7 @@
package org.apache.commons.math.complex;
+import java.io.Serializable;
import java.text.NumberFormat;
/**
@@ -26,8 +27,11 @@
* @author Apache Software Foundation
* @version $Revision: 1.6 $ $Date: 2004/05/23 00:52:32 $
*/
-public class ComplexFormat {
+public class ComplexFormat implements Serializable{
+ /** Serializable version identifier */
+ static final long serialVersionUID = -2572982098433784000L;
+
/** The default complex format. */
private static final ComplexFormat DEFAULT = new ComplexFormat();
Index: java/org/apache/commons/math/distribution/BinomialDistributionImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/distribution/BinomialDistributionImpl.java,v
retrieving revision 1.14
diff -u -r1.14 BinomialDistributionImpl.java
--- java/org/apache/commons/math/distribution/BinomialDistributionImpl.java 19 May
2004 14:16:31 -0000 1.14
+++ java/org/apache/commons/math/distribution/BinomialDistributionImpl.java 25 May
2004 21:22:02 -0000
@@ -30,6 +30,9 @@
extends AbstractDiscreteDistribution
implements BinomialDistribution, Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = 6751309484392813623L;
+
/** The number of trials. */
private int numberOfTrials;
Index: java/org/apache/commons/math/distribution/ChiSquaredDistributionImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/distribution/ChiSquaredDistributionImpl.java,v
retrieving revision 1.16
diff -u -r1.16 ChiSquaredDistributionImpl.java
--- java/org/apache/commons/math/distribution/ChiSquaredDistributionImpl.java 19 May
2004 14:16:31 -0000 1.16
+++ java/org/apache/commons/math/distribution/ChiSquaredDistributionImpl.java 25 May
2004 21:22:02 -0000
@@ -28,6 +28,9 @@
extends AbstractContinuousDistribution
implements ChiSquaredDistribution, Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = -8352658048349159782L;
+
/** Internal Gamma distribution. */
private GammaDistribution gamma;
Index: java/org/apache/commons/math/distribution/DistributionFactoryImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/distribution/DistributionFactoryImpl.java,v
retrieving revision 1.18
diff -u -r1.18 DistributionFactoryImpl.java
--- java/org/apache/commons/math/distribution/DistributionFactoryImpl.java 21 Feb
2004 21:35:14 -0000 1.18
+++ java/org/apache/commons/math/distribution/DistributionFactoryImpl.java 25 May
2004 21:22:02 -0000
@@ -25,6 +25,10 @@
* @version $Revision: 1.18 $ $Date: 2004/02/21 21:35:14 $
*/
public class DistributionFactoryImpl extends DistributionFactory implements
Serializable {
+
+ /** Serializable version identifier */
+ static final long serialVersionUID = -5615665532127128678L;
+
/**
* Default constructor. Package scope to prevent unwanted instantiation.
*/
Index: java/org/apache/commons/math/distribution/ExponentialDistributionImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/distribution/ExponentialDistributionImpl.java,v
retrieving revision 1.15
diff -u -r1.15 ExponentialDistributionImpl.java
--- java/org/apache/commons/math/distribution/ExponentialDistributionImpl.java 19 May
2004 14:16:31 -0000 1.15
+++ java/org/apache/commons/math/distribution/ExponentialDistributionImpl.java 25 May
2004 21:22:02 -0000
@@ -27,6 +27,9 @@
public class ExponentialDistributionImpl
implements ExponentialDistribution, Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = 2401296428283614780L;
+
/** The mean of this distribution. */
private double mean;
Index: java/org/apache/commons/math/distribution/FDistributionImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/distribution/FDistributionImpl.java,v
retrieving revision 1.16
diff -u -r1.16 FDistributionImpl.java
--- java/org/apache/commons/math/distribution/FDistributionImpl.java 19 May 2004
14:16:31 -0000 1.16
+++ java/org/apache/commons/math/distribution/FDistributionImpl.java 25 May 2004
21:22:02 -0000
@@ -30,6 +30,9 @@
extends AbstractContinuousDistribution
implements FDistribution, Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = -8516354193418641566L;
+
/** The numerator degrees of freedom*/
private double numeratorDegreesOfFreedom;
Index: java/org/apache/commons/math/distribution/GammaDistributionImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/distribution/GammaDistributionImpl.java,v
retrieving revision 1.19
diff -u -r1.19 GammaDistributionImpl.java
--- java/org/apache/commons/math/distribution/GammaDistributionImpl.java 19 May
2004 14:16:31 -0000 1.19
+++ java/org/apache/commons/math/distribution/GammaDistributionImpl.java 25 May
2004 21:22:02 -0000
@@ -28,6 +28,9 @@
public class GammaDistributionImpl extends AbstractContinuousDistribution
implements GammaDistribution, Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = -3239549463135430361L;
+
/** The shape parameter. */
private double alpha;
Index: java/org/apache/commons/math/distribution/HypergeometricDistributionImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/distribution/HypergeometricDistributionImpl.java,v
retrieving revision 1.13
diff -u -r1.13 HypergeometricDistributionImpl.java
--- java/org/apache/commons/math/distribution/HypergeometricDistributionImpl.java
19 May 2004 14:16:31 -0000 1.13
+++ java/org/apache/commons/math/distribution/HypergeometricDistributionImpl.java
25 May 2004 21:22:02 -0000
@@ -30,6 +30,9 @@
implements HypergeometricDistribution, Serializable
{
+ /** Serializable version identifier */
+ static final long serialVersionUID = -436928820673516179L;
+
/** The number of successes in the population. */
private int numberOfSuccesses;
Index: java/org/apache/commons/math/distribution/NormalDistributionImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/distribution/NormalDistributionImpl.java,v
retrieving revision 1.10
diff -u -r1.10 NormalDistributionImpl.java
--- java/org/apache/commons/math/distribution/NormalDistributionImpl.java 19 May
2004 15:06:44 -0000 1.10
+++ java/org/apache/commons/math/distribution/NormalDistributionImpl.java 25 May
2004 21:22:02 -0000
@@ -30,6 +30,9 @@
public class NormalDistributionImpl extends AbstractContinuousDistribution
implements NormalDistribution, Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = 8589540077390120676L;
+
/** The mean of this distribution. */
private double mean = 0;
Index: java/org/apache/commons/math/distribution/TDistributionImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/distribution/TDistributionImpl.java,v
retrieving revision 1.16
diff -u -r1.16 TDistributionImpl.java
--- java/org/apache/commons/math/distribution/TDistributionImpl.java 19 May 2004
14:16:31 -0000 1.16
+++ java/org/apache/commons/math/distribution/TDistributionImpl.java 25 May 2004
21:22:02 -0000
@@ -30,6 +30,9 @@
extends AbstractContinuousDistribution
implements TDistribution, Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = -5852615386664158222L;
+
/** The degrees of freedom*/
private double degreesOfFreedom;
Index: java/org/apache/commons/math/linear/InvalidMatrixException.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/linear/InvalidMatrixException.java,v
retrieving revision 1.4
diff -u -r1.4 InvalidMatrixException.java
--- java/org/apache/commons/math/linear/InvalidMatrixException.java 27 Apr 2004
04:37:58 -0000 1.4
+++ java/org/apache/commons/math/linear/InvalidMatrixException.java 25 May 2004
21:22:02 -0000
@@ -25,6 +25,10 @@
* @version $Revision: 1.4 $ $Date: 2004/04/27 04:37:58 $
*/
public class InvalidMatrixException extends NestableRuntimeException {
+
+ /** Serializable version identifier */
+ static final long serialVersionUID = 5318837237354354107L;
+
/**
* Default constructor.
*/
Index: java/org/apache/commons/math/linear/MatrixIndexException.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/linear/MatrixIndexException.java,v
retrieving revision 1.4
diff -u -r1.4 MatrixIndexException.java
--- java/org/apache/commons/math/linear/MatrixIndexException.java 27 Apr 2004
04:37:58 -0000 1.4
+++ java/org/apache/commons/math/linear/MatrixIndexException.java 25 May 2004
21:22:02 -0000
@@ -24,6 +24,10 @@
* @version $Revision: 1.4 $ $Date: 2004/04/27 04:37:58 $
*/
public class MatrixIndexException extends NestableRuntimeException {
+
+ /** Serializable version identifier */
+ static final long serialVersionUID = -1341109412864309526L;
+
/**
* Default constructor.
*/
Index: java/org/apache/commons/math/linear/RealMatrixImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/linear/RealMatrixImpl.java,v
retrieving revision 1.20
diff -u -r1.20 RealMatrixImpl.java
--- java/org/apache/commons/math/linear/RealMatrixImpl.java 19 May 2004 14:16:32
-0000 1.20
+++ java/org/apache/commons/math/linear/RealMatrixImpl.java 25 May 2004 21:22:02
-0000
@@ -42,6 +42,9 @@
*/
public class RealMatrixImpl implements RealMatrix, Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = 4237564493130426188L;
+
/** Entries of the matrix */
private double data[][] = null;
Index: java/org/apache/commons/math/random/EmpiricalDistributionImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/random/EmpiricalDistributionImpl.java,v
retrieving revision 1.19
diff -u -r1.19 EmpiricalDistributionImpl.java
--- java/org/apache/commons/math/random/EmpiricalDistributionImpl.java 26 Apr 2004
19:15:48 -0000 1.19
+++ java/org/apache/commons/math/random/EmpiricalDistributionImpl.java 25 May 2004
21:22:02 -0000
@@ -57,6 +57,8 @@
*/
public class EmpiricalDistributionImpl implements Serializable, EmpiricalDistribution
{
+ /** Serializable version identifier */
+ static final long serialVersionUID = -6773236347582113490L;
/** List of DescriptiveStatistics objects characterizing the bins */
private ArrayList binStats = null;
@@ -386,4 +388,7 @@
public boolean isLoaded() {
return loaded;
}
+
+
+
}
Index: java/org/apache/commons/math/random/RandomDataImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/random/RandomDataImpl.java,v
retrieving revision 1.13
diff -u -r1.13 RandomDataImpl.java
--- java/org/apache/commons/math/random/RandomDataImpl.java 11 Apr 2004 19:00:45
-0000 1.13
+++ java/org/apache/commons/math/random/RandomDataImpl.java 25 May 2004 21:22:02
-0000
@@ -70,6 +70,9 @@
*/
public class RandomDataImpl implements RandomData, Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = -626730818244969716L;
+
/** underlying random number generator */
private Random rand = null;
Index: java/org/apache/commons/math/special/Beta.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/special/Beta.java,v
retrieving revision 1.19
diff -u -r1.19 Beta.java
--- java/org/apache/commons/math/special/Beta.java 27 Apr 2004 04:37:59 -0000
1.19
+++ java/org/apache/commons/math/special/Beta.java 25 May 2004 21:22:02 -0000
@@ -27,6 +27,10 @@
* @version $Revision: 1.19 $ $Date: 2004/04/27 04:37:59 $
*/
public class Beta implements Serializable {
+
+ /** Serializable version identifier */
+ static final long serialVersionUID = -3833485397404128220L;
+
/** Maximum allowed numerical error. */
private static final double DEFAULT_EPSILON = 10e-9;
Index: java/org/apache/commons/math/special/Erf.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/special/Erf.java,v
retrieving revision 1.1
diff -u -r1.1 Erf.java
--- java/org/apache/commons/math/special/Erf.java 5 May 2004 19:54:58 -0000
1.1
+++ java/org/apache/commons/math/special/Erf.java 25 May 2004 21:22:02 -0000
@@ -27,6 +27,9 @@
*/
public class Erf implements Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = 490960015010326571L;
+
/**
* Default constructor. Prohibit instantiation.
*/
Index: java/org/apache/commons/math/special/Gamma.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/special/Gamma.java,v
retrieving revision 1.18
diff -u -r1.18 Gamma.java
--- java/org/apache/commons/math/special/Gamma.java 23 Apr 2004 19:30:47 -0000
1.18
+++ java/org/apache/commons/math/special/Gamma.java 25 May 2004 21:22:02 -0000
@@ -27,6 +27,10 @@
* @version $Revision: 1.18 $ $Date: 2004/04/23 19:30:47 $
*/
public class Gamma implements Serializable{
+
+ /** Serializable version identifier */
+ static final long serialVersionUID = -2864920316163123965L;
+
/** Maximum allowed numerical error. */
private static final double DEFAULT_EPSILON = 10e-9;
Index: java/org/apache/commons/math/stat/Frequency.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/stat/Frequency.java,v
retrieving revision 1.20
diff -u -r1.20 Frequency.java
--- java/org/apache/commons/math/stat/Frequency.java 19 May 2004 14:16:32 -0000
1.20
+++ java/org/apache/commons/math/stat/Frequency.java 25 May 2004 21:22:02 -0000
@@ -22,7 +22,7 @@
import org.apache.commons.collections.ComparatorUtils;
import org.apache.commons.collections.SortedBag;
-import org.apache.commons.collections.bag.TreeBag;
+import org.apache.commons.collections.TreeBag;
/**
* Maintains a frequency distribution.
@@ -36,6 +36,9 @@
*/
public class Frequency implements Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = -3845586908418844111L;
+
/** underlying collection */
private SortedBag freqTable = null;
Index: java/org/apache/commons/math/stat/univariate/DescriptiveStatistics.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/stat/univariate/DescriptiveStatistics.java,v
retrieving revision 1.5
diff -u -r1.5 DescriptiveStatistics.java
--- java/org/apache/commons/math/stat/univariate/DescriptiveStatistics.java 23 May
2004 00:56:15 -0000 1.5
+++ java/org/apache/commons/math/stat/univariate/DescriptiveStatistics.java 25 May
2004 21:22:02 -0000
@@ -15,8 +15,6 @@
*/
package org.apache.commons.math.stat.univariate;
-import java.io.Serializable;
-
import org.apache.commons.discovery.tools.DiscoverClass;
@@ -25,8 +23,8 @@
*
* @version $Revision: 1.5 $ $Date: 2004/05/23 00:56:15 $
*/
-public abstract class DescriptiveStatistics implements Serializable,
StatisticalSummary {
-
+public abstract class DescriptiveStatistics implements StatisticalSummary {
+
/**
* Create an instance of a <code>DescriptiveStatistics</code>
* @param cls the type of <code>DescriptiveStatistics</code> object to
Index: java/org/apache/commons/math/stat/univariate/DescriptiveStatisticsImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/stat/univariate/DescriptiveStatisticsImpl.java,v
retrieving revision 1.5
diff -u -r1.5 DescriptiveStatisticsImpl.java
--- java/org/apache/commons/math/stat/univariate/DescriptiveStatisticsImpl.java 23 May
2004 00:30:01 -0000 1.5
+++ java/org/apache/commons/math/stat/univariate/DescriptiveStatisticsImpl.java 25 May
2004 21:22:02 -0000
@@ -27,6 +27,9 @@
*/
public class DescriptiveStatisticsImpl extends AbstractDescriptiveStatistics
implements Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = -1868088725461221010L;
+
/** hold the window size **/
protected int windowSize;
Index: java/org/apache/commons/math/stat/univariate/SummaryStatistics.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/stat/univariate/SummaryStatistics.java,v
retrieving revision 1.5
diff -u -r1.5 SummaryStatistics.java
--- java/org/apache/commons/math/stat/univariate/SummaryStatistics.java 19 May 2004
14:16:31 -0000 1.5
+++ java/org/apache/commons/math/stat/univariate/SummaryStatistics.java 25 May 2004
21:22:02 -0000
@@ -15,8 +15,6 @@
*/
package org.apache.commons.math.stat.univariate;
-import java.io.Serializable;
-
import org.apache.commons.discovery.tools.DiscoverClass;
/**
@@ -24,7 +22,7 @@
*
* @version $Revision: 1.5 $ $Date: 2004/05/19 14:16:31 $
*/
-public abstract class SummaryStatistics implements Serializable, StatisticalSummary {
+public abstract class SummaryStatistics implements StatisticalSummary {
/**
* Create an instance of a <code>SummaryStatistics</code>
Index: java/org/apache/commons/math/stat/univariate/SummaryStatisticsImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/stat/univariate/SummaryStatisticsImpl.java,v
retrieving revision 1.2
diff -u -r1.2 SummaryStatisticsImpl.java
--- java/org/apache/commons/math/stat/univariate/SummaryStatisticsImpl.java 27 Apr
2004 04:37:59 -0000 1.2
+++ java/org/apache/commons/math/stat/univariate/SummaryStatisticsImpl.java 25 May
2004 21:22:02 -0000
@@ -15,6 +15,7 @@
*/
package org.apache.commons.math.stat.univariate;
+import java.io.Serializable;
import org.apache.commons.math.stat.univariate.moment.SecondMoment;
import org.apache.commons.math.stat.univariate.moment.GeometricMean;
import org.apache.commons.math.stat.univariate.moment.Mean;
@@ -30,7 +31,10 @@
*
* @version $Revision: 1.2 $ $Date: 2004/04/27 04:37:59 $
*/
-public class SummaryStatisticsImpl extends SummaryStatistics {
+public class SummaryStatisticsImpl extends SummaryStatistics implements Serializable {
+
+ /** Serializable version identifier */
+ static final long serialVersionUID = 8787174276883311692L;
/** count of values that have been added */
protected long n = 0;
Index: java/org/apache/commons/math/util/ContinuedFraction.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/util/ContinuedFraction.java,v
retrieving revision 1.12
diff -u -r1.12 ContinuedFraction.java
--- java/org/apache/commons/math/util/ContinuedFraction.java 26 Apr 2004 20:47:07
-0000 1.12
+++ java/org/apache/commons/math/util/ContinuedFraction.java 25 May 2004 21:22:02
-0000
@@ -35,6 +35,10 @@
* @version $Revision: 1.12 $ $Date: 2004/04/26 20:47:07 $
*/
public abstract class ContinuedFraction implements Serializable {
+
+ /** Serializable version identifier */
+ static final long serialVersionUID = 1768555336266158242L;
+
/** Maximum allowed numerical error. */
private static final double DEFAULT_EPSILON = 10e-9;
Index: java/org/apache/commons/math/util/DefaultTransformer.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/util/DefaultTransformer.java,v
retrieving revision 1.13
diff -u -r1.13 DefaultTransformer.java
--- java/org/apache/commons/math/util/DefaultTransformer.java 21 Mar 2004 21:57:19
-0000 1.13
+++ java/org/apache/commons/math/util/DefaultTransformer.java 25 May 2004 21:22:02
-0000
@@ -30,6 +30,9 @@
*/
public class DefaultTransformer implements NumberTransformer, Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = 4019938025047800455L;
+
/**
* @param o the object that gets transformed.
* @return a double primitive representation of the Object o.
Index: java/org/apache/commons/math/util/TransformerMap.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/java/org/apache/commons/math/util/TransformerMap.java,v
retrieving revision 1.12
diff -u -r1.12 TransformerMap.java
--- java/org/apache/commons/math/util/TransformerMap.java 23 Apr 2004 19:50:27
-0000 1.12
+++ java/org/apache/commons/math/util/TransformerMap.java 25 May 2004 21:22:02
-0000
@@ -32,6 +32,9 @@
*/
public class TransformerMap implements NumberTransformer, Serializable {
+ /** Serializable version identifier */
+ static final long serialVersionUID = -942772950698439883L;
+
/**
* A default Number Transformer for Numbers and numeric Strings.
*/
Index: test/org/apache/commons/math/analysis/BisectionSolverTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/test/org/apache/commons/math/analysis/BisectionSolverTest.java,v
retrieving revision 1.10
diff -u -r1.10 BisectionSolverTest.java
--- test/org/apache/commons/math/analysis/BisectionSolverTest.java 18 Feb 2004
03:24:20 -0000 1.10
+++ test/org/apache/commons/math/analysis/BisectionSolverTest.java 25 May 2004
21:22:02 -0000
@@ -18,6 +18,8 @@
package org.apache.commons.math.analysis;
import org.apache.commons.math.MathException;
+import org.apache.commons.math.TestUtils;
+import org.apache.commons.math.stat.univariate.DescriptiveStatistics;
import junit.framework.TestCase;
@@ -209,4 +211,91 @@
fail(ex.getMessage());
}
}
+
+ /**
+ * Test Serialization and Recovery
+ */
+ public void testSerialization() {
+
+ /* testQuinticZero */
+ try {
+ UnivariateRealFunction f =
(UnivariateRealFunction)TestUtils.serializeAndRecover(new QuinticFunction());
+ double result;
+
+ UnivariateRealSolver solver =
(UnivariateRealSolver)TestUtils.serializeAndRecover(new BisectionSolver(f));
+ UnivariateRealSolver solver2 =
(UnivariateRealSolver)TestUtils.serializeAndRecover(solver);
+ result = solver.solve(-0.2, 0.2);
+ assertEquals(result, 0, solver.getAbsoluteAccuracy());
+ assertEquals(solver2.solve(-0.2, 0.2), result,
solver2.getAbsoluteAccuracy());
+
+ result = solver.solve(-0.1, 0.3);
+ assertEquals(result, 0, solver.getAbsoluteAccuracy());
+ assertEquals(solver2.solve(-0.1, 0.3), result,
solver2.getAbsoluteAccuracy());
+
+ result = solver.solve(-0.3, 0.45);
+ assertEquals(result, 0, solver.getAbsoluteAccuracy());
+ assertEquals(solver2.solve(-0.3, 0.45), result,
solver2.getAbsoluteAccuracy());
+
+ result = solver.solve(0.3, 0.7);
+ assertEquals(result, 0.5, solver.getAbsoluteAccuracy());
+ assertEquals(solver2.solve(0.3, 0.7), result,
solver2.getAbsoluteAccuracy());
+
+ result = solver.solve(0.2, 0.6);
+ assertEquals(result, 0.5, solver.getAbsoluteAccuracy());
+ assertEquals(solver2.solve(0.2, 0.6), result,
solver2.getAbsoluteAccuracy());
+
+ result = solver.solve(0.05, 0.95);
+ assertEquals(result, 0.5, solver.getAbsoluteAccuracy());
+ assertEquals(solver2.solve(0.05, 0.95), result,
solver2.getAbsoluteAccuracy());
+
+ result = solver.solve(0.85, 1.25);
+ assertEquals(result, 1.0, solver.getAbsoluteAccuracy());
+ assertEquals(solver2.solve(0.85, 1.25), result,
solver2.getAbsoluteAccuracy());
+
+ result = solver.solve(0.8, 1.2);
+ assertEquals(result, 1.0, solver.getAbsoluteAccuracy());
+ assertEquals(solver2.solve(0.8, 1.2), result,
solver2.getAbsoluteAccuracy());
+
+ result = solver.solve(0.85, 1.75);
+ assertEquals(result, 1.0, solver.getAbsoluteAccuracy());
+ assertEquals(solver2.solve(0.85, 1.75), result,
solver2.getAbsoluteAccuracy());
+
+ result = solver.solve(0.55, 1.45);
+ assertEquals(result, 1.0, solver.getAbsoluteAccuracy());
+ assertEquals(solver2.solve(0.55, 1.45), result,
solver2.getAbsoluteAccuracy());
+
+ result = solver.solve(0.85, 5);
+ assertEquals(result, 1.0, solver.getAbsoluteAccuracy());
+ assertEquals(solver2.solve(0.85, 5), result,
solver2.getAbsoluteAccuracy());
+
+ } catch(MathException ex){
+ fail(ex.getMessage());
+ }
+
+ /* Test Reset */
+ try{
+ double newValue = 1.0e-2;
+ UnivariateRealFunction f =
(UnivariateRealFunction)TestUtils.serializeAndRecover(new QuinticFunction());
+ UnivariateRealSolver solver = new BisectionSolver(f);
+
+ double oldValue = solver.getRelativeAccuracy();
+ solver.setRelativeAccuracy(newValue);
+ solver.resetRelativeAccuracy();
+ assertEquals(oldValue, solver.getRelativeAccuracy(), 1.0e-2);
+
+ UnivariateRealSolver solver2 =
(UnivariateRealSolver)TestUtils.serializeAndRecover(solver);
+
+ assertEquals(oldValue, solver2.getRelativeAccuracy(), 1.0e-2);
+
+ solver2.setRelativeAccuracy(newValue);
+ solver2.resetRelativeAccuracy();
+
+ assertEquals(oldValue, solver2.getRelativeAccuracy(), 1.0e-2);
+
+ } catch(MathException ex){
+ fail(ex.getMessage());
+ }
+
+ }
+
}
Index: test/org/apache/commons/math/analysis/QuinticFunction.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/math/src/test/org/apache/commons/math/analysis/QuinticFunction.java,v
retrieving revision 1.12
diff -u -r1.12 QuinticFunction.java
--- test/org/apache/commons/math/analysis/QuinticFunction.java 8 Apr 2004 21:19:17
-0000 1.12
+++ test/org/apache/commons/math/analysis/QuinticFunction.java 25 May 2004 21:22:02
-0000
@@ -15,6 +15,8 @@
*/
package org.apache.commons.math.analysis;
+import java.io.Serializable;
+
import org.apache.commons.math.MathException;
/**
@@ -22,7 +24,9 @@
*
* @version $Revision: 1.12 $ $Date: 2004/04/08 21:19:17 $
*/
-public class QuinticFunction implements DifferentiableUnivariateRealFunction {
+public class QuinticFunction implements DifferentiableUnivariateRealFunction,
Serializable {
+
+ static final long serialVersionUID = -8866263034920607152L;
/* Evaluate quintic.
* @see org.apache.commons.math.UnivariateRealFunction#value(double)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]