11package com .binance .api .client .impl ;
22
3- import java .io .IOException ;
4- import okhttp3 .Response ;
5- import okhttp3 .WebSocket ;
6- import okhttp3 .WebSocketListener ;
73import com .binance .api .client .BinanceApiCallback ;
84import com .binance .api .client .exception .BinanceApiException ;
95import com .fasterxml .jackson .core .type .TypeReference ;
106import com .fasterxml .jackson .databind .ObjectMapper ;
7+ import com .fasterxml .jackson .databind .ObjectReader ;
8+ import okhttp3 .Response ;
9+ import okhttp3 .WebSocket ;
10+ import okhttp3 .WebSocketListener ;
11+
12+ import java .io .IOException ;
1113
1214/**
1315 * Binance API WebSocket listener.
@@ -16,32 +18,26 @@ public class BinanceApiWebSocketListener<T> extends WebSocketListener {
1618
1719 private BinanceApiCallback <T > callback ;
1820
19- private Class < T > eventClass ;
21+ private static final ObjectMapper mapper = new ObjectMapper () ;
2022
21- private TypeReference < T > eventTypeReference ;
23+ private final ObjectReader objectReader ;
2224
2325 private boolean closing = false ;
2426
2527 public BinanceApiWebSocketListener (BinanceApiCallback <T > callback , Class <T > eventClass ) {
2628 this .callback = callback ;
27- this .eventClass = eventClass ;
29+ this .objectReader = mapper . readerFor ( eventClass ) ;
2830 }
2931
3032 public BinanceApiWebSocketListener (BinanceApiCallback <T > callback , TypeReference <T > eventTypeReference ) {
3133 this .callback = callback ;
32- this .eventTypeReference = eventTypeReference ;
34+ this .objectReader = mapper . readerFor ( eventTypeReference ) ;
3335 }
3436
3537 @ Override
3638 public void onMessage (WebSocket webSocket , String text ) {
37- ObjectMapper mapper = new ObjectMapper ();
3839 try {
39- T event = null ;
40- if (eventClass == null ) {
41- event = mapper .readValue (text , eventTypeReference );
42- } else {
43- event = mapper .readValue (text , eventClass );
44- }
40+ T event = objectReader .readValue (text );
4541 callback .onResponse (event );
4642 } catch (IOException e ) {
4743 throw new BinanceApiException (e );
0 commit comments