diff --git a/source/xzs/pom.xml b/source/xzs/pom.xml index aa17df8b..20159d45 100644 --- a/source/xzs/pom.xml +++ b/source/xzs/pom.xml @@ -20,6 +20,8 @@ 1.8 8.0.17 2.1.6.RELEASE + + true @@ -181,7 +183,7 @@ org.apache.maven.plugins maven-surefire-plugin - true + ${skip.unit.tests} diff --git a/source/xzs/src/main/java/com/mindskip/xzs/event/OnRegistrationCompleteEvent.java b/source/xzs/src/main/java/com/mindskip/xzs/event/OnRegistrationCompleteEvent.java index 9ff4ead4..94613afa 100644 --- a/source/xzs/src/main/java/com/mindskip/xzs/event/OnRegistrationCompleteEvent.java +++ b/source/xzs/src/main/java/com/mindskip/xzs/event/OnRegistrationCompleteEvent.java @@ -12,7 +12,10 @@ import org.springframework.context.ApplicationEvent; public class OnRegistrationCompleteEvent extends ApplicationEvent { - private final User user; + /** + * Avoid serializing full user details when this event is persisted. + */ + private final transient User user; /** diff --git a/source/xzs/src/test/java/com/mindskip/xzs/event/OnRegistrationCompleteEventSerializationTest.java b/source/xzs/src/test/java/com/mindskip/xzs/event/OnRegistrationCompleteEventSerializationTest.java new file mode 100644 index 00000000..2bef93bf --- /dev/null +++ b/source/xzs/src/test/java/com/mindskip/xzs/event/OnRegistrationCompleteEventSerializationTest.java @@ -0,0 +1,38 @@ +package com.mindskip.xzs.event; + +import com.mindskip.xzs.domain.User; +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; + +import static org.junit.Assert.assertNull; + +public class OnRegistrationCompleteEventSerializationTest { + + @Test + public void dedicatedUserFieldIsNotSerialized() throws Exception { + User user = new User(); + user.setId(1); + user.setUserName("alice"); + user.setPassword("secret-password"); + + OnRegistrationCompleteEvent event = new OnRegistrationCompleteEvent(user); + + byte[] bytes; + try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baos)) { + oos.writeObject(event); + bytes = baos.toByteArray(); + } + + OnRegistrationCompleteEvent deserialized; + try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes))) { + deserialized = (OnRegistrationCompleteEvent) ois.readObject(); + } + + assertNull("transient user field should not survive serialization", deserialized.getUser()); + } +}