From 46d38512910af9572d9e312bda4c25cf1af85380 Mon Sep 17 00:00:00 2001 From: jack Date: Wed, 8 Oct 2025 17:06:47 +0500 Subject: [PATCH 1/6] add Method copyOf for MutablePair --- .../apache/commons/lang3/tuple/MutablePair.java | 17 +++++++++++++++++ .../commons/lang3/tuple/MutablePairTest.java | 9 +++++++++ 2 files changed, 26 insertions(+) diff --git a/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java b/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java index 1940c7a857c..11ac05f5220 100644 --- a/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java +++ b/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java @@ -72,6 +72,23 @@ public static MutablePair of(final L left, final R right) { return new MutablePair<>(left, right); } + /** + * Creates a mutable pair from an existing pair. + * + *

This factory allows the pair to be created using inference to + * obtain the generic types.

+ * + * @param the left element type. + * @param the right element type. + * @param pair the existing pair. + * @return a pair formed from the two parameters, not null. + * @throws NullPointerException if {@code pair} is null. + */ + public static MutablePair copyOf(final Pair pair) { + Objects.requireNonNull(pair, "pair"); + return new MutablePair<>(pair.getLeft(), pair.getRight()); + } + /** * Creates a mutable pair from a map entry. * diff --git a/src/test/java/org/apache/commons/lang3/tuple/MutablePairTest.java b/src/test/java/org/apache/commons/lang3/tuple/MutablePairTest.java index 84157dce75d..f9f1c1cec72 100644 --- a/src/test/java/org/apache/commons/lang3/tuple/MutablePairTest.java +++ b/src/test/java/org/apache/commons/lang3/tuple/MutablePairTest.java @@ -90,6 +90,15 @@ void testEquals() { assertNotEquals(p, new Object()); } + @Test + void testCopyOf() { + assertNullPointerException(() -> MutablePair.copyOf(null)); + final Pair pair = Pair.of(0, "foo"); + final MutablePair mutablePair = MutablePair.copyOf(pair); + assertEquals(pair.getLeft(), mutablePair.getLeft()); + assertEquals(pair.getRight(), mutablePair.getRight()); + } + @Test void testHashCode() { assertEquals(MutablePair.of(null, "foo").hashCode(), MutablePair.of(null, "foo").hashCode()); From 02c448bb119b4fd714fffcb4d4ada3183e5dc6dc Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 9 Oct 2025 09:14:24 +0500 Subject: [PATCH 2/6] fix code refactor --- .../org/apache/commons/lang3/tuple/MutablePair.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java b/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java index 11ac05f5220..c06c953674f 100644 --- a/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java +++ b/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java @@ -78,15 +78,16 @@ public static MutablePair of(final L left, final R right) { *

This factory allows the pair to be created using inference to * obtain the generic types.

* - * @param the left element type. - * @param the right element type. * @param pair the existing pair. * @return a pair formed from the two parameters, not null. * @throws NullPointerException if {@code pair} is null. + * @since 3.13.0 */ - public static MutablePair copyOf(final Pair pair) { - Objects.requireNonNull(pair, "pair"); - return new MutablePair<>(pair.getLeft(), pair.getRight()); + public static MutablePair copyOf(final Map.Entry pair) { + of(Objects.requireNonNull(pair, "pair")); + final L left = pair.getKey(); + final R right = pair.getValue(); + return new MutablePair<>(left, right); } /** From c5c0f5055c87b251f6099404061da44ef780a7a9 Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 9 Oct 2025 09:25:50 +0500 Subject: [PATCH 3/6] fix code refactor --- src/main/java/org/apache/commons/lang3/tuple/MutablePair.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java b/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java index c06c953674f..e66b0e45ad0 100644 --- a/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java +++ b/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java @@ -81,7 +81,7 @@ public static MutablePair of(final L left, final R right) { * @param pair the existing pair. * @return a pair formed from the two parameters, not null. * @throws NullPointerException if {@code pair} is null. - * @since 3.13.0 + * @since 3.20.0 */ public static MutablePair copyOf(final Map.Entry pair) { of(Objects.requireNonNull(pair, "pair")); From 4dce8317f1b1456b684ac5b1401027380114277b Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 9 Oct 2025 09:28:05 +0500 Subject: [PATCH 4/6] fix code refactor --- src/changes/changes.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 520f87c3d0a..d50f782cee7 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -52,6 +52,7 @@ The type attribute can be add,update,fix,remove. Use accessors in ToStringStyle so subclasses can effectively override them. `LocaleUtils.toLocale(String)` for a 2 letter country code now returns a value instead of throwing an `IllegalArgumentException`. + Add MutablePair.copyOf(Map.Entry). Add SystemProperties.getPath(String, Supplier<Path>). Add JavaVersion.JAVA_25. Add SystemUtils.IS_JAVA_25. From e0b130c7857944de9cf79f35b6da06c11e030bb4 Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 9 Oct 2025 11:23:14 +0500 Subject: [PATCH 5/6] fix javadoc error --- src/main/java/org/apache/commons/lang3/tuple/MutablePair.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java b/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java index e66b0e45ad0..3b8fde50b53 100644 --- a/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java +++ b/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java @@ -79,6 +79,8 @@ public static MutablePair of(final L left, final R right) { * obtain the generic types.

* * @param pair the existing pair. + * @param the left element type. + * @param the right element type. * @return a pair formed from the two parameters, not null. * @throws NullPointerException if {@code pair} is null. * @since 3.20.0 From de0c9d286888369e4c56e5c282e8bc430e46964b Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 9 Oct 2025 11:38:51 +0500 Subject: [PATCH 6/6] fix javadoc error --- src/main/java/org/apache/commons/lang3/tuple/MutablePair.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java b/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java index 3b8fde50b53..23b1dcf355e 100644 --- a/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java +++ b/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java @@ -85,7 +85,7 @@ public static MutablePair of(final L left, final R right) { * @throws NullPointerException if {@code pair} is null. * @since 3.20.0 */ - public static MutablePair copyOf(final Map.Entry pair) { + public static MutablePair copyOf(final Map.Entry pair) { of(Objects.requireNonNull(pair, "pair")); final L left = pair.getKey(); final R right = pair.getValue();