From 1eef599bb2251a42aa5c918b2e0e08f5c2cf9c36 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Fri, 28 Jul 2023 23:37:05 +0200 Subject: [PATCH] IDEMPIERE-5811 - Fix NPE on event for BroadcastMessages / fix kill session feature (#1956) --- .../webui/desktop/DefaultDesktop.java | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java index 92ce8955cb..0fb7ce8df3 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java @@ -972,49 +972,44 @@ public class DefaultDesktop extends TabbedDesktop implements MenuListener, Seria @Override public void onEvent(Event event) throws Exception { BroadCastMsg msg = (BroadCastMsg) event.getData(); - MBroadcastMessage mbMessage = MBroadcastMessage.get(Env.getCtx(), msg.getIntData()); - - if (mbMessage == null) - return; + MBroadcastMessage mbMessage = null; switch (msg.getEventId()) { case BroadCastUtil.EVENT_TEST_BROADCAST_MESSAGE: - String currSession = Integer - .toString(Env.getContextAsInt(Env.getCtx(), - "AD_Session_ID")); + mbMessage = MBroadcastMessage.get(Env.getCtx(), msg.getIntData()); + if (mbMessage == null) + return; + String currSession = Integer.toString(Env.getContextAsInt(Env.getCtx(), "AD_Session_ID")); if (currSession.equals(msg.getTarget())) { BroadcastMessageWindow testMessageWindow = new BroadcastMessageWindow( pnlHead); testMessageWindow.appendMessage(mbMessage, true); testMessageWindow = null; - } break; case BroadCastUtil.EVENT_BROADCAST_MESSAGE: + mbMessage = MBroadcastMessage.get(Env.getCtx(), msg.getIntData()); + if (mbMessage == null) + return; if (mbMessage.isValidUserforMessage()) { - BroadcastMessageWindow messageWindow = new BroadcastMessageWindow( pnlHead); messageWindow.appendMessage(mbMessage, false); } break; case BroadCastUtil.EVENT_SESSION_TIMEOUT: - currSession = Integer.toString(Env.getContextAsInt( Env.getCtx(), "AD_Session_ID")); if (currSession.equalsIgnoreCase(msg.getTarget())) { new TimeoutPanel(pnlHead, msg.getIntData()); } - break; case BroadCastUtil.EVENT_SESSION_ONNODE_TIMEOUT: - currSession = WebUtil.getServerName(); - if (currSession.equalsIgnoreCase(msg.getTarget())) { new TimeoutPanel(pnlHead, msg.getIntData()); } - + break; } }