@@ -40,7 +40,7 @@ public final class DeviceStateHandler implements DealerClient.MessageListener, D
4040
4141 private final Session session ;
4242 private final Connect .DeviceInfo .Builder deviceInfo ;
43- private final List <Listener > listeners = new ArrayList <>();
43+ private final List <Listener > listeners = Collections . synchronizedList ( new ArrayList <>() );
4444 private final Connect .PutStateRequest .Builder putState ;
4545 private volatile String connectionId = null ;
4646
@@ -79,15 +79,11 @@ private static Connect.DeviceInfo.Builder initializeDeviceInfo(@NotNull Session
7979 }
8080
8181 public void addListener (@ NotNull Listener listener ) {
82- synchronized (listeners ) {
83- listeners .add (listener );
84- }
82+ listeners .add (listener );
8583 }
8684
8785 public void removeListener (@ NotNull Listener listener ) {
88- synchronized (listeners ) {
89- listeners .remove (listener );
90- }
86+ listeners .remove (listener );
9187 }
9288
9389 private void notifyReady () {
@@ -96,6 +92,11 @@ private void notifyReady() {
9692 }
9793
9894 private void notifyCommand (@ NotNull Endpoint endpoint , @ NotNull CommandBody data ) {
95+ if (listeners .isEmpty ()) {
96+ LOGGER .warn (String .format ("Cannot dispatch command because there are no listeners. {command: %s}" , endpoint ));
97+ return ;
98+ }
99+
99100 for (Listener listener : new ArrayList <>(listeners )) {
100101 try {
101102 listener .command (endpoint , data );
0 commit comments