[
https://issues.apache.org/jira/browse/LANG-1759?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Maxim Butov updated LANG-1759:
------------------------------
Description:
SerializationUtils does not clone serializable lambda.
{code:java}
import java.io.Serializable;
import java.util.function.Supplier;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class SerializationUtilsTest {
interface SerializableSupplier<T> extends Supplier<T>, Serializable {
}
@Test
void testCloneLambda() {
SerializableSupplier<String> supplier = () -> "test";
assertEquals("test", supplier.get());
// next lines works fine
SerializableSupplier<String> springClone =
org.springframework.util.SerializationUtils.clone(supplier);
assertEquals("test", springClone.get());
// line below produces an error
SerializableSupplier<String> commonsClone =
org.apache.commons.lang3.SerializationUtils.clone(supplier);
assertEquals("test", commonsClone.get());
}
}
{code}
Got an exception
{noformat}
Cannot cast SerializationUtilsTest$$Lambda/0x00007f6ec8142940 to
SerializationUtilsTest$$Lambda/0x00007f6ec8141ca0
java.lang.ClassCastException: Cannot cast
SerializationUtilsTest$$Lambda/0x00007f6ec8142940 to
SerializationUtilsTest$$Lambda/0x00007f6ec8141ca0
at java.base/java.lang.Class.cast(Class.java:4067)
at
org.apache.commons.lang3.SerializationUtils.clone(SerializationUtils.java:132)
at
SerializationUtilsTest.testCloneLambda(SerializationUtilsTest.java:24)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
{noformat}
was:
SerializationUtils does not clone serializable lambda.
{code:java}
import java.io.Serializable;
import java.util.function.Supplier;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class SerializationUtilsTest {
interface SerializableSupplier<T> extends Supplier<T>, Serializable {
}
@Test
void testCloneLambda() {
SerializableSupplier<String> supplier = () -> "test";
assertEquals("test", supplier.get());
// next line works fine
SerializableSupplier<String> springClone =
org.springframework.util.SerializationUtils.clone(supplier);
assertEquals("test", springClone.get());
// next line produces an error
SerializableSupplier<String> commonsClone =
org.apache.commons.lang3.SerializationUtils.clone(supplier);
assertEquals("test", commonsClone.get());
}
}
{code}
Got an exception
{noformat}
Cannot cast SerializationUtilsTest$$Lambda/0x00007f6ec8142940 to
SerializationUtilsTest$$Lambda/0x00007f6ec8141ca0
java.lang.ClassCastException: Cannot cast
SerializationUtilsTest$$Lambda/0x00007f6ec8142940 to
SerializationUtilsTest$$Lambda/0x00007f6ec8141ca0
at java.base/java.lang.Class.cast(Class.java:4067)
at
org.apache.commons.lang3.SerializationUtils.clone(SerializationUtils.java:132)
at
SerializationUtilsTest.testCloneLambda(SerializationUtilsTest.java:24)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
{noformat}
> SerializationUtils does not clone serializable lambda.
> ------------------------------------------------------
>
> Key: LANG-1759
> URL: https://issues.apache.org/jira/browse/LANG-1759
> Project: Commons Lang
> Issue Type: Bug
> Components: lang.*
> Affects Versions: 3.17.0
> Environment: Linux
> OpenJDK Runtime Environment Temurin-17.0.8.1+1 (build 17.0.8.1+1)
> Reporter: Maxim Butov
> Priority: Major
>
> SerializationUtils does not clone serializable lambda.
> {code:java}
> import java.io.Serializable;
> import java.util.function.Supplier;
> import org.junit.jupiter.api.Test;
> import static org.junit.jupiter.api.Assertions.assertEquals;
> public class SerializationUtilsTest {
> interface SerializableSupplier<T> extends Supplier<T>, Serializable {
> }
> @Test
> void testCloneLambda() {
> SerializableSupplier<String> supplier = () -> "test";
> assertEquals("test", supplier.get());
> // next lines works fine
> SerializableSupplier<String> springClone =
> org.springframework.util.SerializationUtils.clone(supplier);
> assertEquals("test", springClone.get());
> // line below produces an error
> SerializableSupplier<String> commonsClone =
> org.apache.commons.lang3.SerializationUtils.clone(supplier);
> assertEquals("test", commonsClone.get());
> }
> }
> {code}
> Got an exception
> {noformat}
> Cannot cast SerializationUtilsTest$$Lambda/0x00007f6ec8142940 to
> SerializationUtilsTest$$Lambda/0x00007f6ec8141ca0
> java.lang.ClassCastException: Cannot cast
> SerializationUtilsTest$$Lambda/0x00007f6ec8142940 to
> SerializationUtilsTest$$Lambda/0x00007f6ec8141ca0
> at java.base/java.lang.Class.cast(Class.java:4067)
> at
> org.apache.commons.lang3.SerializationUtils.clone(SerializationUtils.java:132)
> at
> SerializationUtilsTest.testCloneLambda(SerializationUtilsTest.java:24)
> at java.base/java.lang.reflect.Method.invoke(Method.java:580)
> at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
> at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)