Created "NullArgumentException" (subclass of "MathIllegalArgumentException").
Changed all occurrences of "createIllegalArgumentException" (in "MathRuntime")
to throw the new exception whenever a "null" is not allowed. Added a few
checks for null in "BigFraction.java".
Simplified "LocalizedFormats" enum.
Changed "ZeroNotAllowedException" to "ZeroException".


git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@982950 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Gilles Sadowski 2010-08-06 13:29:01 +00:00
parent d402f6b5e1
commit c15e80eba9
29 changed files with 229 additions and 168 deletions

View File

@ -20,6 +20,7 @@ import org.apache.commons.math.ConvergingAlgorithmImpl;
import org.apache.commons.math.MathRuntimeException; import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.analysis.UnivariateRealFunction; import org.apache.commons.math.analysis.UnivariateRealFunction;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.NullArgumentException;
/** /**
* Provide a default implementation for several generic functions. * Provide a default implementation for several generic functions.
@ -67,7 +68,7 @@ public abstract class UnivariateRealIntegratorImpl
throws IllegalArgumentException { throws IllegalArgumentException {
super(defaultMaximalIterationCount, 1.0e-15); super(defaultMaximalIterationCount, 1.0e-15);
if (f == null) { if (f == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_FUNCTION); throw new NullArgumentException(LocalizedFormats.FUNCTION);
} }
this.f = f; this.f = f;

View File

@ -22,6 +22,7 @@ import org.apache.commons.math.FunctionEvaluationException;
import org.apache.commons.math.MathRuntimeException; import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.analysis.UnivariateRealFunction; import org.apache.commons.math.analysis.UnivariateRealFunction;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.NullArgumentException;
/** /**
* Provide a default implementation for several functions useful to generic * Provide a default implementation for several functions useful to generic
@ -74,7 +75,7 @@ public abstract class UnivariateRealSolverImpl
final double defaultAbsoluteAccuracy) { final double defaultAbsoluteAccuracy) {
super(defaultMaximalIterationCount, defaultAbsoluteAccuracy); super(defaultMaximalIterationCount, defaultAbsoluteAccuracy);
if (f == null) { if (f == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_FUNCTION); throw new NullArgumentException(LocalizedFormats.FUNCTION);
} }
this.f = f; this.f = f;
this.defaultFunctionValueAccuracy = 1.0e-15; this.defaultFunctionValueAccuracy = 1.0e-15;

View File

@ -21,6 +21,7 @@ import org.apache.commons.math.ConvergenceException;
import org.apache.commons.math.MathRuntimeException; import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.analysis.UnivariateRealFunction; import org.apache.commons.math.analysis.UnivariateRealFunction;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.NullArgumentException;
/** /**
* Utility routines for {@link UnivariateRealSolver} objects. * Utility routines for {@link UnivariateRealSolver} objects.
@ -170,7 +171,7 @@ public class UnivariateRealSolverUtils {
FunctionEvaluationException { FunctionEvaluationException {
if (function == null) { if (function == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_FUNCTION); throw new NullArgumentException(LocalizedFormats.FUNCTION);
} }
if (maximumIterations <= 0) { if (maximumIterations <= 0) {
throw MathRuntimeException.createIllegalArgumentException( throw MathRuntimeException.createIllegalArgumentException(
@ -225,7 +226,7 @@ public class UnivariateRealSolverUtils {
*/ */
private static void setup(UnivariateRealFunction f) { private static void setup(UnivariateRealFunction f) {
if (f == null) { if (f == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_FUNCTION); throw new NullArgumentException(LocalizedFormats.FUNCTION);
} }
} }

View File

@ -26,6 +26,7 @@ import java.util.Locale;
import org.apache.commons.math.MathRuntimeException; import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.util.CompositeFormat; import org.apache.commons.math.util.CompositeFormat;
import org.apache.commons.math.exception.NullArgumentException;
/** /**
* Formats a Complex number in cartesian format "Re(c) + Im(c)i". 'i' can * Formats a Complex number in cartesian format "Re(c) + Im(c)i". 'i' can
@ -358,13 +359,11 @@ public class ComplexFormat extends CompositeFormat {
/** /**
* Modify the imaginaryFormat. * Modify the imaginaryFormat.
* @param imaginaryFormat The new imaginaryFormat value. * @param imaginaryFormat The new imaginaryFormat value.
* @throws IllegalArgumentException if <code>imaginaryFormat</code> is * @throws NullArgumentException if {@code imaginaryFormat} is {@code null}.
* <code>null</code>.
*/ */
public void setImaginaryFormat(NumberFormat imaginaryFormat) { public void setImaginaryFormat(NumberFormat imaginaryFormat) {
if (imaginaryFormat == null) { if (imaginaryFormat == null) {
throw MathRuntimeException.createIllegalArgumentException( throw new NullArgumentException(LocalizedFormats.IMAGINARY_FORMAT);
LocalizedFormats.NULL_IMAGINARY_FORMAT);
} }
this.imaginaryFormat = imaginaryFormat; this.imaginaryFormat = imaginaryFormat;
} }
@ -372,13 +371,11 @@ public class ComplexFormat extends CompositeFormat {
/** /**
* Modify the realFormat. * Modify the realFormat.
* @param realFormat The new realFormat value. * @param realFormat The new realFormat value.
* @throws IllegalArgumentException if <code>realFormat</code> is * @throws NullArgumentException if {@code realFormat} is {@code null}.
* <code>null</code>.
*/ */
public void setRealFormat(NumberFormat realFormat) { public void setRealFormat(NumberFormat realFormat) {
if (realFormat == null) { if (realFormat == null) {
throw MathRuntimeException.createIllegalArgumentException( throw new NullArgumentException(LocalizedFormats.REAL_FORMAT);
LocalizedFormats.NULL_REAL_FORMAT);
} }
this.realFormat = realFormat; this.realFormat = realFormat;
} }

View File

@ -145,11 +145,10 @@ public enum LocalizedFormats implements Localizable {
NEGATIVE_COMPLEX_MODULE("negative complex module {0}"), NEGATIVE_COMPLEX_MODULE("negative complex module {0}"),
NEGATIVE_ELEMENT_AT_2D_INDEX("element ({0}, {1}) is negative: {2}"), NEGATIVE_ELEMENT_AT_2D_INDEX("element ({0}, {1}) is negative: {2}"),
NEGATIVE_ELEMENT_AT_INDEX("element {0} is negative: {1}"), NEGATIVE_ELEMENT_AT_INDEX("element {0} is negative: {1}"),
NEGATIVE_LENGTH("length cannot be negative ({0})"),
NEGATIVE_NUMBER_OF_SUCCESSES("number of successes must be non-negative ({0})"), NEGATIVE_NUMBER_OF_SUCCESSES("number of successes must be non-negative ({0})"),
NEGATIVE_NUMBER_OF_TRIALS("number of trials must be non-negative ({0})"), NEGATIVE_NUMBER_OF_TRIALS("number of trials must be non-negative ({0})"),
NEGATIVE_ROBUSTNESS_ITERATIONS("the number of robustness iterations must be non-negative, but got {0}"), NEGATIVE_ROBUSTNESS_ITERATIONS("the number of robustness iterations must be non-negative, but got {0}"),
NEGATIVE_START_POSITION("start position cannot be negative ({0})"), START_POSITION("start position ({0})"), /* keep */
NON_CONVERGENT_CONTINUED_FRACTION("Continued fraction convergents failed to converge for value {0}"), NON_CONVERGENT_CONTINUED_FRACTION("Continued fraction convergents failed to converge for value {0}"),
NON_POSITIVE_MICROSPHERE_ELEMENTS("number of microsphere elements must be positive, but got {0}"), NON_POSITIVE_MICROSPHERE_ELEMENTS("number of microsphere elements must be positive, but got {0}"),
NON_POSITIVE_POLYNOMIAL_DEGREE("polynomial degree must be positive: degree={0}"), NON_POSITIVE_POLYNOMIAL_DEGREE("polynomial degree must be positive: degree={0}"),
@ -211,18 +210,19 @@ public enum LocalizedFormats implements Localizable {
NO_OPTIMUM_COMPUTED_YET("no optimum computed yet"), NO_OPTIMUM_COMPUTED_YET("no optimum computed yet"),
NO_RESULT_AVAILABLE("no result available"), NO_RESULT_AVAILABLE("no result available"),
NO_SUCH_MATRIX_ENTRY("no entry at indices ({0}, {1}) in a {2}x{3} matrix"), NO_SUCH_MATRIX_ENTRY("no entry at indices ({0}, {1}) in a {2}x{3} matrix"),
NULL_COVARIANCE_MATRIX("covariance matrix is null"), NULL_NOT_ALLOWED("null is not allowed"), /* keep */
NULL_DENOMINATOR("denominator is null"), COVARIANCE_MATRIX("covariance matrix"), /* keep */
NULL_DENOMINATOR_FORMAT("denominator format can not be null"), DENOMINATOR("denominator"), /* keep */
NULL_FRACTION("null fraction"), DENOMINATOR_FORMAT("denominator format"), /* keep */
NULL_FUNCTION("function is null"), FRACTION("fraction"), /* keep */
NULL_IMAGINARY_FORMAT("null imaginary format"), FUNCTION("function"), /* keep */
NULL_INPUT_ARRAY("input array is null"), IMAGINARY_FORMAT("imaginary format"), /* keep */
NULL_NUMERATOR("numerator is null"), INPUT_ARRAY("input array"), /* keep */
NULL_NUMERATOR_FORMAT("numerator format can not be null"), NUMERATOR("numerator"), /* keep */
NULL_OBJECT_TRANSFORMATION("Conversion Exception in Transformation, Object is null"), NUMERATOR_FORMAT("numerator format"), /* keep */
NULL_REAL_FORMAT("null real format"), OBJECT_TRANSFORMATION("conversion exception in transformation"), /* keep */
NULL_WHOLE_FORMAT("whole format can not be null"), REAL_FORMAT("real format"), /* keep */
WHOLE_FORMAT("whole format"), /* keep */
NUMBER_TOO_LARGE("{0} is larger than the maximum ({1})"), /* keep */ NUMBER_TOO_LARGE("{0} is larger than the maximum ({1})"), /* keep */
NUMBER_TOO_SMALL("{0} is smaller than the minimum ({1})"), /* keep */ NUMBER_TOO_SMALL("{0} is smaller than the minimum ({1})"), /* keep */
NUMBER_TOO_LARGE_BOUND_EXCLUDED("{0} is larger than, or equal to, the maximum ({1})"), /* keep */ NUMBER_TOO_LARGE_BOUND_EXCLUDED("{0} is larger than, or equal to, the maximum ({1})"), /* keep */

View File

@ -0,0 +1,47 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.math.exception;
/**
* All conditions checks that fail due to a {@code null} argument must throw
* this exception.
* This class is meant to signal a precondition violation ("null is an illegal
* argument") and so does not extend the standard {@code NullPointerException}.
* Proagation of {@code NullPointerException} from within Commons-Math is
* construed to be a bug.
*
* @since 2.2
* @version $Revision$ $Date$
*/
public class NullArgumentException extends MathIllegalArgumentException {
/** Serializable version Id. */
private static final long serialVersionUID = -6024911025449780478L;
/**
* Default constructor.
*/
public NullArgumentException() {
super(LocalizedFormats.NULL_NOT_ALLOWED);
}
/**
* @param specific Message pattern providing the specific context of
* the error.
*/
public NullArgumentException(Localizable specific) {
super(specific, LocalizedFormats.NULL_NOT_ALLOWED);
}
}

View File

@ -23,7 +23,7 @@ package org.apache.commons.math.exception;
* @since 2.2 * @since 2.2
* @version $Revision$ $Date$ * @version $Revision$ $Date$
*/ */
public class ZeroNotAllowedException extends MathIllegalNumberException { public class ZeroException extends MathIllegalNumberException {
/** Serializable version identifier */ /** Serializable version identifier */
private static final long serialVersionUID = -1960874856936000015L; private static final long serialVersionUID = -1960874856936000015L;
@ -31,7 +31,7 @@ public class ZeroNotAllowedException extends MathIllegalNumberException {
/** /**
* Construct the exception. * Construct the exception.
*/ */
public ZeroNotAllowedException() { public ZeroException() {
this(null); this(null);
} }
@ -40,8 +40,7 @@ public class ZeroNotAllowedException extends MathIllegalNumberException {
* *
* @param specific Specific contexte pattern . * @param specific Specific contexte pattern .
*/ */
public ZeroNotAllowedException(Localizable specific) { public ZeroException(Localizable specific) {
super(specific, LocalizedFormats.ZERO_NOT_ALLOWED, 0); super(specific, LocalizedFormats.ZERO_NOT_ALLOWED, 0);
} }
} }

View File

@ -23,7 +23,7 @@ import java.text.NumberFormat;
import java.text.ParsePosition; import java.text.ParsePosition;
import java.util.Locale; import java.util.Locale;
import org.apache.commons.math.MathRuntimeException; import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
/** /**
@ -114,13 +114,11 @@ public abstract class AbstractFormat extends NumberFormat implements Serializabl
/** /**
* Modify the denominator format. * Modify the denominator format.
* @param format the new denominator format value. * @param format the new denominator format value.
* @throws IllegalArgumentException if <code>format</code> is * @throws NullArgumentException if {@code format} is {@code null}.
* <code>null</code>.
*/ */
public void setDenominatorFormat(final NumberFormat format) { public void setDenominatorFormat(final NumberFormat format) {
if (format == null) { if (format == null) {
throw MathRuntimeException.createIllegalArgumentException( throw new NullArgumentException(LocalizedFormats.DENOMINATOR_FORMAT);
LocalizedFormats.NULL_DENOMINATOR_FORMAT);
} }
this.denominatorFormat = format; this.denominatorFormat = format;
} }
@ -128,13 +126,11 @@ public abstract class AbstractFormat extends NumberFormat implements Serializabl
/** /**
* Modify the numerator format. * Modify the numerator format.
* @param format the new numerator format value. * @param format the new numerator format value.
* @throws IllegalArgumentException if <code>format</code> is * @throws NullArgumentException if {@code format} is {@code null}.
* <code>null</code>.
*/ */
public void setNumeratorFormat(final NumberFormat format) { public void setNumeratorFormat(final NumberFormat format) {
if (format == null) { if (format == null) {
throw MathRuntimeException.createIllegalArgumentException( throw new NullArgumentException(LocalizedFormats.NUMERATOR_FORMAT);
LocalizedFormats.NULL_NUMERATOR_FORMAT);
} }
this.numeratorFormat = format; this.numeratorFormat = format;
} }

View File

@ -23,6 +23,7 @@ import java.math.BigInteger;
import org.apache.commons.math.FieldElement; import org.apache.commons.math.FieldElement;
import org.apache.commons.math.MathRuntimeException; import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.util.MathUtils; import org.apache.commons.math.util.MathUtils;
/** /**
@ -104,19 +105,20 @@ public class BigFraction
} }
/** /**
* <p>
* Create a {@link BigFraction} given the numerator and denominator as * Create a {@link BigFraction} given the numerator and denominator as
* <code>BigInteger</code>. The {@link BigFraction} is reduced to lowest terms. * {@code BigInteger}. The {@link BigFraction} is reduced to lowest terms.
* </p>
* *
* @param num * @param num the numerator, must not be {@code null}.
* the numerator, must not be <code>null</code>. * @param den the denominator, must not be {@code null}..
* @param den * @throws ArithmeticException if the denominator is zero.
* the denominator, must not be <code>null</code>.
* @throws ArithmeticException
* if the denominator is <code>zero</code>.
*/ */
public BigFraction(BigInteger num, BigInteger den) { public BigFraction(BigInteger num, BigInteger den) {
if (num == null) {
throw new NullArgumentException(LocalizedFormats.NUMERATOR);
}
if (den == null) {
throw new NullArgumentException(LocalizedFormats.DENOMINATOR);
}
if (BigInteger.ZERO.equals(den)) { if (BigInteger.ZERO.equals(den)) {
throw MathRuntimeException.createArithmeticException(LocalizedFormats.ZERO_DENOMINATOR); throw MathRuntimeException.createArithmeticException(LocalizedFormats.ZERO_DENOMINATOR);
} }
@ -498,10 +500,12 @@ public class BigFraction
* @param fraction * @param fraction
* the {@link BigFraction} to add, must not be <code>null</code>. * the {@link BigFraction} to add, must not be <code>null</code>.
* @return a {@link BigFraction} instance with the resulting values. * @return a {@link BigFraction} instance with the resulting values.
* @throws NullPointerException * @throws NullArgumentException if the {@link BigFraction} is {@code null}.
* if the {@link BigFraction} is <code>null</code>.
*/ */
public BigFraction add(final BigFraction fraction) { public BigFraction add(final BigFraction fraction) {
if (fraction == null) {
throw new NullArgumentException(LocalizedFormats.FRACTION);
}
if (ZERO.equals(fraction)) { if (ZERO.equals(fraction)) {
return this; return this;
} }
@ -601,8 +605,7 @@ public class BigFraction
* the <code>BigInteger</code> to divide by, must not be * the <code>BigInteger</code> to divide by, must not be
* <code>null</code>. * <code>null</code>.
* @return a {@link BigFraction} instance with the resulting values. * @return a {@link BigFraction} instance with the resulting values.
* @throws NullPointerException * @throws NullArgumentException if the {@code BigInteger} is {@code null}.
* if the <code>BigInteger</code> is <code>null</code>.
* @throws ArithmeticException * @throws ArithmeticException
* if the fraction to divide by is zero. * if the fraction to divide by is zero.
*/ */
@ -651,15 +654,15 @@ public class BigFraction
* reduced form. * reduced form.
* </p> * </p>
* *
* @param fraction * @param fraction Fraction to divide by, must not be {@code null}.
* the fraction to divide by, must not be <code>null</code>.
* @return a {@link BigFraction} instance with the resulting values. * @return a {@link BigFraction} instance with the resulting values.
* @throws NullPointerException * @throws NullArgumentException if the {@code fraction} is {@code null}.
* if the fraction is <code>null</code>. * @throws ArithmeticException if the fraction to divide by is zero.
* @throws ArithmeticException
* if the fraction to divide by is zero.
*/ */
public BigFraction divide(final BigFraction fraction) { public BigFraction divide(final BigFraction fraction) {
if (fraction == null) {
throw new NullArgumentException(LocalizedFormats.FRACTION);
}
if (BigInteger.ZERO.equals(fraction.numerator)) { if (BigInteger.ZERO.equals(fraction.numerator)) {
throw MathRuntimeException.createArithmeticException(LocalizedFormats.ZERO_DENOMINATOR); throw MathRuntimeException.createArithmeticException(LocalizedFormats.ZERO_DENOMINATOR);
} }
@ -838,13 +841,14 @@ public class BigFraction
* <code>BigInteger</code>, returning the result in reduced form. * <code>BigInteger</code>, returning the result in reduced form.
* </p> * </p>
* *
* @param bg * @param bg the {@code BigInteger} to multiply by.
* the <code>BigInteger</code> to multiply by. * @return a {@code BigFraction} instance with the resulting values.
* @return a <code>BigFraction</code> instance with the resulting values. * @throws NullArgumentException if {@code bg} is {@code null}.
* @throws NullPointerException
* if the bg is <code>null</code>.
*/ */
public BigFraction multiply(final BigInteger bg) { public BigFraction multiply(final BigInteger bg) {
if (bg == null) {
throw new NullArgumentException();
}
return new BigFraction(bg.multiply(numerator), denominator); return new BigFraction(bg.multiply(numerator), denominator);
} }
@ -882,13 +886,14 @@ public class BigFraction
* reduced form. * reduced form.
* </p> * </p>
* *
* @param fraction * @param fraction Fraction to multiply by, must not be {@code null}.
* the fraction to multiply by, must not be <code>null</code>.
* @return a {@link BigFraction} instance with the resulting values. * @return a {@link BigFraction} instance with the resulting values.
* @throws NullPointerException * @throws NullArgumentException if {@code fraction} is {@code null}.
* if the fraction is <code>null</code>.
*/ */
public BigFraction multiply(final BigFraction fraction) { public BigFraction multiply(final BigFraction fraction) {
if (fraction == null) {
throw new NullArgumentException(LocalizedFormats.FRACTION);
}
if (numerator.equals(BigInteger.ZERO) || if (numerator.equals(BigInteger.ZERO) ||
fraction.numerator.equals(BigInteger.ZERO)) { fraction.numerator.equals(BigInteger.ZERO)) {
return ZERO; return ZERO;
@ -1023,14 +1028,14 @@ public class BigFraction
* returning the result in reduced form. * returning the result in reduced form.
* </p> * </p>
* *
* @param bg * @param bg the {@link BigInteger} to subtract, cannot be {@code null}.
* the {@link BigInteger} to subtract, must'nt be * @return a {@code BigFraction} instance with the resulting values.
* <code>null</code>. * @throws NullArgumentException if the {@link BigInteger} is {@code null}.
* @return a <code>BigFraction</code> instance with the resulting values.
* @throws NullPointerException
* if the {@link BigInteger} is <code>null</code>.
*/ */
public BigFraction subtract(final BigInteger bg) { public BigFraction subtract(final BigInteger bg) {
if (bg == null) {
throw new NullArgumentException();
}
return new BigFraction(numerator.subtract(denominator.multiply(bg)), denominator); return new BigFraction(numerator.subtract(denominator.multiply(bg)), denominator);
} }
@ -1069,14 +1074,14 @@ public class BigFraction
* returning the result in reduced form. * returning the result in reduced form.
* </p> * </p>
* *
* @param fraction * @param fraction {@link BigFraction} to subtract, must not be {@code null}.
* the {@link BigFraction} to subtract, must not be
* <code>null</code>.
* @return a {@link BigFraction} instance with the resulting values * @return a {@link BigFraction} instance with the resulting values
* @throws NullPointerException * @throws NullArgumentException if the {@code fraction} is {@code null}.
* if the fraction is <code>null</code>.
*/ */
public BigFraction subtract(final BigFraction fraction) { public BigFraction subtract(final BigFraction fraction) {
if (fraction == null) {
throw new NullArgumentException(LocalizedFormats.FRACTION);
}
if (ZERO.equals(fraction)) { if (ZERO.equals(fraction)) {
return this; return this;
} }

View File

@ -22,6 +22,7 @@ import java.math.BigInteger;
import org.apache.commons.math.FieldElement; import org.apache.commons.math.FieldElement;
import org.apache.commons.math.MathRuntimeException; import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.util.MathUtils; import org.apache.commons.math.util.MathUtils;
/** /**
@ -473,7 +474,7 @@ public class Fraction
*/ */
private Fraction addSub(Fraction fraction, boolean isAdd) { private Fraction addSub(Fraction fraction, boolean isAdd) {
if (fraction == null) { if (fraction == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_FRACTION); throw new NullArgumentException(LocalizedFormats.FRACTION);
} }
// zero is identity for addition. // zero is identity for addition.
if (numerator == 0) { if (numerator == 0) {
@ -530,7 +531,7 @@ public class Fraction
*/ */
public Fraction multiply(Fraction fraction) { public Fraction multiply(Fraction fraction) {
if (fraction == null) { if (fraction == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_FRACTION); throw new NullArgumentException(LocalizedFormats.FRACTION);
} }
if (numerator == 0 || fraction.numerator == 0) { if (numerator == 0 || fraction.numerator == 0) {
return ZERO; return ZERO;
@ -565,7 +566,7 @@ public class Fraction
*/ */
public Fraction divide(Fraction fraction) { public Fraction divide(Fraction fraction) {
if (fraction == null) { if (fraction == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_FRACTION); throw new NullArgumentException(LocalizedFormats.FRACTION);
} }
if (fraction.numerator == 0) { if (fraction.numerator == 0) {
throw MathRuntimeException.createArithmeticException( throw MathRuntimeException.createArithmeticException(

View File

@ -21,8 +21,8 @@ import java.text.FieldPosition;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.text.ParsePosition; import java.text.ParsePosition;
import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.NullArgumentException;
/** /**
* Formats a BigFraction number in proper format. The number format for each of * Formats a BigFraction number in proper format. The number format for each of
@ -228,15 +228,12 @@ public class ProperBigFractionFormat extends BigFractionFormat {
/** /**
* Modify the whole format. * Modify the whole format.
* @param format The new whole format value. * @param format The new whole format value.
* @throws IllegalArgumentException if <code>format</code> is * @throws NullArgumentException if {@code format} is {@code null}.
* <code>null</code>.
*/ */
public void setWholeFormat(final NumberFormat format) { public void setWholeFormat(final NumberFormat format) {
if (format == null) { if (format == null) {
throw MathRuntimeException.createIllegalArgumentException( throw new NullArgumentException(LocalizedFormats.WHOLE_FORMAT);
LocalizedFormats.NULL_WHOLE_FORMAT);
} }
this.wholeFormat = format; this.wholeFormat = format;
} }
} }

View File

@ -20,8 +20,8 @@ import java.text.FieldPosition;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.text.ParsePosition; import java.text.ParsePosition;
import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.util.MathUtils; import org.apache.commons.math.util.MathUtils;
/** /**
@ -221,13 +221,11 @@ public class ProperFractionFormat extends FractionFormat {
/** /**
* Modify the whole format. * Modify the whole format.
* @param format The new whole format value. * @param format The new whole format value.
* @throws IllegalArgumentException if <code>format</code> is * @throws NullArgumentException if {@code format} is {@code null}.
* <code>null</code>.
*/ */
public void setWholeFormat(NumberFormat format) { public void setWholeFormat(NumberFormat format) {
if (format == null) { if (format == null) {
throw MathRuntimeException.createIllegalArgumentException( throw new NullArgumentException(LocalizedFormats.WHOLE_FORMAT);
LocalizedFormats.NULL_WHOLE_FORMAT);
} }
this.wholeFormat = format; this.wholeFormat = format;
} }

View File

@ -24,7 +24,8 @@ import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.analysis.UnivariateRealFunction; import org.apache.commons.math.analysis.UnivariateRealFunction;
import org.apache.commons.math.exception.DimensionMismatchException; import org.apache.commons.math.exception.DimensionMismatchException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.ZeroNotAllowedException; import org.apache.commons.math.exception.ZeroException;
import org.apache.commons.math.exception.NullArgumentException;
/** /**
* The derivative of {@link GaussianFunction}. Specifically: * The derivative of {@link GaussianFunction}. Specifically:
@ -65,7 +66,7 @@ public class GaussianDerivativeFunction implements UnivariateRealFunction, Seria
*/ */
public GaussianDerivativeFunction(double b, double c, double d) { public GaussianDerivativeFunction(double b, double c, double d) {
if (d == 0.0) { if (d == 0.0) {
throw new ZeroNotAllowedException(); throw new ZeroException();
} }
this.b = b; this.b = b;
this.c = c; this.c = c;
@ -83,13 +84,13 @@ public class GaussianDerivativeFunction implements UnivariateRealFunction, Seria
*/ */
public GaussianDerivativeFunction(double[] parameters) { public GaussianDerivativeFunction(double[] parameters) {
if (parameters == null) { if (parameters == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_INPUT_ARRAY); throw new NullArgumentException(LocalizedFormats.INPUT_ARRAY);
} }
if (parameters.length != 3) { if (parameters.length != 3) {
throw new DimensionMismatchException(3, parameters.length); throw new DimensionMismatchException(3, parameters.length);
} }
if (parameters[2] == 0.0) { if (parameters[2] == 0.0) {
throw new ZeroNotAllowedException(); throw new ZeroException();
} }
this.b = parameters[0]; this.b = parameters[0];
this.c = parameters[1]; this.c = parameters[1];

View File

@ -18,8 +18,7 @@
package org.apache.commons.math.optimization.fitting; package org.apache.commons.math.optimization.fitting;
import org.apache.commons.math.FunctionEvaluationException; import org.apache.commons.math.FunctionEvaluationException;
import org.apache.commons.math.optimization. import org.apache.commons.math.optimization.DifferentiableMultivariateVectorialOptimizer;
DifferentiableMultivariateVectorialOptimizer;
import org.apache.commons.math.optimization.OptimizationException; import org.apache.commons.math.optimization.OptimizationException;
import org.apache.commons.math.optimization.fitting.CurveFitter; import org.apache.commons.math.optimization.fitting.CurveFitter;
import org.apache.commons.math.optimization.fitting.WeightedObservedPoint; import org.apache.commons.math.optimization.fitting.WeightedObservedPoint;

View File

@ -25,7 +25,8 @@ import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.analysis.UnivariateRealFunction; import org.apache.commons.math.analysis.UnivariateRealFunction;
import org.apache.commons.math.exception.DimensionMismatchException; import org.apache.commons.math.exception.DimensionMismatchException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.ZeroNotAllowedException; import org.apache.commons.math.exception.ZeroException;
import org.apache.commons.math.exception.NullArgumentException;
/** /**
* A Gaussian function. Specifically: * A Gaussian function. Specifically:
@ -77,7 +78,7 @@ public class GaussianFunction implements DifferentiableUnivariateRealFunction, S
*/ */
public GaussianFunction(double a, double b, double c, double d) { public GaussianFunction(double a, double b, double c, double d) {
if (d == 0.0) { if (d == 0.0) {
throw new ZeroNotAllowedException(); throw new ZeroException();
} }
this.a = a; this.a = a;
this.b = b; this.b = b;
@ -97,13 +98,13 @@ public class GaussianFunction implements DifferentiableUnivariateRealFunction, S
*/ */
public GaussianFunction(double[] parameters) { public GaussianFunction(double[] parameters) {
if (parameters == null) { if (parameters == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_INPUT_ARRAY); throw new NullArgumentException(LocalizedFormats.INPUT_ARRAY);
} }
if (parameters.length != 4) { if (parameters.length != 4) {
throw new DimensionMismatchException(4, parameters.length); throw new DimensionMismatchException(4, parameters.length);
} }
if (parameters[3] == 0.0) { if (parameters[3] == 0.0) {
throw new ZeroNotAllowedException(); throw new ZeroException();
} }
this.a = parameters[0]; this.a = parameters[0];
this.b = parameters[1]; this.b = parameters[1];

View File

@ -20,14 +20,14 @@ package org.apache.commons.math.optimization.fitting;
import java.util.Arrays; import java.util.Arrays;
import java.util.Comparator; import java.util.Comparator;
import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.NumberIsTooSmallException; import org.apache.commons.math.exception.NumberIsTooSmallException;
import org.apache.commons.math.exception.OutOfRangeException; import org.apache.commons.math.exception.OutOfRangeException;
import org.apache.commons.math.exception.ZeroNotAllowedException; import org.apache.commons.math.exception.ZeroException;
import org.apache.commons.math.exception.NullArgumentException;
/** /**
* Guesses the parameters (<tt>a</tt>, <tt>b</tt>, <tt>c</tt>, and <tt>d</tt>) * Guesses the parameters ({@code a}, {@code b}, {@code c}, and {@code d})
* of a {@link ParametricGaussianFunction} based on the specified observed * of a {@link ParametricGaussianFunction} based on the specified observed
* points. * points.
* *
@ -49,7 +49,7 @@ public class GaussianParametersGuesser {
*/ */
public GaussianParametersGuesser(WeightedObservedPoint[] observations) { public GaussianParametersGuesser(WeightedObservedPoint[] observations) {
if (observations == null) { if (observations == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_INPUT_ARRAY); throw new NullArgumentException(LocalizedFormats.INPUT_ARRAY);
} }
if (observations.length < 3) { if (observations.length < 3) {
throw new NumberIsTooSmallException(observations.length, 3, true); throw new NumberIsTooSmallException(observations.length, 3, true);
@ -154,7 +154,7 @@ public class GaussianParametersGuesser {
private double interpolateXAtY(WeightedObservedPoint[] points, private double interpolateXAtY(WeightedObservedPoint[] points,
int startIdx, int idxStep, double y) throws OutOfRangeException { int startIdx, int idxStep, double y) throws OutOfRangeException {
if (idxStep == 0) { if (idxStep == 0) {
throw new ZeroNotAllowedException(); throw new ZeroException();
} }
WeightedObservedPoint[] twoPoints = getInterpolationPointsForY(points, startIdx, idxStep, y); WeightedObservedPoint[] twoPoints = getInterpolationPointsForY(points, startIdx, idxStep, y);
WeightedObservedPoint pointA = twoPoints[0]; WeightedObservedPoint pointA = twoPoints[0];
@ -190,7 +190,7 @@ public class GaussianParametersGuesser {
int startIdx, int idxStep, double y) int startIdx, int idxStep, double y)
throws OutOfRangeException { throws OutOfRangeException {
if (idxStep == 0) { if (idxStep == 0) {
throw new ZeroNotAllowedException(); throw new ZeroException();
} }
for (int i = startIdx; for (int i = startIdx;
(idxStep < 0) ? (i + idxStep >= 0) : (i + idxStep < points.length); (idxStep < 0) ? (i + idxStep >= 0) : (i + idxStep < points.length);

View File

@ -20,10 +20,10 @@ package org.apache.commons.math.optimization.fitting;
import java.io.Serializable; import java.io.Serializable;
import org.apache.commons.math.FunctionEvaluationException; import org.apache.commons.math.FunctionEvaluationException;
import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.exception.DimensionMismatchException; import org.apache.commons.math.exception.DimensionMismatchException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.ZeroNotAllowedException; import org.apache.commons.math.exception.ZeroException;
import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.optimization.fitting.ParametricRealFunction; import org.apache.commons.math.optimization.fitting.ParametricRealFunction;
/** /**
@ -153,13 +153,13 @@ public class ParametricGaussianFunction implements ParametricRealFunction, Seria
*/ */
private void validateParameters(double[] parameters) throws FunctionEvaluationException { private void validateParameters(double[] parameters) throws FunctionEvaluationException {
if (parameters == null) { if (parameters == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_INPUT_ARRAY); throw new NullArgumentException(LocalizedFormats.INPUT_ARRAY);
} }
if (parameters.length != 4) { if (parameters.length != 4) {
throw new DimensionMismatchException(4, parameters.length); throw new DimensionMismatchException(4, parameters.length);
} }
if (parameters[3] == 0.0) { if (parameters[3] == 0.0) {
throw new ZeroNotAllowedException(); throw new ZeroException();
} }
} }

View File

@ -21,6 +21,8 @@ import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.distribution.TDistribution; import org.apache.commons.math.distribution.TDistribution;
import org.apache.commons.math.distribution.TDistributionImpl; import org.apache.commons.math.distribution.TDistributionImpl;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.exception.DimensionMismatchException;
import org.apache.commons.math.linear.RealMatrix; import org.apache.commons.math.linear.RealMatrix;
import org.apache.commons.math.linear.BlockRealMatrix; import org.apache.commons.math.linear.BlockRealMatrix;
import org.apache.commons.math.stat.regression.SimpleRegression; import org.apache.commons.math.stat.regression.SimpleRegression;
@ -92,7 +94,7 @@ public class PearsonsCorrelation {
public PearsonsCorrelation(Covariance covariance) { public PearsonsCorrelation(Covariance covariance) {
RealMatrix covarianceMatrix = covariance.getCovarianceMatrix(); RealMatrix covarianceMatrix = covariance.getCovarianceMatrix();
if (covarianceMatrix == null) { if (covarianceMatrix == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_COVARIANCE_MATRIX); throw new NullArgumentException(LocalizedFormats.COVARIANCE_MATRIX);
} }
nObs = covariance.getN(); nObs = covariance.getN();
correlationMatrix = covarianceToCorrelation(covarianceMatrix); correlationMatrix = covarianceToCorrelation(covarianceMatrix);
@ -225,8 +227,7 @@ public class PearsonsCorrelation {
public double correlation(final double[] xArray, final double[] yArray) throws IllegalArgumentException { public double correlation(final double[] xArray, final double[] yArray) throws IllegalArgumentException {
SimpleRegression regression = new SimpleRegression(); SimpleRegression regression = new SimpleRegression();
if (xArray.length != yArray.length) { if (xArray.length != yArray.length) {
throw MathRuntimeException.createIllegalArgumentException( throw new DimensionMismatchException(xArray.length, yArray.length);
LocalizedFormats.DIMENSIONS_MISMATCH_SIMPLE, xArray.length, yArray.length);
} else if (xArray.length < 2) { } else if (xArray.length < 2) {
throw MathRuntimeException.createIllegalArgumentException( throw MathRuntimeException.createIllegalArgumentException(
LocalizedFormats.INSUFFICIENT_DIMENSION, xArray.length, 2); LocalizedFormats.INSUFFICIENT_DIMENSION, xArray.length, 2);

View File

@ -16,8 +16,8 @@
*/ */
package org.apache.commons.math.stat.descriptive; package org.apache.commons.math.stat.descriptive;
import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.util.MathUtils; import org.apache.commons.math.util.MathUtils;
/** /**
@ -56,7 +56,7 @@ public abstract class AbstractStorelessUnivariateStatistic
@Override @Override
public double evaluate(final double[] values) { public double evaluate(final double[] values) {
if (values == null) { if (values == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_INPUT_ARRAY); throw new NullArgumentException(LocalizedFormats.INPUT_ARRAY);
} }
return evaluate(values, 0, values.length); return evaluate(values, 0, values.length);
} }
@ -124,7 +124,7 @@ public abstract class AbstractStorelessUnivariateStatistic
*/ */
public void incrementAll(double[] values) { public void incrementAll(double[] values) {
if (values == null) { if (values == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_INPUT_ARRAY); throw new NullArgumentException(LocalizedFormats.INPUT_ARRAY);
} }
incrementAll(values, 0, values.length); incrementAll(values, 0, values.length);
} }

View File

@ -18,6 +18,9 @@ package org.apache.commons.math.stat.descriptive;
import org.apache.commons.math.MathRuntimeException; import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.exception.NotPositiveException;
import org.apache.commons.math.exception.DimensionMismatchException;
/** /**
* Abstract base class for all implementations of the * Abstract base class for all implementations of the
@ -78,17 +81,15 @@ public abstract class AbstractUnivariateStatistic
final int length) { final int length) {
if (values == null) { if (values == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_INPUT_ARRAY); throw new NullArgumentException(LocalizedFormats.INPUT_ARRAY);
} }
if (begin < 0) { if (begin < 0) {
throw MathRuntimeException.createIllegalArgumentException( throw new NotPositiveException(LocalizedFormats.START_POSITION, begin);
LocalizedFormats.NEGATIVE_START_POSITION, begin);
} }
if (length < 0) { if (length < 0) {
throw MathRuntimeException.createIllegalArgumentException( throw new NotPositiveException(LocalizedFormats.LENGTH, length);
LocalizedFormats.NEGATIVE_LENGTH, length);
} }
if (begin + length > values.length) { if (begin + length > values.length) {
@ -140,12 +141,11 @@ public abstract class AbstractUnivariateStatistic
final int length) { final int length) {
if (weights == null) { if (weights == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_INPUT_ARRAY); throw new NullArgumentException(LocalizedFormats.INPUT_ARRAY);
} }
if (weights.length != values.length) { if (weights.length != values.length) {
throw MathRuntimeException.createIllegalArgumentException( throw new DimensionMismatchException(weights.length, values.length);
LocalizedFormats.DIMENSIONS_MISMATCH_SIMPLE, weights.length, values.length);
} }
boolean containsPositiveWeight = false; boolean containsPositiveWeight = false;

View File

@ -18,7 +18,7 @@
package org.apache.commons.math.stat.descriptive.moment; package org.apache.commons.math.stat.descriptive.moment;
import java.io.Serializable; import java.io.Serializable;
import org.apache.commons.math.MathRuntimeException; import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.stat.descriptive.AbstractUnivariateStatistic; import org.apache.commons.math.stat.descriptive.AbstractUnivariateStatistic;
@ -176,7 +176,7 @@ public class SemiVariance extends AbstractUnivariateStatistic implements Seriali
@Override @Override
public double evaluate(final double[] values) { public double evaluate(final double[] values) {
if (values == null) { if (values == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_INPUT_ARRAY); throw new NullArgumentException(LocalizedFormats.INPUT_ARRAY);
} }
return evaluate(values, 0, values.length); return evaluate(values, 0, values.length);
} }

View File

@ -18,7 +18,7 @@ package org.apache.commons.math.stat.descriptive.moment;
import java.io.Serializable; import java.io.Serializable;
import org.apache.commons.math.MathRuntimeException; import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.stat.descriptive.WeightedEvaluation; import org.apache.commons.math.stat.descriptive.WeightedEvaluation;
import org.apache.commons.math.stat.descriptive.AbstractStorelessUnivariateStatistic; import org.apache.commons.math.stat.descriptive.AbstractStorelessUnivariateStatistic;
@ -214,7 +214,7 @@ public class Variance extends AbstractStorelessUnivariateStatistic implements Se
@Override @Override
public double evaluate(final double[] values) { public double evaluate(final double[] values) {
if (values == null) { if (values == null) {
throw MathRuntimeException.createIllegalArgumentException(LocalizedFormats.NULL_INPUT_ARRAY); throw new NullArgumentException(LocalizedFormats.INPUT_ARRAY);
} }
return evaluate(values, 0, values.length); return evaluate(values, 0, values.length);
} }
@ -589,7 +589,6 @@ public class Variance extends AbstractStorelessUnivariateStatistic implements Se
return result; return result;
} }
/** /**
* Copies source to dest. * Copies source to dest.
* <p>Neither source nor dest can be null.</p> * <p>Neither source nor dest can be null.</p>
@ -599,9 +598,12 @@ public class Variance extends AbstractStorelessUnivariateStatistic implements Se
* @throws NullPointerException if either source or dest is null * @throws NullPointerException if either source or dest is null
*/ */
public static void copy(Variance source, Variance dest) { public static void copy(Variance source, Variance dest) {
if (source == null ||
dest == null) {
throw new NullArgumentException();
}
dest.moment = source.moment.copy(); dest.moment = source.moment.copy();
dest.isBiasCorrected = source.isBiasCorrected; dest.isBiasCorrected = source.isBiasCorrected;
dest.incMoment = source.incMoment; dest.incMoment = source.incMoment;
} }
} }

View File

@ -21,6 +21,7 @@ import java.io.Serializable;
import org.apache.commons.math.MathException; import org.apache.commons.math.MathException;
import org.apache.commons.math.exception.LocalizedFormats; import org.apache.commons.math.exception.LocalizedFormats;
import org.apache.commons.math.exception.NullArgumentException;
/** /**
* A Default NumberTransformer for java.lang.Numbers and Numeric Strings. This * A Default NumberTransformer for java.lang.Numbers and Numeric Strings. This
@ -38,14 +39,13 @@ public class DefaultTransformer implements NumberTransformer, Serializable {
/** /**
* @param o the object that gets transformed. * @param o the object that gets transformed.
* @return a double primitive representation of the Object o. * @return a double primitive representation of the Object o.
* @throws org.apache.commons.math.MathException If it cannot successfully * @throws MathException if it cannot successfully be transformed.
* be transformed or is null. * @throws NullArgumentException if is {@code null}.
* @see <a href="http://commons.apache.org/collections/api-release/org/apache/commons/collections/Transformer.html"/> * @see <a href="http://commons.apache.org/collections/api-release/org/apache/commons/collections/Transformer.html"/>
*/ */
public double transform(Object o) throws MathException{ public double transform(Object o) throws MathException {
if (o == null) { if (o == null) {
throw new MathException(LocalizedFormats.NULL_OBJECT_TRANSFORMATION); throw new NullArgumentException(LocalizedFormats.OBJECT_TRANSFORMATION);
} }
if (o instanceof Number) { if (o instanceof Number) {

View File

@ -117,11 +117,10 @@ NEGATIVE_BRIGHTNESS_EXPONENT = l''exposant de brillance devrait \u00eatre positi
NEGATIVE_COMPLEX_MODULE = module n\u00e9gatif ({0}) pour un nombre complexe NEGATIVE_COMPLEX_MODULE = module n\u00e9gatif ({0}) pour un nombre complexe
NEGATIVE_ELEMENT_AT_2D_INDEX = l''\u00e9l\u00e9ment ({0}, {1}) est n\u00e9gatif : {2} NEGATIVE_ELEMENT_AT_2D_INDEX = l''\u00e9l\u00e9ment ({0}, {1}) est n\u00e9gatif : {2}
NEGATIVE_ELEMENT_AT_INDEX = l''\u00e9l\u00e9ment {0} est n\u00e9gatif : {1} NEGATIVE_ELEMENT_AT_INDEX = l''\u00e9l\u00e9ment {0} est n\u00e9gatif : {1}
NEGATIVE_LENGTH = la longueur ne peut pas \u00eatre n\u00e9gative
NEGATIVE_NUMBER_OF_SUCCESSES = le nombre de succ\u00e8s ne doit pas \u00eatre n\u00e9gatif ({0}) NEGATIVE_NUMBER_OF_SUCCESSES = le nombre de succ\u00e8s ne doit pas \u00eatre n\u00e9gatif ({0})
NEGATIVE_NUMBER_OF_TRIALS = le nombre d''essais ne doit pas \u00eatre n\u00e9gatif ({0}) NEGATIVE_NUMBER_OF_TRIALS = le nombre d''essais ne doit pas \u00eatre n\u00e9gatif ({0})
NEGATIVE_ROBUSTNESS_ITERATIONS = le nombre d''it\u00e9rations robuste ne peut \u00eatre n\u00e9gatif, alors qu''il est de {0} NEGATIVE_ROBUSTNESS_ITERATIONS = le nombre d''it\u00e9rations robuste ne peut \u00eatre n\u00e9gatif, alors qu''il est de {0}
NEGATIVE_START_POSITION = la position de d\u00e9part ne peut pas \u00eatre n\u00e9gative START_POSITION = position de d\u00e9part
NON_CONVERGENT_CONTINUED_FRACTION = \u00c9chec de convergence de fraction continue pour la valeur {0} NON_CONVERGENT_CONTINUED_FRACTION = \u00c9chec de convergence de fraction continue pour la valeur {0}
NON_POSITIVE_MICROSPHERE_ELEMENTS = le nombre d''\u00e9l\u00e9ments de la microsph\u00e8re devrait \u00eatre positif, or n = {0} NON_POSITIVE_MICROSPHERE_ELEMENTS = le nombre d''\u00e9l\u00e9ments de la microsph\u00e8re devrait \u00eatre positif, or n = {0}
NON_POSITIVE_POLYNOMIAL_DEGREE = le polyn\u00f4me doit \u00eatre de degr\u00e9 positif : degr\u00e9 = {0} NON_POSITIVE_POLYNOMIAL_DEGREE = le polyn\u00f4me doit \u00eatre de degr\u00e9 positif : degr\u00e9 = {0}
@ -189,12 +188,12 @@ DENOMINATOR = d\u00e9nominateur
DENOMINATOR_FORMAT = format du d\u00e9nominateur DENOMINATOR_FORMAT = format du d\u00e9nominateur
FRACTION = fraction FRACTION = fraction
FUNCTION = fonction FUNCTION = fonction
IMAGINARY_FORMAT = format imaginaire IMAGINARY_FORMAT = format de la partie imaginaire
INPUT_ARRAY = tableau d''entr\u00e9e INPUT_ARRAY = tableau d''entr\u00e9e
NUMERATOR = num\u00e9rateur NUMERATOR = num\u00e9rateur
NUMERATOR_FORMAT = format du num\u00e9rateur NUMERATOR_FORMAT = format du num\u00e9rateur
OBJECT_TRANSFORMATION = exception de conversion dans une transformation OBJECT_TRANSFORMATION = exception de conversion dans une transformation
REAL_FORMAT = format r\u00e9el REAL_FORMAT = format de la partie r\u00e9elle
WHOLE_FORMAT = format complet WHOLE_FORMAT = format complet
NUMBER_TOO_LARGE = {0} est plus grand que le maximum ({1}) NUMBER_TOO_LARGE = {0} est plus grand que le maximum ({1})
NUMBER_TOO_SMALL = {0} est plus petit que le minimum ({1}) NUMBER_TOO_SMALL = {0} est plus petit que le minimum ({1})

View File

@ -96,6 +96,8 @@ The <action> type attribute can be add,update,fix,remove.
Created package "exception" to contain the new exceptions hierarchy. Created package "exception" to contain the new exceptions hierarchy.
Created package "exception.util": utilities for the exception classes Created package "exception.util": utilities for the exception classes
(e.g. managing the localization of error messages). (e.g. managing the localization of error messages).
Default policy for dealing with invalid null references: raise a
"NullArgumentException" (subclass of "IllegalArgumentException").
</action> </action>
<action dev="erans" type="add" issue="MATH-378" due-to="Matthew Rowles"> <action dev="erans" type="add" issue="MATH-378" due-to="Matthew Rowles">
Implementation of linear interpolation. Implementation of linear interpolation.

View File

@ -93,7 +93,7 @@
</subsection> </subsection>
<subsection name="0.4 How interface contracts are specified in commons-math javadoc" href="contracts"> <subsection name="0.4 How interface contracts are specified in commons-math javadoc" href="contracts">
<p> <p>
You should always read the javadoc class and method comments carefully when using You should always read the javadoc class and method comments carefully when using
Commons Math components in your programs. The javadoc provides references to the algorithms Commons Math components in your programs. The javadoc provides references to the algorithms
that are used, usage notes about limitations, performance, etc. as well as interface contracts. that are used, usage notes about limitations, performance, etc. as well as interface contracts.
@ -101,16 +101,27 @@
for the method to return valid results), special values returned (e.g. Double.NaN) for the method to return valid results), special values returned (e.g. Double.NaN)
or exceptions that may be thrown if the preconditions are not met, and definitions for returned or exceptions that may be thrown if the preconditions are not met, and definitions for returned
values/objects or state changes.</p> values/objects or state changes.</p>
<p> <p>
When the actual parameters provided to a method or the internal state of an object When the actual parameters provided to a method or the internal state of an object
make a computation meaningless, an IllegalArgumentException or IllegalStateException may make a computation meaningless, an IllegalArgumentException or IllegalStateException may
be thrown. Exact conditions under which runtime exceptions (and any other exceptions) are be thrown. Exact conditions under which runtime exceptions (and any other exceptions) are
thrown are specified in the javadoc method comments. In some cases, to be consistent with thrown are specified in the javadoc method comments. In some cases, to be consistent with
the <a href="http://grouper.ieee.org/groups/754/">IEEE 754 standard</a> for floating point the <a href="http://grouper.ieee.org/groups/754/">IEEE 754 standard</a> for floating point
arithmetic and with java.lang.Math, Commons Math methods return Double.NaN values. arithmetic and with java.lang.Math, Commons Math methods return Double.NaN values.
Conditions under which Double.NaN or other special values are returned are fully specified Conditions under which Double.NaN or other special values are returned are fully specified
in the javadoc method comments. in the javadoc method comments.
</p> </p>
<p>
As of version 2.2, the policy for dealing with null references is as
follows: When an argument is unexpectedly null, a
<a href="../apidocs/org/apache/commons/math/exception/NullArgumentException.html">
NullArgumentException</a> is raised for signalling the
illegal argument. Note that this class does not inherit from the
standard <code>NullPointerException</code> but is a subclass of
<code>IllegalArgumentException</code>.
No <code>NullPointerException</code> should be propagated from within
Commons-Math.
</p>
</subsection> </subsection>
<subsection name="0.5 Dependencies" href="dependencies"> <subsection name="0.5 Dependencies" href="dependencies">

View File

@ -21,6 +21,7 @@ import java.math.BigInteger;
import org.apache.commons.math.ConvergenceException; import org.apache.commons.math.ConvergenceException;
import org.apache.commons.math.TestUtils; import org.apache.commons.math.TestUtils;
import org.apache.commons.math.exception.NullArgumentException;
import junit.framework.TestCase; import junit.framework.TestCase;
@ -64,12 +65,12 @@ public class BigFractionTest extends TestCase {
assertFraction(1055531162664967l, 70368744177664l, new BigFraction(15.0000000000001)); assertFraction(1055531162664967l, 70368744177664l, new BigFraction(15.0000000000001));
try { try {
new BigFraction(null, BigInteger.ONE); new BigFraction(null, BigInteger.ONE);
} catch (NullPointerException npe) { } catch (NullArgumentException npe) {
// expected // expected
} }
try { try {
new BigFraction(BigInteger.ONE, null); new BigFraction(BigInteger.ONE, null);
} catch (NullPointerException npe) { } catch (NullArgumentException npe) {
// expected // expected
} }
try { try {
@ -326,8 +327,8 @@ public class BigFractionTest extends TestCase {
try { try {
f.add((BigFraction) null); f.add((BigFraction) null);
fail("expecting NullPointerException"); fail("expecting NullArgumentException");
} catch (NullPointerException ex) { } catch (NullArgumentException ex) {
} }
// if this fraction is added naively, it will overflow. // if this fraction is added naively, it will overflow.
@ -414,8 +415,8 @@ public class BigFractionTest extends TestCase {
try { try {
f.divide((BigFraction) null); f.divide((BigFraction) null);
fail("expecting NullPointerException"); fail("expecting NullArgumentException");
} catch (NullPointerException ex) { } catch (NullArgumentException ex) {
} }
f1 = new BigFraction(Integer.MIN_VALUE, Integer.MAX_VALUE); f1 = new BigFraction(Integer.MIN_VALUE, Integer.MAX_VALUE);
@ -460,8 +461,8 @@ public class BigFractionTest extends TestCase {
try { try {
f.multiply((BigFraction) null); f.multiply((BigFraction) null);
fail("expecting NullPointerException"); fail("expecting NullArgumentException");
} catch (NullPointerException ex) { } catch (NullArgumentException ex) {
} }
} }
@ -478,8 +479,8 @@ public class BigFractionTest extends TestCase {
BigFraction f = new BigFraction(1, 1); BigFraction f = new BigFraction(1, 1);
try { try {
f.subtract((BigFraction) null); f.subtract((BigFraction) null);
fail("expecting NullPointerException"); fail("expecting NullArgumentException");
} catch (NullPointerException ex) { } catch (NullArgumentException ex) {
} }
// if this fraction is subtracted naively, it will overflow. // if this fraction is subtracted naively, it will overflow.

View File

@ -18,7 +18,7 @@
package org.apache.commons.math.optimization.fitting; package org.apache.commons.math.optimization.fitting;
import org.apache.commons.math.FunctionEvaluationException; import org.apache.commons.math.FunctionEvaluationException;
import org.apache.commons.math.exception.ZeroNotAllowedException; import org.apache.commons.math.exception.ZeroException;
import org.apache.commons.math.optimization.OptimizationException; import org.apache.commons.math.optimization.OptimizationException;
import org.apache.commons.math.optimization.fitting.CurveFitter; import org.apache.commons.math.optimization.fitting.CurveFitter;
import org.apache.commons.math.optimization.general. import org.apache.commons.math.optimization.general.
@ -133,7 +133,7 @@ public class ParametricGaussianFunctionTest {
* *
* @throws FunctionEvaluationException in the event of a test case error * @throws FunctionEvaluationException in the event of a test case error
*/ */
@Test(expected=ZeroNotAllowedException.class) @Test(expected=ZeroException.class)
public void testValue03() throws FunctionEvaluationException { public void testValue03() throws FunctionEvaluationException {
ParametricGaussianFunction f = new ParametricGaussianFunction(); ParametricGaussianFunction f = new ParametricGaussianFunction();
f.value(0.0, new double[] {0.0, 1.0, 1.0, 0.0}); f.value(0.0, new double[] {0.0, 1.0, 1.0, 0.0});

View File

@ -23,6 +23,7 @@ import junit.framework.TestCase;
import org.apache.commons.math.MathException; import org.apache.commons.math.MathException;
import org.apache.commons.math.TestUtils; import org.apache.commons.math.TestUtils;
import org.apache.commons.math.exception.NullArgumentException;
/** /**
* @version $Revision$ $Date$ * @version $Revision$ $Date$
@ -41,12 +42,12 @@ public class DefaultTransformerTest extends TestCase {
/** /**
* *
*/ */
public void testTransformNull(){ public void testTransformNull() throws Exception {
DefaultTransformer t = new DefaultTransformer(); DefaultTransformer t = new DefaultTransformer();
try { try {
t.transform(null); t.transform(null);
fail("Expection MathException"); fail("Expecting NullArgumentException");
} catch (MathException e) { } catch (NullArgumentException e) {
// expected // expected
} }
} }