@@ -208,7 +208,7 @@ private void handle(CharSequence data) {
208208 && (raw .get ("result" ) != null || raw .get ("error" ) != null )) {
209209 handleResponse (asString , raw );
210210 } else if (raw .get ("method" ) instanceof String && raw .get ("params" ) instanceof Map ) {
211- handleEventResponse (asString , raw );
211+ handleEventResponse (raw );
212212 } else {
213213 LOG .warning (() -> "Unhandled type:" + data );
214214 }
@@ -242,15 +242,14 @@ private void handleResponse(String rawDataString, Map<String, Object> rawDataMap
242242 }
243243 }
244244
245- private void handleEventResponse (String rawDataString , Map <String , Object > rawDataMap ) {
245+ private void handleEventResponse (Map <String , Object > rawDataMap ) {
246246 LOG .log (
247247 getDebugLogLevel (),
248248 () -> "Method" + rawDataMap .get ("method" ) + "called with" + eventCallbacks .keySet ().size ()
249249 + "callbacks available" );
250250 Lock lock = callbacksLock .readLock ();
251251 lock .lock ();
252252 try {
253- // TODO: Also only decode once.
254253 eventCallbacks .keySet ().stream ()
255254 .filter (event -> {
256255 LOG .log (
@@ -259,36 +258,24 @@ private void handleEventResponse(String rawDataString, Map<String, Object> rawDa
259258 return rawDataMap .get ("method" ).equals (event .getMethod ());
260259 })
261260 .forEach (event -> {
262- try (StringReader reader = new StringReader (rawDataString );
263- JsonInput input = JSON .newInput (reader )) {
264- Object value = null ;
265- input .beginObject ();
266- while (input .hasNext ()) {
267- switch (input .nextName ()) {
268- case "params" :
269- value = event .getMapper ().apply (input );
270- break ;
271-
272- default :
273- input .skipValue ();
274- break ;
275- }
276- }
277- input .endObject ();
278-
279- if (value == null ) {
280- return ;
281- }
282-
283- final Object finalValue = value ;
284-
285- for (Consumer <?> action : eventCallbacks .get (event )) {
286- @ SuppressWarnings ("unchecked" ) Consumer <Object > obj = (Consumer <Object >) action ;
287- LOG .log (
288- getDebugLogLevel (),
289- String .format ("Calling callback for %s using %s being passed %s" , event , obj , finalValue ));
290- obj .accept (finalValue );
291- }
261+ Map <String , Object > params = (Map <String , Object >) rawDataMap .get ("params" );
262+ Object value = null ;
263+ if (params != null ) {
264+ value = event .getMapper ().apply (params );
265+ }
266+ if (value == null ) {
267+ return ;
268+ }
269+
270+ final Object finalValue = value ;
271+
272+ for (Consumer <?> action : eventCallbacks .get (event )) {
273+ @ SuppressWarnings ("unchecked" ) Consumer <Object > obj = (Consumer <Object >) action ;
274+ LOG .log (
275+ getDebugLogLevel (),
276+ String .format ("Calling callback for %s using %s being passed %s" , event , obj ,
277+ finalValue ));
278+ obj .accept (finalValue );
292279 }
293280 });
294281 } finally {
0 commit comments