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