You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2010/08/05 11:51:48 UTC

svn commit: r982526 - in /commons/proper/math/trunk/src: main/java/org/apache/commons/math/ main/java/org/apache/commons/math/exception/ main/java/org/apache/commons/math/exception/util/ main/java/org/apache/commons/math/fraction/ main/java/org/apache/...

Author: erans
Date: Thu Aug  5 09:51:48 2010
New Revision: 982526

URL: http://svn.apache.org/viewvc?rev=982526&view=rev
Log:
Moved exception utilities to package "exception.util". Created
"MathUnsupportedOperationException". Replaced factory method
"createUnsupportedOperationException" occurences by an explicit
construction of a "MathUnsupportedOperationException".
Corrected a bug (in "AbstractRealVector") where a "dimension"
was stored in a "double". Replaced a "createIllegalArgumentException"
by a "DimensionMismatchException".
Removed checks for "null" in "BigFraction".

Added:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/MathUnsupportedOperationException.java   (with props)
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/ArgUtils.java   (with props)
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/MessageFactory.java   (with props)
    commons/proper/math/trunk/src/test/java/org/apache/commons/math/exception/util/
    commons/proper/math/trunk/src/test/java/org/apache/commons/math/exception/util/ArgUtilsTest.java   (with props)
Removed:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/MessageFactory.java
Modified:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/MathRuntimeException.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/LocalizedFormats.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/MathIllegalArgumentException.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/fraction/BigFraction.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/AbstractRealVector.java
    commons/proper/math/trunk/src/main/resources/META-INF/localization/LocalizedFormats_fr.properties
    commons/proper/math/trunk/src/site/xdoc/changes.xml

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/MathRuntimeException.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/MathRuntimeException.java?rev=982526&r1=982525&r2=982526&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/MathRuntimeException.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/MathRuntimeException.java Thu Aug  5 09:51:48 2010
@@ -556,6 +556,8 @@ public class MathRuntimeException extend
      * @param arguments format arguments
      * @return built exception
      * @since 2.2
+     * @deprecated in 2.2. Please use {@link org.apache.commons.math.exception.MathUnsupportedOperationException}
+     * instead.
      */
     public static UnsupportedOperationException createUnsupportedOperationException(final Localizable pattern,
                                                                                     final Object ... arguments) {
@@ -600,6 +602,7 @@ public class MathRuntimeException extend
      * @param arguments format arguments
      * @return built exception
      * @since 2.2
+     * @deprecated in 2.2. Checks for "null" must not be performed in Commons-Math.
      */
     public static NullPointerException createNullPointerException(final Localizable pattern,
                                                                   final Object ... arguments) {

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/LocalizedFormats.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/LocalizedFormats.java?rev=982526&r1=982525&r2=982526&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/LocalizedFormats.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/LocalizedFormats.java Thu Aug  5 09:51:48 2010
@@ -281,7 +281,7 @@ public enum LocalizedFormats implements 
     UNPARSEABLE_FRACTION_NUMBER("unparseable fraction number: \"{0}\""),
     UNPARSEABLE_REAL_VECTOR("unparseable real vector: \"{0}\""),
     UNSUPPORTED_EXPANSION_MODE("unsupported expansion mode {0}, supported modes are {1} ({2}) and {3} ({4})"),
-    UNSUPPORTED_OPERATION("unsupported operation"),
+    UNSUPPORTED_OPERATION("unsupported operation"), /* keep */
     URL_CONTAINS_NO_DATA("URL {0} contains no data"),
     VALUES_ADDED_BEFORE_CONFIGURING_STATISTIC("{0} values have been added before statistic is configured"),
     VECTOR_LENGTH_MISMATCH("vector length mismatch: got {0} but expected {1}"),

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/MathIllegalArgumentException.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/MathIllegalArgumentException.java?rev=982526&r1=982525&r2=982526&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/MathIllegalArgumentException.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/MathIllegalArgumentException.java Thu Aug  5 09:51:48 2010
@@ -17,8 +17,9 @@
 package org.apache.commons.math.exception;
 
 import java.util.Locale;
-import java.util.List;
-import java.util.ArrayList;
+
+import org.apache.commons.math.exception.util.ArgUtils;
+import org.apache.commons.math.exception.util.MessageFactory;
 
 /**
  * Base class for all preconditions violation exceptions.
@@ -59,7 +60,7 @@ public class MathIllegalArgumentExceptio
                                            Object ... args) {
         this.specific = specific;
         this.general = general;
-        arguments = flatten(args).toArray();
+        arguments = ArgUtils.flatten(args);
     }
     /**
      * @param general Message pattern explaining the cause of the error.
@@ -70,24 +71,16 @@ public class MathIllegalArgumentExceptio
         this(null, general, args);
     }
 
-    /** Gets the message in a specified locale.
-    *
-    * @param locale Locale in which the message should be translated
-    *
-    * @return localized message
-    * @since 2.2
-    */
-   public String getMessage(final Locale locale) {
-       final StringBuilder sb = new StringBuilder();
-
-       if (specific != null) {
-           sb.append(MessageFactory.buildMessage(locale, specific, arguments));
-           sb.append(": ");
-       }
-       sb.append(MessageFactory.buildMessage(locale, general, arguments));
-
-       return sb.toString();
-   }
+    /**
+     * Get the message in a specified locale.
+     *
+     * @param locale Locale in which the message should be translated.
+     *
+     * @return the localized message.
+     */
+    public String getMessage(final Locale locale) {
+        return MessageFactory.buildMessage(locale, specific, general, arguments);
+    }
 
    /** {@inheritDoc} */
     @Override
@@ -100,25 +93,4 @@ public class MathIllegalArgumentExceptio
     public String getLocalizedMessage() {
         return getMessage(Locale.getDefault());
     }
-
-    /**
-     * Transform a multidimensional array into a one-dimensional list.
-     *
-     * @param array Array (possibly multidimensional).
-     * @return a list of all the {@code Object} instances contained in
-     * {@code array}.
-     */
-    private List<Object> flatten(Object[] array) {
-        final List<Object> list = new ArrayList<Object>();
-        if (array != null) {
-            for (Object o : array) {
-                if (o instanceof Object[]) {
-                    list.addAll(flatten((Object[]) o));
-                } else {
-                    list.add(o);
-                }
-            }
-        }
-        return list;
-    }
 }

Added: commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/MathUnsupportedOperationException.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/MathUnsupportedOperationException.java?rev=982526&view=auto
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/MathUnsupportedOperationException.java (added)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/MathUnsupportedOperationException.java Thu Aug  5 09:51:48 2010
@@ -0,0 +1,90 @@
+/*
+ * 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;
+
+import java.util.Locale;
+
+import org.apache.commons.math.exception.util.ArgUtils;
+import org.apache.commons.math.exception.util.MessageFactory;
+import org.apache.commons.math.exception.LocalizedFormats;
+
+/**
+ * Base class for all unsupported features.
+ * It is used for all the exceptions that share the semantics of the standard
+ * {@link UnsupportedOperationException}, but must also provide a localized
+ * message.
+ *
+ * @since 2.2
+ * @version $Revision$ $Date$
+ */
+public class MathUnsupportedOperationException extends UnsupportedOperationException {
+
+    /** Serializable version Id. */
+    private static final long serialVersionUID = -6024911025449780478L;
+
+    /**
+     * Pattern used to build the message (specific context).
+     */
+    private final Localizable specific;
+    /**
+     * Arguments used to build the message.
+     */
+    private final Object[] arguments;
+
+    /**
+     * @param args Arguments.
+     */
+    public MathUnsupportedOperationException(Object ... args) {
+        this(null, args);
+    }
+    /**
+     * @param specific Message pattern providing the specific context of
+     * the error.
+     * @param args Arguments.
+     */
+    public MathUnsupportedOperationException(Localizable specific,
+                                             Object ... args) {
+        this.specific = specific;
+        arguments = ArgUtils.flatten(args);
+    }
+
+    /**
+     * Get the message in a specified locale.
+     *
+     * @param locale Locale in which the message should be translated.
+     *
+     * @return the localized message.
+     */
+    public String getMessage(final Locale locale) {
+        return MessageFactory.buildMessage(locale,
+                                           specific,
+                                           LocalizedFormats.UNSUPPORTED_OPERATION,
+                                           arguments);
+    }
+
+   /** {@inheritDoc} */
+    @Override
+    public String getMessage() {
+        return getMessage(Locale.US);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public String getLocalizedMessage() {
+        return getMessage(Locale.getDefault());
+    }
+}

Propchange: commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/MathUnsupportedOperationException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/ArgUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/ArgUtils.java?rev=982526&view=auto
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/ArgUtils.java (added)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/ArgUtils.java Thu Aug  5 09:51:48 2010
@@ -0,0 +1,45 @@
+/*
+ * 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.util;
+
+import java.util.List;
+import java.util.ArrayList;
+
+public class ArgUtils {
+    /**
+     * Transform a multidimensional array into a one-dimensional list.
+     *
+     * @param array Array (possibly multidimensional).
+     * @return a list of all the {@code Object} instances contained in
+     * {@code array}.
+     */
+    public static Object[] flatten(Object[] array) {
+        final List<Object> list = new ArrayList<Object>();
+        if (array != null) {
+            for (Object o : array) {
+                if (o instanceof Object[]) {
+                    for (Object oR : flatten((Object[]) o)) {
+                        list.add(oR);
+                    }
+                } else {
+                    list.add(o);
+                }
+            }
+        }
+        return list.toArray();
+    }
+}

Propchange: commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/ArgUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/MessageFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/MessageFactory.java?rev=982526&view=auto
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/MessageFactory.java (added)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/MessageFactory.java Thu Aug  5 09:51:48 2010
@@ -0,0 +1,78 @@
+/*
+ * 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.util;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+
+import org.apache.commons.math.exception.Localizable;
+
+/**
+ * Class for constructing localized messages.
+ *
+ * @since 2.2
+ * @version $Revision$ $Date$
+ */
+public class MessageFactory {
+    /**
+     * Class contains only static methods.
+     */
+    private MessageFactory() {}
+
+    /**
+     * Builds a message string by from a pattern and its arguments.
+     *
+     * @param locale Locale in which the message should be translated.
+     * @param pattern Format specifier.
+     * @param arguments Format arguments.
+     * @return a localized message string.
+     */
+    public static String buildMessage(Locale locale,
+                                      Localizable pattern,
+                                      Object ... arguments) {
+        return buildMessage(locale, null, pattern, arguments);
+    }
+
+    /**
+     * Builds a message string by from two patterns (specific and general) and
+     * an argument list.
+     *
+     * @param locale Locale in which the message should be translated.
+     * @param specific Format specifier.
+     * @param general Format specifier.
+     * @param arguments Format arguments. They will be substituted first in
+     * the {@code specific} format specifier, then the remaining arguments
+     * will be substituted in the {@code general} format specifier.
+     * @return a localized message string.
+     */
+    public static String buildMessage(Locale locale,
+                                      Localizable specific,
+                                      Localizable general,
+                                      Object ... arguments) {
+        final StringBuilder sb = new StringBuilder();
+        MessageFormat fmt = null;
+        if (specific != null) {
+            fmt = new MessageFormat(specific.getLocalizedString(locale), locale);
+            sb.append(fmt.format(arguments));
+            sb.append(": ");
+        }
+        fmt = new MessageFormat(general.getLocalizedString(locale), locale);
+        sb.append(fmt.format(arguments));
+        
+        return sb.toString();
+    }
+}

Propchange: commons/proper/math/trunk/src/main/java/org/apache/commons/math/exception/util/MessageFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/fraction/BigFraction.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/fraction/BigFraction.java?rev=982526&r1=982525&r2=982526&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/fraction/BigFraction.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/fraction/BigFraction.java Thu Aug  5 09:51:48 2010
@@ -115,16 +115,8 @@ public class BigFraction
      *            the denominator, must not be <code>null</code>.
      * @throws ArithmeticException
      *             if the denominator is <code>zero</code>.
-     * @throws NullPointerException
-     *             if the numerator or the denominator is <code>zero</code>.
      */
     public BigFraction(BigInteger num, BigInteger den) {
-        if (num == null) {
-            throw MathRuntimeException.createNullPointerException(LocalizedFormats.NULL_NUMERATOR);
-        }
-        if (den == null) {
-            throw MathRuntimeException.createNullPointerException(LocalizedFormats.NULL_DENOMINATOR);
-        }
         if (BigInteger.ZERO.equals(den)) {
             throw MathRuntimeException.createArithmeticException(LocalizedFormats.ZERO_DENOMINATOR);
         }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/AbstractRealVector.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/AbstractRealVector.java?rev=982526&r1=982525&r2=982526&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/AbstractRealVector.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/AbstractRealVector.java Thu Aug  5 09:51:48 2010
@@ -21,7 +21,8 @@ import java.util.Iterator;
 import java.util.NoSuchElementException;
 
 import org.apache.commons.math.FunctionEvaluationException;
-import org.apache.commons.math.MathRuntimeException;
+import org.apache.commons.math.exception.MathUnsupportedOperationException;
+import org.apache.commons.math.exception.DimensionMismatchException;
 import org.apache.commons.math.analysis.BinaryFunction;
 import org.apache.commons.math.analysis.ComposableFunction;
 import org.apache.commons.math.analysis.UnivariateRealFunction;
@@ -29,7 +30,7 @@ import org.apache.commons.math.exception
 
 /**
  * This class provides default basic implementations for many methods in the
- * {@link RealVector} interface with.
+ * {@link RealVector} interface.
  * @version $Revision$ $Date$
  * @since 2.1
  */
@@ -53,11 +54,10 @@ public abstract class AbstractRealVector
      * inconsistent with vector size
      */
     protected void checkVectorDimensions(int n)
-        throws IllegalArgumentException {
-        double d = getDimension();
+        throws DimensionMismatchException {
+        int d = getDimension();
         if (d != n) {
-            throw MathRuntimeException.createIllegalArgumentException(
-                  LocalizedFormats.VECTOR_LENGTH_MISMATCH, d, n);
+            throw new DimensionMismatchException(d, n);
         }
     }
 
@@ -816,7 +816,7 @@ public abstract class AbstractRealVector
 
             /** {@inheritDoc} */
             public void remove() {
-                throw MathRuntimeException.createUnsupportedOperationException(LocalizedFormats.UNSUPPORTED_OPERATION);
+                throw new MathUnsupportedOperationException();
             }
         };
     }
@@ -924,7 +924,7 @@ public abstract class AbstractRealVector
 
         /** {@inheritDoc} */
         public void remove() {
-            throw MathRuntimeException.createUnsupportedOperationException(LocalizedFormats.UNSUPPORTED_OPERATION);
+            throw new MathUnsupportedOperationException();
         }
     }
 

Modified: commons/proper/math/trunk/src/main/resources/META-INF/localization/LocalizedFormats_fr.properties
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/resources/META-INF/localization/LocalizedFormats_fr.properties?rev=982526&r1=982525&r2=982526&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/resources/META-INF/localization/LocalizedFormats_fr.properties (original)
+++ commons/proper/math/trunk/src/main/resources/META-INF/localization/LocalizedFormats_fr.properties Thu Aug  5 09:51:48 2010
@@ -183,18 +183,19 @@ NO_FEASIBLE_SOLUTION = aucune solution r
 NO_OPTIMUM_COMPUTED_YET = aucun optimum n''a encore \u00e9t\u00e9 calcul\u00e9
 NO_RESULT_AVAILABLE = aucun r\u00e9sultat n''est disponible
 NO_SUCH_MATRIX_ENTRY = pas d''\u00e9l\u00e9ment ({0}, {1}) dans une matrice {2}x{3}
-NULL_COVARIANCE_MATRIX = la matrice de covariance est nulle
-NULL_DENOMINATOR = le d\u00e9nominateur est null
-NULL_DENOMINATOR_FORMAT = le format du d\u00e9nominateur ne doit pas \u00eatre nul
-NULL_FRACTION = fraction nulle
-NULL_FUNCTION = la fonction est nulle
-NULL_IMAGINARY_FORMAT = format imaginaire nul
-NULL_INPUT_ARRAY = tableau d''entr\u00e9e nul
-NULL_NUMERATOR = le num\u00e9rateur est null
-NULL_NUMERATOR_FORMAT = le format du num\u00e9rateur ne doit pas \u00eatre nul
-NULL_OBJECT_TRANSFORMATION = Exception de conversion dans une transformation, l''objet est nul
-NULL_REAL_FORMAT = format r\u00e9el nul
-NULL_WHOLE_FORMAT = le format complet ne doit pas \u00eatre nul
+NULL_NOT_ALLOWED = "null" n''est pas permis
+COVARIANCE_MATRIX = matrice de covariance
+DENOMINATOR = d\u00e9nominateur
+DENOMINATOR_FORMAT = format du d\u00e9nominateur
+FRACTION = fraction
+FUNCTION = fonction
+IMAGINARY_FORMAT = format imaginaire
+INPUT_ARRAY = tableau d''entr\u00e9e
+NUMERATOR = num\u00e9rateur
+NUMERATOR_FORMAT = format du num\u00e9rateur
+OBJECT_TRANSFORMATION = exception de conversion dans une transformation
+REAL_FORMAT = format r\u00e9el
+WHOLE_FORMAT = format complet
 NUMBER_TOO_LARGE = {0} est plus grand que le maximum ({1})
 NUMBER_TOO_SMALL = {0} est plus petit que le minimum ({1})
 NUMBER_TOO_LARGE_BOUND_EXCLUDED = {0} n''est pas strictement plus grand que le maximum ({1})

Modified: commons/proper/math/trunk/src/site/xdoc/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/xdoc/changes.xml?rev=982526&r1=982525&r2=982526&view=diff
==============================================================================
--- commons/proper/math/trunk/src/site/xdoc/changes.xml (original)
+++ commons/proper/math/trunk/src/site/xdoc/changes.xml Thu Aug  5 09:51:48 2010
@@ -94,6 +94,8 @@ The <action> type attribute can be add,u
       </action>
       <action dev="erans" type="add" issue="MATH-361">
         Created package "exception" to contain the new exceptions hierarchy.
+        Created package "exception.util": utilities for the exception classes
+        (e.g. managing the localization of error messages).
       </action>
       <action dev="erans" type="add" issue="MATH-378" due-to="Matthew Rowles">
         Implementation of linear interpolation.

Added: commons/proper/math/trunk/src/test/java/org/apache/commons/math/exception/util/ArgUtilsTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/exception/util/ArgUtilsTest.java?rev=982526&view=auto
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math/exception/util/ArgUtilsTest.java (added)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/exception/util/ArgUtilsTest.java Thu Aug  5 09:51:48 2010
@@ -0,0 +1,76 @@
+/*
+ * 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.util;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test for {@link ArgUtils}.
+ * 
+ * @version $Revision$ $Date$ 
+ */
+public class ArgUtilsTest {
+    @Test
+    public void testFlatten() {
+        final List<Object> orig = new ArrayList<Object>();
+
+        final Object[] struct = new Object[] {
+            new Object[] {
+                new Object[] {
+                    create(orig),
+                    create(orig),
+                },
+                create(orig),
+                new Object[] {
+                    create(orig),
+                }
+            },
+            create(orig),
+            new Object[] {
+                create(orig),
+                new Object[] {
+                    create(orig),
+                    create(orig),
+                }
+            },
+            create(orig),
+        };
+
+        Object[] flat = ArgUtils.flatten(struct);
+        Assert.assertEquals(flat.length, orig.size());
+
+        for (int i = 0, max = orig.size(); i < max; i++) {
+            Assert.assertEquals(orig.get(i), flat[i]);
+        }
+    }
+
+    /**
+     * Create and store an {@code Object}.
+     *
+     * @param list List to store to.
+     * @return the stored object.
+     */
+    private Object create(List<Object> list) {
+        final Object o = new Object();
+        list.add(o);
+        return o;
+    }
+}

Propchange: commons/proper/math/trunk/src/test/java/org/apache/commons/math/exception/util/ArgUtilsTest.java
------------------------------------------------------------------------------
    svn:eol-style = native