You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2004/10/09 13:55:51 UTC

cvs commit: jakarta-commons/lang/src/test/org/apache/commons/lang ArrayUtilsAddTest.java

scolebourne    2004/10/09 04:55:51

  Modified:    lang/src/java/org/apache/commons/lang ArrayUtils.java
               lang/src/test/org/apache/commons/lang ArrayUtilsAddTest.java
  Log:
  Fix bug where add() didn't use array type
  Remove unecessary calls to lastIndex() for performance
  
  Revision  Changes    Path
  1.48      +13 -12    jakarta-commons/lang/src/java/org/apache/commons/lang/ArrayUtils.java
  
  Index: ArrayUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/ArrayUtils.java,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- ArrayUtils.java	8 Oct 2004 00:11:00 -0000	1.47
  +++ ArrayUtils.java	9 Oct 2004 11:55:51 -0000	1.48
  @@ -2943,9 +2943,10 @@
        * @since 2.1
        */
       public static Object[] add(Object[] array, Object element) {
  -        Object newArray = copyArrayGrow1(array, element != null ? element.getClass() : Object.class);
  -        Array.set(newArray, lastIndex(newArray), element);
  -        return (Object[]) newArray;
  +        Class type = (array != null ? array.getClass() : (element != null ? element.getClass() : Object.class));
  +        Object[] newArray = (Object[]) copyArrayGrow1(array, type);
  +        newArray[newArray.length - 1] = element;
  +        return newArray;
       }
       
       /**
  @@ -2971,7 +2972,7 @@
        */
       public static boolean[] add(boolean[] array, boolean element) {
           boolean[] newArray = (boolean[])copyArrayGrow1(array, Boolean.TYPE);
  -        newArray[lastIndex(newArray)] = element;
  +        newArray[newArray.length - 1] = element;
           return newArray;
       }
       
  @@ -2998,7 +2999,7 @@
        */
       public static byte[] add(byte[] array, byte element) {
           byte[] newArray = (byte[])copyArrayGrow1(array, Byte.TYPE);
  -        newArray[lastIndex(newArray)] = element;
  +        newArray[newArray.length - 1] = element;
           return newArray;
       }
       
  @@ -3025,7 +3026,7 @@
        */
       public static char[] add(char[] array, char element) {
           char[] newArray = (char[])copyArrayGrow1(array, Character.TYPE);
  -        newArray[lastIndex(newArray)] = element;
  +        newArray[newArray.length - 1] = element;
           return newArray;
       }
       
  @@ -3052,7 +3053,7 @@
        */
       public static double[] add(double[] array, double element) {
           double[] newArray = (double[])copyArrayGrow1(array, Double.TYPE);
  -        newArray[lastIndex(newArray)] = element;
  +        newArray[newArray.length - 1] = element;
           return newArray;
       }
       
  @@ -3079,7 +3080,7 @@
        */
       public static float[] add(float[] array, float element) {
           float[] newArray = (float[])copyArrayGrow1(array, Float.TYPE);
  -        newArray[lastIndex(newArray)] = element;
  +        newArray[newArray.length - 1] = element;
           return newArray;
       }
       
  @@ -3106,7 +3107,7 @@
        */
       public static int[] add(int[] array, int element) {
           int[] newArray = (int[])copyArrayGrow1(array, Integer.TYPE);
  -        newArray[lastIndex(newArray)] = element;
  +        newArray[newArray.length - 1] = element;
           return newArray;
       }
       
  @@ -3133,7 +3134,7 @@
        */
       public static long[] add(long[] array, long element) {
           long[] newArray = (long[])copyArrayGrow1(array, Long.TYPE);
  -        newArray[lastIndex(newArray)] = element;
  +        newArray[newArray.length - 1] = element;
           return newArray;
       }
       
  @@ -3160,7 +3161,7 @@
        */
       public static short[] add(short[] array, short element) {
           short[] newArray = (short[])copyArrayGrow1(array, Short.TYPE);
  -        newArray[lastIndex(newArray)] = element;
  +        newArray[newArray.length - 1] = element;
           return newArray;
       }
       
  
  
  
  1.4       +19 -1     jakarta-commons/lang/src/test/org/apache/commons/lang/ArrayUtilsAddTest.java
  
  Index: ArrayUtilsAddTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/ArrayUtilsAddTest.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ArrayUtilsAddTest.java	16 Mar 2004 01:40:57 -0000	1.3
  +++ ArrayUtilsAddTest.java	9 Oct 2004 11:55:51 -0000	1.4
  @@ -178,17 +178,35 @@
           newArray = ArrayUtils.add((Object[])null, null);
           assertTrue(Arrays.equals((new Object[]{null}), newArray));
           assertEquals(Object.class, newArray.getClass().getComponentType());
  +        
           newArray = ArrayUtils.add((Object[])null, "a");
           assertTrue(Arrays.equals((new String[]{"a"}), newArray));
           assertTrue(Arrays.equals((new Object[]{"a"}), newArray));
           assertEquals(String.class, newArray.getClass().getComponentType());
  +        
           String[] stringArray1 = new String[]{"a", "b", "c"};
           newArray = ArrayUtils.add(stringArray1, null);
           assertTrue(Arrays.equals((new String[]{"a", "b", "c", null}), newArray));
           assertEquals(String.class, newArray.getClass().getComponentType());
  +        
           newArray = ArrayUtils.add(stringArray1, "d");
           assertTrue(Arrays.equals((new String[]{"a", "b", "c", "d"}), newArray));
           assertEquals(String.class, newArray.getClass().getComponentType());
  +        
  +        Number[] numberArray1 = new Number[]{new Integer(1), new Double(2)};
  +        newArray = ArrayUtils.add(numberArray1, new Float(3));
  +        assertTrue(Arrays.equals((new Number[]{new Integer(1), new Double(2), new Float(3)}), newArray));
  +        assertEquals(Number.class, newArray.getClass().getComponentType());
  +        
  +        numberArray1 = null;
  +        newArray = ArrayUtils.add(numberArray1, new Float(3));
  +        assertTrue(Arrays.equals((new Float[]{new Float(3)}), newArray));
  +        assertEquals(Float.class, newArray.getClass().getComponentType());
  +        
  +        numberArray1 = null;
  +        newArray = ArrayUtils.add(numberArray1, null);
  +        assertTrue(Arrays.equals((new Object[]{null}), newArray));
  +        assertEquals(Object.class, newArray.getClass().getComponentType());
       }
       
       public void testAddObjectArrayToObjectArray() {
  
  
  

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