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();