You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2019/12/28 10:11:07 UTC
[groovy] branch GROOVY_3_0_X updated: Rename method name and tweak
implementation
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
new 1db7188 Rename method name and tweak implementation
1db7188 is described below
commit 1db71881c3f5748ef173ef8b9bce5e33b5fe6c20
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sat Dec 28 18:10:12 2019 +0800
Rename method name and tweak implementation
(cherry picked from commit 43fa4c77013e5cdeb7c21ea5f9f7faa09febf5c1)
---
src/main/java/groovy/lang/MetaClassImpl.java | 4 +--
src/main/java/org/apache/groovy/util/Arrays.java | 11 ++++-----
src/test/org/apache/groovy/util/ArraysTest.java | 31 ++++++++++++++----------
3 files changed, 25 insertions(+), 21 deletions(-)
diff --git a/src/main/java/groovy/lang/MetaClassImpl.java b/src/main/java/groovy/lang/MetaClassImpl.java
index ae99626..1484ac3 100644
--- a/src/main/java/groovy/lang/MetaClassImpl.java
+++ b/src/main/java/groovy/lang/MetaClassImpl.java
@@ -109,7 +109,7 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
-import static org.apache.groovy.util.Arrays.merge;
+import static org.apache.groovy.util.Arrays.concat;
import static org.codehaus.groovy.ast.tools.GeneralUtils.inSamePackage;
import static org.codehaus.groovy.reflection.ReflectionCache.isAssignableFrom;
@@ -186,7 +186,7 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
metaMethodIndex = new MetaMethodIndex(theCachedClass);
final MetaMethod[] metaMethods = theCachedClass.getNewMetaMethods();
if (add != null && add.length != 0) {
- myNewMetaMethods = merge(metaMethods, add);
+ myNewMetaMethods = concat(metaMethods, add);
additionalMetaMethods = metaMethods;
} else {
myNewMetaMethods = metaMethods;
diff --git a/src/main/java/org/apache/groovy/util/Arrays.java b/src/main/java/org/apache/groovy/util/Arrays.java
index 1912848..67b8abb 100644
--- a/src/main/java/org/apache/groovy/util/Arrays.java
+++ b/src/main/java/org/apache/groovy/util/Arrays.java
@@ -28,16 +28,15 @@ import java.lang.reflect.Array;
public class Arrays {
/**
- * Merge arrays
+ * Concatenate arrays
*
* @param arrays arrays to merge
- * @param <T> array type
- * @return the merged array
+ * @param <T> array component type
+ * @return the concatenated array
*/
@SuppressWarnings("unchecked")
- public static <T> T[] merge(T[]... arrays) {
- if (0 == arrays.length) throw new IllegalArgumentException("arrays should not be empty");
- if (1 == arrays.length) return arrays[0];
+ public static <T> T[] concat(T[]... arrays) {
+ if (0 == arrays.length) return null;
int resultLength = java.util.Arrays.stream(arrays).map(e -> e.length).reduce(0, Integer::sum);
T[] resultArray = (T[]) Array.newInstance(arrays[0].getClass().getComponentType(), resultLength);
diff --git a/src/test/org/apache/groovy/util/ArraysTest.java b/src/test/org/apache/groovy/util/ArraysTest.java
index f46e336..37ca71b 100644
--- a/src/test/org/apache/groovy/util/ArraysTest.java
+++ b/src/test/org/apache/groovy/util/ArraysTest.java
@@ -23,36 +23,41 @@ import org.junit.Test;
public class ArraysTest {
@Test
- public void testMerge0() {
- try {
- Integer[] result = Arrays.merge();
- Assert.fail("should throw IllegalArgumentException");
- } catch (IllegalArgumentException e) {
- Assert.assertTrue(e.getMessage().contains("arrays should not be empty"));
- }
+ public void testConcat0() {
+ Assert.assertNull(Arrays.concat());
}
@Test
- public void testMerge1() {
+ public void testConcat1() {
Integer[] a = new Integer[] {1, 2};
- Integer[] result = Arrays.merge(a);
+ Integer[] result = Arrays.concat(a);
+ Assert.assertNotSame(a, result);
Assert.assertArrayEquals(new Integer[] {1, 2}, result);
}
@Test
- public void testMerge2() {
+ public void testConcat2() {
+ Integer[] a = new Integer[] {1, 2};
+ Integer[] b = new Integer[0];
+ Integer[] result = Arrays.concat(a, b);
+ Assert.assertNotSame(a, result);
+ Assert.assertArrayEquals(new Integer[] {1, 2}, result);
+ }
+
+ @Test
+ public void testConcat3() {
Integer[] a = new Integer[] {1, 2};
Integer[] b = new Integer[] {3, 4};
- Integer[] result = Arrays.merge(a, b);
+ Integer[] result = Arrays.concat(a, b);
Assert.assertArrayEquals(new Integer[] {1, 2, 3, 4}, result);
}
@Test
- public void testMerge3() {
+ public void testConcat4() {
Integer[] a = new Integer[] {1, 2};
Integer[] b = new Integer[] {3, 4};
Integer[] c = new Integer[] {5, 6, 7, 8, 9};
- Integer[] result = Arrays.merge(a, b, c);
+ Integer[] result = Arrays.concat(a, b, c);
Assert.assertArrayEquals(new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9}, result);
}
}