Maxim Butov created LANG-1759:
---------------------------------

             Summary: 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


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}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to