From d0c3eda62dea2a6bb552883b8096d61870fbf072 Mon Sep 17 00:00:00 2001 From: Joseph Mangmang Date: Thu, 10 Nov 2022 05:27:53 +0000 Subject: [PATCH 1/2] Fix PusherEvent user id wrong key. Change userId to user_id --- src/main/java/com/pusher/client/channel/PusherEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/pusher/client/channel/PusherEvent.java b/src/main/java/com/pusher/client/channel/PusherEvent.java index e60ab529..6a8957a0 100644 --- a/src/main/java/com/pusher/client/channel/PusherEvent.java +++ b/src/main/java/com/pusher/client/channel/PusherEvent.java @@ -70,7 +70,7 @@ public String toString() { public PusherEvent(String event, String channel, String userId, String data) { jsonObject.addProperty("event", event); jsonObject.addProperty("channel", channel); - jsonObject.addProperty("userId", userId); + jsonObject.addProperty("user_id", userId); jsonObject.addProperty("data", data); } From ddff0813fcd4beed2e8b0b9f6ab0d982164750df Mon Sep 17 00:00:00 2001 From: Keith Date: Mon, 5 Oct 2026 18:17:13 -0400 Subject: [PATCH 2/2] Skip user_id when it is null in PusherEvent constructor Adding a null user_id stores a JsonNull, which makes getUserId() throw UnsupportedOperationException. Decrypted events on private-encrypted channels pass a null user ID, so they would hit this. --- .../com/pusher/client/channel/PusherEvent.java | 4 +++- .../com/pusher/client/channel/PusherEventTest.java | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/pusher/client/channel/PusherEvent.java b/src/main/java/com/pusher/client/channel/PusherEvent.java index 6a8957a0..716f37c8 100644 --- a/src/main/java/com/pusher/client/channel/PusherEvent.java +++ b/src/main/java/com/pusher/client/channel/PusherEvent.java @@ -70,7 +70,9 @@ public String toString() { public PusherEvent(String event, String channel, String userId, String data) { jsonObject.addProperty("event", event); jsonObject.addProperty("channel", channel); - jsonObject.addProperty("user_id", userId); + if (userId != null) { + jsonObject.addProperty("user_id", userId); + } jsonObject.addProperty("data", data); } diff --git a/src/test/java/com/pusher/client/channel/PusherEventTest.java b/src/test/java/com/pusher/client/channel/PusherEventTest.java index c2312f6f..fc57835e 100644 --- a/src/test/java/com/pusher/client/channel/PusherEventTest.java +++ b/src/test/java/com/pusher/client/channel/PusherEventTest.java @@ -1,6 +1,7 @@ package com.pusher.client.channel; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import org.junit.Before; import org.junit.Test; @@ -45,6 +46,19 @@ public void testUserIdIsExtracted() { ); assertEquals("my-user-id", e.getUserId()); } + + @Test + public void testUserIdIsSetByConstructor() { + final PusherEvent e = new PusherEvent("my-event", "my-channel", "my-user-id", "{}"); + assertEquals("my-user-id", e.getUserId()); + } + + @Test + public void testNullUserIdFromConstructorIsNull() { + final PusherEvent e = new PusherEvent("my-event", "my-channel", null, "{}"); + assertNull(e.getUserId()); + } + @Test public void testErrorData() { final PusherEvent e = PusherEvent.fromJson(