diff --git a/src/main/java/com/angelbroking/smartapi/smartstream/ticker/SmartStreamListener.java b/src/main/java/com/angelbroking/smartapi/smartstream/ticker/SmartStreamListener.java index ad71ed5..b1875cf 100644 --- a/src/main/java/com/angelbroking/smartapi/smartstream/ticker/SmartStreamListener.java +++ b/src/main/java/com/angelbroking/smartapi/smartstream/ticker/SmartStreamListener.java @@ -13,4 +13,6 @@ public interface SmartStreamListener { void onDisconnected(); void onError(SmartStreamError error); void onPong(); + + SmartStreamError onErrorCustom(); } \ No newline at end of file diff --git a/src/main/java/com/angelbroking/smartapi/smartstream/ticker/SmartStreamTicker.java b/src/main/java/com/angelbroking/smartapi/smartstream/ticker/SmartStreamTicker.java index 85fb261..df8ee57 100644 --- a/src/main/java/com/angelbroking/smartapi/smartstream/ticker/SmartStreamTicker.java +++ b/src/main/java/com/angelbroking/smartapi/smartstream/ticker/SmartStreamTicker.java @@ -12,6 +12,8 @@ import java.util.TimerTask; import com.angelbroking.smartapi.smartstream.models.*; +import com.neovisionaries.ws.client.*; +import lombok.SneakyThrows; import org.json.JSONArray; import org.json.JSONObject; @@ -19,11 +21,6 @@ import com.angelbroking.smartapi.http.exceptions.SmartAPIException; import com.angelbroking.smartapi.utils.ByteUtils; import com.angelbroking.smartapi.utils.Utils; -import com.neovisionaries.ws.client.WebSocket; -import com.neovisionaries.ws.client.WebSocketAdapter; -import com.neovisionaries.ws.client.WebSocketException; -import com.neovisionaries.ws.client.WebSocketFactory; -import com.neovisionaries.ws.client.WebSocketFrame; import lombok.extern.slf4j.Slf4j; @@ -37,6 +34,7 @@ public class SmartStreamTicker { private final Routes routes = new Routes(); private final String wsuri = routes.getSmartStreamWSURI(); + private final SmartStreamListener smartStreamListener; private WebSocket ws; private final String clientId; @@ -71,7 +69,7 @@ private void init() { .setVerifyHostname(false) .createSocket(wsuri) .setPingInterval(PING_INTERVAL); - ws.addHeader(CLIENT_ID_HEADER, clientId); + ws.addHeader(CLIENT_ID_HEADER, clientId); ws.addHeader(FEED_TOKEN_HEADER, feedToken); ws.addHeader(CLIENT_LIB_HEADER, "JAVA"); ws.addListener(getWebsocketAdapter()); @@ -186,14 +184,19 @@ public void onDisconnected(WebSocket websocket, WebSocketFrame serverCloseFrame, smartStreamListener.onError(error); } } - + @Override public void onCloseFrame(WebSocket websocket, WebSocketFrame frame) throws Exception { super.onCloseFrame(websocket, frame); } + + @Override + public void onError(WebSocket websocket, WebSocketException cause) throws Exception { + smartStreamListener.onErrorCustom(); + } }; } - + private void startPingTimer(final WebSocket websocket) { pingTimer = new Timer(); @@ -242,7 +245,7 @@ public void disconnect() { /** * Returns true if websocket connection is open. - * + * * @return boolean */ public boolean isConnectionOpen() { @@ -251,7 +254,7 @@ public boolean isConnectionOpen() { /** * Returns true if websocket connection is closed. - * + * * @return boolean */ public boolean isConnectionClosed() { @@ -328,7 +331,7 @@ private JSONArray generateExchangeTokensList(Set tokens) { JSONObject exchangeTokenObj = new JSONObject(); exchangeTokenObj.put("exchangeType", ex.getVal()); exchangeTokenObj.put("tokens", t); - + exchangeTokenList.put(exchangeTokenObj); }); diff --git a/src/test/java/com/angelbroking/smartapi/smartstream/SmartStreamListenerImpl.java b/src/test/java/com/angelbroking/smartapi/smartstream/SmartStreamListenerImpl.java index 0d40fee..229107e 100644 --- a/src/test/java/com/angelbroking/smartapi/smartstream/SmartStreamListenerImpl.java +++ b/src/test/java/com/angelbroking/smartapi/smartstream/SmartStreamListenerImpl.java @@ -5,6 +5,7 @@ import java.time.ZonedDateTime; import java.util.Arrays; +import com.angelbroking.smartapi.http.exceptions.SmartAPIException; import com.angelbroking.smartapi.smartstream.models.*; import com.angelbroking.smartapi.smartstream.ticker.SmartStreamListener; @@ -105,6 +106,16 @@ public void onPong() { log.info("pong received"); } + /* Custom on error method for SmartStream */ + @Override + public SmartStreamError onErrorCustom() { + // User thrown error return + log.info("on custom error"); + SmartStreamError smartStreamError = new SmartStreamError(); + smartStreamError.setException(new SmartAPIException("custom error received")); + return smartStreamError; + } + @Override public void onDisconnected() { // TODO Auto-generated method stub