Skip to content

Commit

Permalink
#164 : Intellisense cleanup for bxbot-exchanges
Browse files Browse the repository at this point in the history
  • Loading branch information
gazbert committed Apr 21, 2024
1 parent 3c25a1d commit f957eb9
Show file tree
Hide file tree
Showing 5 changed files with 214 additions and 107 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ public String createOrder(
// 'type' is either "market" / "limit" / "stop" / "trailing-stop" / "fill-or-kill" / "exchange
// market" /
// "exchange limit" / "exchange stop" / "exchange trailing-stop" / "exchange fill-or-kill".
// (type starting by "exchange " are exchange orders, others are margin trading orders)
// 'type' starting by "exchange " are exchange orders, others are margin trading orders.

// this adapter only supports 'exchange limit orders'
params.put("type", "exchange limit");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.annotations.SerializedName;

import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
import com.google.gson.JsonObject;
import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken;
import java.io.File;
import java.io.Serial;
import java.lang.reflect.Type;
import java.math.BigDecimal;
Expand Down Expand Up @@ -231,9 +232,9 @@ public MarketOrderBook getMarketOrders(String marketId)
if (response.getStatusCode() == HttpURLConnection.HTTP_OK) {
final Type resultType =
new TypeToken<KrakenResponse<KrakenMarketOrderBookResult>>() {}.getType();
final KrakenResponse krakenResponse = gson.fromJson(response.getPayload(), resultType);
final KrakenResponse<?> krakenResponse = gson.fromJson(response.getPayload(), resultType);

final List errors = krakenResponse.error;
final List<?> errors = krakenResponse.error;
if (errors == null || errors.isEmpty()) {
return adaptKrakenOrderBook(krakenResponse, marketId);

Expand Down Expand Up @@ -276,9 +277,9 @@ public List<OpenOrder> getYourOpenOrders(String marketId)
if (response.getStatusCode() == HttpURLConnection.HTTP_OK) {

final Type resultType = new TypeToken<KrakenResponse<KrakenOpenOrderResult>>() {}.getType();
final KrakenResponse krakenResponse = gson.fromJson(response.getPayload(), resultType);
final KrakenResponse<?> krakenResponse = gson.fromJson(response.getPayload(), resultType);

final List errors = krakenResponse.error;
final List<?> errors = krakenResponse.error;
if (errors == null || errors.isEmpty()) {
return adaptKrakenOpenOrders(krakenResponse, marketId);

Expand Down Expand Up @@ -349,9 +350,9 @@ public String createOrder(
if (response.getStatusCode() == HttpURLConnection.HTTP_OK) {

final Type resultType = new TypeToken<KrakenResponse<KrakenAddOrderResult>>() {}.getType();
final KrakenResponse krakenResponse = gson.fromJson(response.getPayload(), resultType);
final KrakenResponse<?> krakenResponse = gson.fromJson(response.getPayload(), resultType);

final List errors = krakenResponse.error;
final List<?> errors = krakenResponse.error;
if (errors == null || errors.isEmpty()) {

// Assume we'll always get something here if errors array is empty; else blow fast wih NPE
Expand Down Expand Up @@ -403,9 +404,9 @@ public boolean cancelOrder(String orderId, String marketIdNotNeeded)

final Type resultType =
new TypeToken<KrakenResponse<KrakenCancelOrderResult>>() {}.getType();
final KrakenResponse krakenResponse = gson.fromJson(response.getPayload(), resultType);
final KrakenResponse<?> krakenResponse = gson.fromJson(response.getPayload(), resultType);

final List errors = krakenResponse.error;
final List<?> errors = krakenResponse.error;
if (errors == null || errors.isEmpty()) {
return adaptKrakenCancelOrderResult(krakenResponse);

Expand Down Expand Up @@ -451,9 +452,9 @@ public BigDecimal getLatestMarketPrice(String marketId)
if (response.getStatusCode() == HttpURLConnection.HTTP_OK) {

final Type resultType = new TypeToken<KrakenResponse<KrakenTickerResult>>() {}.getType();
final KrakenResponse krakenResponse = gson.fromJson(response.getPayload(), resultType);
final KrakenResponse<?> krakenResponse = gson.fromJson(response.getPayload(), resultType);

final List errors = krakenResponse.error;
final List<?> errors = krakenResponse.error;
if (errors == null || errors.isEmpty()) {

// Assume we'll always get something here if errors array is empty; else blow fast wih NPE
Expand Down Expand Up @@ -562,9 +563,9 @@ public Ticker getTicker(String marketId) throws TradingApiException, ExchangeNet
if (response.getStatusCode() == HttpURLConnection.HTTP_OK) {

final Type resultType = new TypeToken<KrakenResponse<KrakenTickerResult>>() {}.getType();
final KrakenResponse krakenResponse = gson.fromJson(response.getPayload(), resultType);
final KrakenResponse<?> krakenResponse = gson.fromJson(response.getPayload(), resultType);

final List errors = krakenResponse.error;
final List<?> errors = krakenResponse.error;
if (errors == null || errors.isEmpty()) {

// Assume we'll always get something here if errors array is empty; else blow fast wih NPE
Expand Down Expand Up @@ -857,56 +858,47 @@ public KrakenTickerResult deserialize(

final String key = jsonTickerParam.getKey();
switch (key) {
case "c":
case "c" -> {
final List<String> lastTradeDetails =
context.deserialize(jsonTickerParam.getValue(), List.class);
krakenTickerResult.put("c", lastTradeDetails.get(0));
break;

case "b":
}
case "b" -> {
final List<String> bidDetails =
context.deserialize(jsonTickerParam.getValue(), List.class);
krakenTickerResult.put("b", bidDetails.get(0));
break;

case "a":
}
case "a" -> {
final List<String> askDetails =
context.deserialize(jsonTickerParam.getValue(), List.class);
krakenTickerResult.put("a", askDetails.get(0));
break;

case "l":
}
case "l" -> {
final List<String> lowDetails =
context.deserialize(jsonTickerParam.getValue(), List.class);
krakenTickerResult.put("l", lowDetails.get(1));
break;

case "h":
}
case "h" -> {
final List<String> highDetails =
context.deserialize(jsonTickerParam.getValue(), List.class);
krakenTickerResult.put("h", highDetails.get(1));
break;

case "o":
}
case "o" -> {
final String openDetails =
context.deserialize(jsonTickerParam.getValue(), String.class);
krakenTickerResult.put("o", openDetails);
break;

case "v":
}
case "v" -> {
final List<String> volumeDetails =
context.deserialize(jsonTickerParam.getValue(), List.class);
krakenTickerResult.put("v", volumeDetails.get(1));
break;

case "p":
}
case "p" -> {
final List<String> vWapDetails =
context.deserialize(jsonTickerParam.getValue(), List.class);
krakenTickerResult.put("p", vWapDetails.get(1));
break;

default:
log.warn("Received unexpected Ticker param - ignoring: " + key);
}
default -> log.warn("Received unexpected Ticker param - ignoring: " + key);
}
}
}
Expand Down Expand Up @@ -1007,7 +999,7 @@ private ExchangeHttpResponse sendAuthenticatedRequestToExchange(

// And now the tricky part... ;-o
final byte[] pathInBytes =
("/" + KRAKEN_API_VERSION + KRAKEN_PRIVATE_PATH + apiMethod)
(File.separator + KRAKEN_API_VERSION + KRAKEN_PRIVATE_PATH + apiMethod)
.getBytes(StandardCharsets.UTF_8);
final String noncePrependedToPostData = Long.toString(nonce) + postData;

Expand Down Expand Up @@ -1127,7 +1119,7 @@ private void loadPairPrecisionConfig() {
// Util methods
// --------------------------------------------------------------------------

private List<OpenOrder> adaptKrakenOpenOrders(KrakenResponse krakenResponse, String marketId)
private List<OpenOrder> adaptKrakenOpenOrders(KrakenResponse<?> krakenResponse, String marketId)
throws TradingApiException {
final List<OpenOrder> openOrders = new ArrayList<>();

Expand All @@ -1139,14 +1131,14 @@ private List<OpenOrder> adaptKrakenOpenOrders(KrakenResponse krakenResponse, Str
if (krakenOpenOrders != null) {
for (final Map.Entry<String, KrakenOpenOrder> openOrder : krakenOpenOrders.entrySet()) {

OrderType orderType;
final KrakenOpenOrder krakenOpenOrder = openOrder.getValue();
final KrakenOpenOrderDescription krakenOpenOrderDescription = krakenOpenOrder.descr;

if (!marketId.equalsIgnoreCase(krakenOpenOrderDescription.pair)) {
continue;
}

OrderType orderType;
switch (krakenOpenOrderDescription.type) {
case "buy":
orderType = OrderType.BUY;
Expand Down Expand Up @@ -1180,8 +1172,8 @@ private List<OpenOrder> adaptKrakenOpenOrders(KrakenResponse krakenResponse, Str
return openOrders;
}

private MarketOrderBookImpl adaptKrakenOrderBook(KrakenResponse krakenResponse, String marketId)
throws TradingApiException {
private MarketOrderBookImpl adaptKrakenOrderBook(
KrakenResponse<?> krakenResponse, String marketId) throws TradingApiException {

// Assume we'll always get something here if errors array is empty; else blow fast wih NPE
final KrakenMarketOrderBookResult krakenOrderBookResult =
Expand Down Expand Up @@ -1219,7 +1211,7 @@ private MarketOrderBookImpl adaptKrakenOrderBook(KrakenResponse krakenResponse,
}
}

private boolean adaptKrakenCancelOrderResult(KrakenResponse krakenResponse) {
private boolean adaptKrakenCancelOrderResult(KrakenResponse<?> krakenResponse) {
// Assume we'll always get something here if errors array is empty; else blow fast wih NPE
final KrakenCancelOrderResult krakenCancelOrderResult =
(KrakenCancelOrderResult) krakenResponse.result;
Expand All @@ -1240,9 +1232,9 @@ private boolean adaptKrakenCancelOrderResult(KrakenResponse krakenResponse) {

private BalanceInfoImpl adaptKrakenBalanceInfo(ExchangeHttpResponse response, Type resultType)
throws ExchangeNetworkException, TradingApiException {
final KrakenResponse krakenResponse = gson.fromJson(response.getPayload(), resultType);
final KrakenResponse<?> krakenResponse = gson.fromJson(response.getPayload(), resultType);
if (krakenResponse != null) {
final List errors = krakenResponse.error;
final List<?> errors = krakenResponse.error;
if (errors == null || errors.isEmpty()) {
// Assume we'll always get something here if errors array is empty; else blow fast wih NPE
final KrakenBalanceResult balanceResult = (KrakenBalanceResult) krakenResponse.result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,11 +254,10 @@ private void initializeAdapterDelegation(ExchangeConfig config) {
delegateExchangeAdapter.init(config);
}

@SuppressWarnings("unchecked")
private ExchangeAdapter createDelegateExchangeAdapter() {
log.info("Creating the delegate exchange adapter: " + delegateExchangeClassName + "...");
try {
final Class componentClass = Class.forName(delegateExchangeClassName);
final Class<?> componentClass = Class.forName(delegateExchangeClassName);
final Object rawComponentObject = componentClass.getDeclaredConstructor().newInstance();
log.info(
"Successfully created the delegate exchange adapter class for: "
Expand Down
Loading

0 comments on commit f957eb9

Please sign in to comment.