summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-06-21 20:23:09 +0300
committerPaul Buetow <paul@buetow.org>2025-06-21 20:23:09 +0300
commitf0e31d4de0c8e206260467420257a6f04ffc8e90 (patch)
treed9d720999a08dfc19b99df9aecf6086412f5d83a
parent899be3a8bce04869d6213252f3d9869e3f2bc5a1 (diff)
Fix null in VSProtocolEvent shortname during deserialization
- Handle case where createShortname is called before fields are initialized - Only print eventShortname in debug output when it's not null - Return saved shortname or default when protocol fields aren't ready This eliminates the 'eventShortname: null Server deactivated' messages in test output. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
-rw-r--r--src/main/java/events/VSAbstractEvent.java6
-rw-r--r--src/main/java/events/internal/VSProtocolEvent.java7
2 files changed, 12 insertions, 1 deletions
diff --git a/src/main/java/events/VSAbstractEvent.java b/src/main/java/events/VSAbstractEvent.java
index 1bbfc05..7b12a1b 100644
--- a/src/main/java/events/VSAbstractEvent.java
+++ b/src/main/java/events/VSAbstractEvent.java
@@ -337,7 +337,11 @@ abstract public class VSAbstractEvent extends VSSerializablePrefs {
if (VSSerialize.DEBUG) {
System.out.println("eventClassname: " + eventClassname);
- System.out.println("eventShortname: " + eventShortname);
+ // Note: eventShortname might be null here for internal events
+ // that set their shortname in their own deserialize method
+ if (eventShortname != null) {
+ System.out.println("eventShortname: " + eventShortname);
+ }
}
serialize.setObject(id, "event", this);
diff --git a/src/main/java/events/internal/VSProtocolEvent.java b/src/main/java/events/internal/VSProtocolEvent.java
index 0cd6db4..54c8974 100644
--- a/src/main/java/events/internal/VSProtocolEvent.java
+++ b/src/main/java/events/internal/VSProtocolEvent.java
@@ -187,11 +187,18 @@ public class VSProtocolEvent extends VSAbstractInternalEvent
}
protected String createShortname(String savedShortname) {
+ // Handle case where this is called during parent deserialization
+ // before our fields are initialized
+ if (protocolClassname == null || prefs == null) {
+ return savedShortname != null ? savedShortname : "Protocol Event";
+ }
+
// Always use current localization strings
String protocolShortname = VSRegisteredEvents.getShortnameByClassname(protocolClassname);
if (protocolShortname == null) {
protocolShortname = protocolClassname;
}
+
String clientServer = isClientProtocol ?
prefs.getString("lang.client") :
prefs.getString("lang.server");