You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by lu...@apache.org on 2007/02/28 21:25:00 UTC

svn commit: r512949 - in /jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math: ./ estimation/ ode/ stat/descriptive/moment/

Author: luc
Date: Wed Feb 28 12:24:59 2007
New Revision: 512949

URL: http://svn.apache.org/viewvc?view=rev&rev=512949
Log:
fixed javadoc errors

Modified:
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/FunctionEvaluationException.java
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/MaxIterationsExceededException.java
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/estimation/package.html
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/AbstractStepInterpolator.java
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/DummyStepInterpolator.java
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/FirstOrderDifferentialEquations.java
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/SecondOrderDifferentialEquations.java
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/package.html
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/VectorialCovariance.java
    jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/VectorialMean.java

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/FunctionEvaluationException.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/FunctionEvaluationException.java?view=diff&rev=512949&r1=512948&r2=512949
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/FunctionEvaluationException.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/FunctionEvaluationException.java Wed Feb 28 12:24:59 2007
@@ -50,7 +50,7 @@
      * 
      * @param argument  the failing function argument 
      * @param message  the exception message text
-     * @deprecated as of 1.2, replaced by {@link #FunctionEvaluationException(double, String, Object[])
+     * @deprecated as of 1.2, replaced by {@link #FunctionEvaluationException(double, String, Object[])}
      */
     public FunctionEvaluationException(double argument, String message) {
         super(message);

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/MaxIterationsExceededException.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/MaxIterationsExceededException.java?view=diff&rev=512949&r1=512948&r2=512949
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/MaxIterationsExceededException.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/MaxIterationsExceededException.java Wed Feb 28 12:24:59 2007
@@ -41,7 +41,7 @@
     /**
      * Constructs an exception with specified formatted detail message.
      * Message formatting is delegated to {@link java.text.MessageFormat}.
-     * @param argument  the failing function argument 
+     * @param maxIterations the exceeded maximal number of iterations
      * @param pattern format specifier
      * @param arguments format arguments
      */

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/estimation/package.html
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/estimation/package.html?view=diff&rev=512949&r1=512948&r2=512949
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/estimation/package.html (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/estimation/package.html Wed Feb 28 12:24:59 2007
@@ -20,33 +20,19 @@
 put in a bound state by the user.</p>
  
 <p>This package provides the {@link
-org.spaceroots.mantissa.estimation.EstimatedParameter EstimatedParameter} class to
+org.apache.commons.math.estimation.EstimatedParameter EstimatedParameter} class to
 represent each estimated parameter, and the {@link
-org.spaceroots.mantissa.estimation.WeightedMeasurement WeightedMeasurement} abstract
+org.apache.commons.math.estimation.WeightedMeasurement WeightedMeasurement} abstract
 class the user can extend to define its measurements. All parameters and measurements
-are then provided to some {@link org.spaceroots.mantissa.estimation.Estimator
+are then provided to some {@link org.apache.commons.math.estimation.Estimator
 Estimator} packed together in an {@link
-org.spaceroots.mantissa.estimation.EstimationProblem EstimationProblem} instance
+org.apache.commons.math.estimation.EstimationProblem EstimationProblem} instance
 which acts only as a container. The package provides two common estimators for
 weighted least squares problems, one based on the {@link
-org.spaceroots.mantissa.estimation.GaussNewtonEstimator Gauss-Newton} method and the
+org.apache.commons.math.estimation.GaussNewtonEstimator Gauss-Newton} method and the
 other one based on the {@link
-org.spaceroots.mantissa.estimation.LevenbergMarquardtEstimator Levenberg-Marquardt}
+org.apache.commons.math.estimation.LevenbergMarquardtEstimator Levenberg-Marquardt}
 method.</p>
 
-<p>The class diagram for the public classes of this package is displayed below. The
-orange boxes <code>UserProblem</code>, <code>UserFirstMeasurementType</code> and
-<code>UserSecondMeasurementType</code> are exemple of what the user should create to
-use this package: implement his own problem and measurement types using the {@link
-org.spaceroots.mantissa.estimation.EstimationProblem} interface and {@link
-org.spaceroots.mantissa.estimation.WeightedMeasurement} abstract class, and then use
-one of the provided estimators (for example {@link
-org.spaceroots.mantissa.estimation.GaussNewtonEstimator} or {@link
-org.spaceroots.mantissa.estimation.LevenbergMarquardtEstimator}) to solve it. The
-white boxes are the interfaces and classes already provided by the library.</p>
-
-<img src="doc-files/org_spaceroots_mantissa_estimation_classes.png" />
-
-@author L. Maisonobe
 </body>
 </html>

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/AbstractStepInterpolator.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/AbstractStepInterpolator.java?view=diff&rev=512949&r1=512948&r2=512949
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/AbstractStepInterpolator.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/AbstractStepInterpolator.java Wed Feb 28 12:24:59 2007
@@ -324,15 +324,14 @@
    * finalize the instance, then copy this finalized instance into a
    * new object that can be kept.</p>
 
-   * <p>This method calls the protected {@link #doFinalize doFinalize}
-   * method if it has never been called during this step and set a
-   * flag indicating that it has been called once. It is the {@link
-   * #doFinalize doFinalize} method which should perform the
-   * evaluations. This wrapping prevents from calling {@link
-   * #doFinalize doFinalize} several times and hence evaluating the
-   * differential equations too often. Therefore, subclasses are not
-   * allowed not reimplement it, they should rather reimplement {@link
-   * #doFinalize doFinalize}.</p>
+   * <p>This method calls the protected <code>doFinalize</code> method
+   * if it has never been called during this step and set a flag
+   * indicating that it has been called once. It is the <code>
+   * doFinalize</code> method which should perform the evaluations.
+   * This wrapping prevents from calling <code>doFinalize</code> several
+   * times and hence evaluating the differential equations too often.
+   * Therefore, subclasses are not allowed not reimplement it, they
+   * should rather reimplement <code>doFinalize</code>.</p>
 
    * @throws DerivativeException this exception is propagated to the
    * caller if the underlying user function triggers one

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/DummyStepInterpolator.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/DummyStepInterpolator.java?view=diff&rev=512949&r1=512948&r2=512949
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/DummyStepInterpolator.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/DummyStepInterpolator.java Wed Feb 28 12:24:59 2007
@@ -41,10 +41,10 @@
 
   /** Simple constructor.
    * This constructor builds an instance that is not usable yet, the
-   * {@link AbstractStepInterpolator#reinitialize} method should be called
-   * before using the instance in order to initialize the internal arrays. This
-   * constructor is used only in order to delay the initialization in
-   * some cases. As an example, the {@link
+   * <code>AbstractStepInterpolator.reinitialize</code> protected method
+   * should be called before using the instance in order to initialize
+   * the internal arrays. This constructor is used only in order to delay
+   * the initialization in some cases. As an example, the {@link
    * RungeKuttaFehlbergIntegrator} uses the prototyping design pattern
    * to create the step interpolators by cloning an uninitialized
    * model and latter initializing the copy.

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/FirstOrderDifferentialEquations.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/FirstOrderDifferentialEquations.java?view=diff&rev=512949&r1=512948&r2=512949
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/FirstOrderDifferentialEquations.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/FirstOrderDifferentialEquations.java Wed Feb 28 12:24:59 2007
@@ -39,7 +39,6 @@
  * @see FirstOrderIntegrator
  * @see FirstOrderConverter
  * @see SecondOrderDifferentialEquations
- * @see org.spaceroots.mantissa.utilities.ArraySliceMappable
  *
  * @version $Id: FirstOrderDifferentialEquations.java 1705 2006-09-17 19:57:39Z luc $
  * @author L. Maisonobe

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/SecondOrderDifferentialEquations.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/SecondOrderDifferentialEquations.java?view=diff&rev=512949&r1=512948&r2=512949
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/SecondOrderDifferentialEquations.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/SecondOrderDifferentialEquations.java Wed Feb 28 12:24:59 2007
@@ -40,7 +40,6 @@
  * @see SecondOrderIntegrator
  * @see FirstOrderConverter
  * @see FirstOrderDifferentialEquations
- * @see org.spaceroots.mantissa.utilities.ArraySliceMappable
 
  * @version $Id: SecondOrderDifferentialEquations.java 1705 2006-09-17 19:57:39Z luc $
  * @author L. Maisonobe

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/package.html
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/package.html?view=diff&rev=512949&r1=512948&r2=512949
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/package.html (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/ode/package.html Wed Feb 28 12:24:59 2007
@@ -4,9 +4,10 @@
 
 <p>
 This package solves Initial Value Problems of the form
-<code>y'=f(t,y)</code> with <code>t0</code> and <code>y(t0)=y0</code>
-known. The provided integrators compute an estimate of
-<code>y(t)</code> from <code>t=t0</code> to <code>t=t1</code>.
+<code>y'=f(t,y)</code> with <code>t<sub>0</sub></code> and
+<code>y(t<sub>0</sub>)=y<sub>0</sub></code> known. The provided
+integrators compute an estimate of <code>y(t)</code> from
+<code>t=t<sub>0</sub></code> to <code>t=t<sub>1</sub></code>.
 </p>
 
 <p>
@@ -14,7 +15,7 @@
 computing the state vector at discrete times, they also provide a
 cheap mean to get the state between the time steps. They do so through
 classes extending the {@link
-org.spaceroots.mantissa.ode.StepInterpolator StepInterpolator}
+org.apache.commons.math.ode.StepInterpolator StepInterpolator}
 abstract class, which are made available to the user at the end of
 each step.
 </p>
@@ -23,7 +24,7 @@
 All integrators handle multiple switching functions. This means that
 the integrator can be driven by discrete events (occurring when the
 signs of user-supplied {@link
-org.spaceroots.mantissa.ode.SwitchingFunction switching functions}
+org.apache.commons.math.ode.SwitchingFunction switching functions}
 change). The steps are shortened as needed to ensure the events occur
 at step boundaries (even if the integrator is a fixed-step
 integrator). When the events are triggered, integration can be stopped
@@ -44,42 +45,34 @@
 <p>
 The user should describe his problem in his own classes
 (<code>UserProblem</code> in the diagram below) which should implement
-the {@link org.spaceroots.mantissa.ode.FirstOrderDifferentialEquations
+the {@link org.apache.commons.math.ode.FirstOrderDifferentialEquations
 FirstOrderDifferentialEquations} interface. Then he should pass it to
 the integrator he prefers among all the classes that implement the
-{@link org.spaceroots.mantissa.ode.FirstOrderIntegrator
-FirstOrderIntegrator} interface. In order to simplify the mapping
-between domain objects and the flat arrays needed in order to
-implement the {@link
-org.spaceroots.mantissa.ode.FirstOrderDifferentialEquations
-FirstOrderDifferentialEquations} interface, the {@link
-org.spaceroots.mantissa.utilities.ArraySliceMappable
-ArraySliceMappable} interface and {@link
-org.spaceroots.mantissa.utilities.ArrayMapper ArrayMapper} class
-provided by the utilities package can be used.
+{@link org.apache.commons.math.ode.FirstOrderIntegrator
+FirstOrderIntegrator} interface.
 </p>
 
 <p>
 The solution of the integration problem is provided by two means. The
 first one is aimed towards simple use: the state vector at the end of
 the integration process is copied in the <code>y</code> array of the
-{@link org.spaceroots.mantissa.ode.FirstOrderIntegrator#integrate
+{@link org.apache.commons.math.ode.FirstOrderIntegrator#integrate
 FirstOrderIntegrator.integrate} method. The second one should be used
 when more in-depth information is needed throughout the integration
 process. The user can register an object implementing the {@link
-org.spaceroots.mantissa.ode.StepHandler StepHandler} interface or a
-{@link org.spaceroots.mantissa.ode.StepNormalizer StepNormalizer}
+org.apache.commons.math.ode.StepHandler StepHandler} interface or a
+{@link org.apache.commons.math.ode.StepNormalizer StepNormalizer}
 object wrapping a user-specified object implementing the {@link
-org.spaceroots.mantissa.ode.FixedStepHandler FixedStepHandler}
+org.apache.commons.math.ode.FixedStepHandler FixedStepHandler}
 interface into the integrator before calling the {@link
-org.spaceroots.mantissa.ode.FirstOrderIntegrator#integrate
+org.apache.commons.math.ode.FirstOrderIntegrator#integrate
 FirstOrderIntegrator.integrate} method. The user object will be called
 appropriately during the integration process, allowing the user to
 process intermediate results. The default step handler does nothing.
 </p>
 
 <p>
-{@link org.spaceroots.mantissa.ode.ContinuousOutputModel
+{@link org.apache.commons.math.ode.ContinuousOutputModel
 ContinuousOutputModel} is a special-purpose step handler that is able
 to store all steps and to provide transparent access to any
 intermediate result once the integration is over. An important feature
@@ -94,10 +87,10 @@
 
 <p>
 Other default implementations of the {@link
-org.spaceroots.mantissa.ode.StepHandler StepHandler} interface are
+org.apache.commons.math.ode.StepHandler StepHandler} interface are
 available for general needs ({@link
-org.spaceroots.mantissa.ode.DummyStepHandler DummyStepHandler}, {@link
-org.spaceroots.mantissa.ode.StepNormalizer StepNormalizer}) and custom
+org.apache.commons.math.ode.DummyStepHandler DummyStepHandler}, {@link
+org.apache.commons.math.ode.StepNormalizer StepNormalizer}) and custom
 implementations can be developped for specific needs. As an example,
 if an application is to be completely driven by the integration
 process, then most of the application code will be run inside a step
@@ -109,14 +102,14 @@
 creation time. The more efficient integrators use variable steps that
 are handled internally in order to control the integration error with
 respect to a specified accuracy (these integrators extend the {@link
-org.spaceroots.mantissa.ode.AdaptiveStepsizeIntegrator
+org.apache.commons.math.ode.AdaptiveStepsizeIntegrator
 AdaptiveStepsizeIntegrator} abstract class). In this case, the step
 handler which is called after each successful step shows up the
 variable stepsize. The {@link
-org.spaceroots.mantissa.ode.StepNormalizer StepNormalizer} class can
+org.apache.commons.math.ode.StepNormalizer StepNormalizer} class can
 be used to convert the variable stepsize into a fixed stepsize that
 can be handled by classes implementing the {@link
-org.spaceroots.mantissa.ode.FixedStepHandler FixedStepHandler}
+org.apache.commons.math.ode.FixedStepHandler FixedStepHandler}
 interface. Adaptive stepsize integrators can automatically compute the
 initial stepsize by themselves, however the user can specify it if he
 prefers to retain full control over the integration or if the
@@ -127,43 +120,23 @@
 <table border="1" align="center">
 <tr BGCOLOR="#CCCCFF"><td colspan=2><font size="+2">Fixed Step Integrators</font></td></tr>
 <tr BGCOLOR="#EEEEFF"><font size="+1"><td>Name</td><td>Order</td></font></tr>
-<tr><td>{@link org.spaceroots.mantissa.ode.EulerIntegrator Euler}</td><td>1</td></tr>
-<tr><td>{@link org.spaceroots.mantissa.ode.MidpointIntegrator Midpoint}</td><td>2</td></tr>
-<tr><td>{@link org.spaceroots.mantissa.ode.ClassicalRungeKuttaIntegrator Classical Runge-Kutta}</td><td>4</td></tr>
-<tr><td>{@link org.spaceroots.mantissa.ode.GillIntegrator Gill}</td><td>4</td></tr>
-<tr><td>{@link org.spaceroots.mantissa.ode.ThreeEighthesIntegrator 3/8}</td><td>4</td></tr>
+<tr><td>{@link org.apache.commons.math.ode.EulerIntegrator Euler}</td><td>1</td></tr>
+<tr><td>{@link org.apache.commons.math.ode.MidpointIntegrator Midpoint}</td><td>2</td></tr>
+<tr><td>{@link org.apache.commons.math.ode.ClassicalRungeKuttaIntegrator Classical Runge-Kutta}</td><td>4</td></tr>
+<tr><td>{@link org.apache.commons.math.ode.GillIntegrator Gill}</td><td>4</td></tr>
+<tr><td>{@link org.apache.commons.math.ode.ThreeEighthesIntegrator 3/8}</td><td>4</td></tr>
 </table>
 </p>
 
 <table border="1" align="center">
 <tr BGCOLOR="#CCCCFF"><td colspan=3><font size="+2">Adaptive Stepsize Integrators</font></td></tr>
 <tr BGCOLOR="#EEEEFF"><font size="+1"><td>Name</td><td>Integration Order</td><td>Error Estimation Order</td></font></tr>
-<tr><td>{@link org.spaceroots.mantissa.ode.HighamHall54Integrator Higham and Hall}</td><td>5</td><td>4</td></tr>
-<tr><td>{@link org.spaceroots.mantissa.ode.DormandPrince54Integrator Dormand-Prince 5(4)}</td><td>5</td><td>4</td></tr>
-<tr><td>{@link org.spaceroots.mantissa.ode.DormandPrince853Integrator Dormand-Prince 8(5,3)}</td><td>8</td><td>5 and 3</td></tr>
-<tr><td>{@link org.spaceroots.mantissa.ode.GraggBulirschStoerIntegrator Gragg-Bulirsch-Stoer}</td><td>variable (up to 18 by default)</td><td>variable</td></tr>
+<tr><td>{@link org.apache.commons.math.ode.HighamHall54Integrator Higham and Hall}</td><td>5</td><td>4</td></tr>
+<tr><td>{@link org.apache.commons.math.ode.DormandPrince54Integrator Dormand-Prince 5(4)}</td><td>5</td><td>4</td></tr>
+<tr><td>{@link org.apache.commons.math.ode.DormandPrince853Integrator Dormand-Prince 8(5,3)}</td><td>8</td><td>5 and 3</td></tr>
+<tr><td>{@link org.apache.commons.math.ode.GraggBulirschStoerIntegrator Gragg-Bulirsch-Stoer}</td><td>variable (up to 18 by default)</td><td>variable</td></tr>
 </table>
 </p>
 
-<p>
-The class diagram below shows a typical example use of this
-package. The orange boxes are the classes the user should develop, the
-white boxes are the interfaces and classes already provided by the
-library. The main application build an ODE problem that involve
-several domain objects (for example the orbit of a spacecraft and its
-attitude) which are mapped into one flat array representing the state
-vector using an ArrayMapper object. The UserProblem object is provided
-by the main application to an integrator (in this exemple the
-Gragg-Bulirsch-Stoer integrator has been chosen) together with a step
-handler (in this exemple the already existing ContinuousOutputModel
-class has been chosen). In this case, the user waits until the end of
-integration before continuing his own processing, and uses the
-ContinuousOutputModel object to navigate throughout the integration
-interval once it has been filled up by the integrator.
-</p>
-
-<img src="doc-files/org_spaceroots_mantissa_ode_classes.png" />
-
-@author L. Maisonobe
 </body>
 </html>

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/VectorialCovariance.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/VectorialCovariance.java?view=diff&rev=512949&r1=512948&r2=512949
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/VectorialCovariance.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/VectorialCovariance.java Wed Feb 28 12:24:59 2007
@@ -51,7 +51,7 @@
 
     /**
      * Add a new vector to the sample.
-     * @param vector vector to add
+     * @param v vector to add
      * @exception DimensionMismatchException if the vector does not have the right dimension
      */
     public void increment(double[] v) throws DimensionMismatchException {

Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/VectorialMean.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/VectorialMean.java?view=diff&rev=512949&r1=512948&r2=512949
==============================================================================
--- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/VectorialMean.java (original)
+++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/descriptive/moment/VectorialMean.java Wed Feb 28 12:24:59 2007
@@ -44,7 +44,7 @@
 
     /**
      * Add a new vector to the sample.
-     * @param vector vector to add
+     * @param v vector to add
      * @exception DimensionMismatchException if the vector does not have the right dimension
      */
     public void increment(double[] v) throws DimensionMismatchException {



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org