You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/07/14 05:29:41 UTC
[camel] branch main updated: [CAMEL-19605] camel-xchange - Upgrade to xchange 5.1.0 (#10680)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new c7bb3cbc01a [CAMEL-19605] camel-xchange - Upgrade to xchange 5.1.0 (#10680)
c7bb3cbc01a is described below
commit c7bb3cbc01ae6ff2d2326d2e43b24d0aa412cdb8
Author: Thomas Diesler <td...@redhat.com>
AuthorDate: Fri Jul 14 07:29:35 2023 +0200
[CAMEL-19605] camel-xchange - Upgrade to xchange 5.1.0 (#10680)
---
components/camel-xchange/pom.xml | 13 +++++++++
.../apache/camel/component/xchange/XChange.java | 15 ++++++++---
.../camel/component/xchange/XChangeEndpoint.java | 31 ++++++++++++++++------
.../component/xchange/XChangeTestSupport.java | 11 +++++---
.../xchange/account/AccountProducerTest.java | 4 ++-
.../xchange/metadata/MetaDataProducerTest.java | 8 +++---
parent/pom.xml | 2 +-
7 files changed, 64 insertions(+), 20 deletions(-)
diff --git a/components/camel-xchange/pom.xml b/components/camel-xchange/pom.xml
index 2ec39c70f08..ecf3472b35c 100644
--- a/components/camel-xchange/pom.xml
+++ b/components/camel-xchange/pom.xml
@@ -71,4 +71,17 @@
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <systemPropertyVariables>
+ <enable.xchange.itests>false</enable.xchange.itests>
+ </systemPropertyVariables>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git a/components/camel-xchange/src/main/java/org/apache/camel/component/xchange/XChange.java b/components/camel-xchange/src/main/java/org/apache/camel/component/xchange/XChange.java
index 7c8a9803a18..4dd9fada07d 100644
--- a/components/camel-xchange/src/main/java/org/apache/camel/component/xchange/XChange.java
+++ b/components/camel-xchange/src/main/java/org/apache/camel/component/xchange/XChange.java
@@ -18,18 +18,20 @@ package org.apache.camel.component.xchange;
import java.io.IOException;
import java.util.List;
+import java.util.stream.Collectors;
import org.knowm.xchange.Exchange;
import org.knowm.xchange.ExchangeSpecification;
import org.knowm.xchange.currency.CurrencyPair;
import org.knowm.xchange.dto.meta.ExchangeMetaData;
import org.knowm.xchange.exceptions.ExchangeException;
+import org.knowm.xchange.instrument.Instrument;
import org.knowm.xchange.service.account.AccountService;
import org.knowm.xchange.service.marketdata.MarketDataService;
import org.knowm.xchange.service.trade.TradeService;
import si.mazi.rescu.SynchronizedValueFactory;
-// Wraps the exchange to avoid anem collision with the camel exchange
+// Wraps the exchange to avoid name collision with the camel exchange
public class XChange implements Exchange {
private final Exchange delegate;
@@ -49,8 +51,15 @@ public class XChange implements Exchange {
}
@Override
- public List<CurrencyPair> getExchangeSymbols() {
- return delegate.getExchangeSymbols();
+ public List<Instrument> getExchangeInstruments() {
+ return delegate.getExchangeInstruments();
+ }
+
+ public List<CurrencyPair> getCurrencyPairs() {
+ return delegate.getExchangeInstruments().stream()
+ .filter(it -> it instanceof CurrencyPair)
+ .map(it -> (CurrencyPair) it)
+ .collect(Collectors.toList());
}
@Override
diff --git a/components/camel-xchange/src/main/java/org/apache/camel/component/xchange/XChangeEndpoint.java b/components/camel-xchange/src/main/java/org/apache/camel/component/xchange/XChangeEndpoint.java
index 3faeeffec0e..a1c94ae2bb0 100644
--- a/components/camel-xchange/src/main/java/org/apache/camel/component/xchange/XChangeEndpoint.java
+++ b/components/camel-xchange/src/main/java/org/apache/camel/component/xchange/XChangeEndpoint.java
@@ -18,6 +18,8 @@ package org.apache.camel.component.xchange;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@@ -29,6 +31,8 @@ import org.apache.camel.component.xchange.XChangeConfiguration.XChangeService;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
import org.apache.camel.support.DefaultEndpoint;
+import org.knowm.xchange.binance.BinanceAdapters;
+import org.knowm.xchange.binance.service.BinanceAccountService;
import org.knowm.xchange.currency.Currency;
import org.knowm.xchange.currency.CurrencyPair;
import org.knowm.xchange.dto.account.AccountInfo;
@@ -37,8 +41,9 @@ import org.knowm.xchange.dto.account.FundingRecord;
import org.knowm.xchange.dto.account.Wallet;
import org.knowm.xchange.dto.marketdata.Ticker;
import org.knowm.xchange.dto.meta.CurrencyMetaData;
-import org.knowm.xchange.dto.meta.CurrencyPairMetaData;
import org.knowm.xchange.dto.meta.ExchangeMetaData;
+import org.knowm.xchange.dto.meta.InstrumentMetaData;
+import org.knowm.xchange.instrument.Instrument;
import org.knowm.xchange.service.account.AccountService;
import org.knowm.xchange.service.marketdata.MarketDataService;
import org.knowm.xchange.service.trade.params.TradeHistoryParams;
@@ -116,13 +121,16 @@ public class XChangeEndpoint extends DefaultEndpoint {
public List<CurrencyPair> getCurrencyPairs() {
ExchangeMetaData metaData = xchange.getExchangeMetaData();
- return metaData.getCurrencyPairs().keySet().stream().sorted().collect(Collectors.toList());
+ return metaData.getInstruments().keySet().stream()
+ .filter(it -> it instanceof CurrencyPair)
+ .map(it -> (CurrencyPair) it)
+ .sorted().collect(Collectors.toList());
}
- public CurrencyPairMetaData getCurrencyPairMetaData(CurrencyPair pair) {
+ public InstrumentMetaData getCurrencyPairMetaData(CurrencyPair pair) {
Assert.notNull(pair, "Null currency");
ExchangeMetaData metaData = xchange.getExchangeMetaData();
- return metaData.getCurrencyPairs().get(pair);
+ return metaData.getInstruments().get(pair);
}
public List<Balance> getBalances() throws IOException {
@@ -154,15 +162,22 @@ public class XChangeEndpoint extends DefaultEndpoint {
}
public List<Wallet> getWallets() throws IOException {
+ // [#4741] BinanceAccountService assumes futures account when not using sandbox
+ // https://github.com/knowm/XChange/issues/4741
AccountService accountService = xchange.getAccountService();
- AccountInfo accountInfo = accountService.getAccountInfo();
- return accountInfo.getWallets().values().stream().sorted((Wallet o1, Wallet o2) -> o1.getName().compareTo(o2.getName()))
- .collect(Collectors.toList());
+ if (accountService instanceof BinanceAccountService binanceAccountService) {
+ Wallet wallet = BinanceAdapters.adaptBinanceSpotWallet(binanceAccountService.account());
+ return Collections.singletonList(wallet);
+ } else {
+ AccountInfo accountInfo = accountService.getAccountInfo();
+ return accountInfo.getWallets().values().stream().sorted(Comparator.comparing(Wallet::getName))
+ .collect(Collectors.toList());
+ }
}
public Ticker getTicker(CurrencyPair pair) throws IOException {
Assert.notNull(pair, "Null currency pair");
MarketDataService marketService = xchange.getMarketDataService();
- return marketService.getTicker(pair);
+ return marketService.getTicker((Instrument) pair);
}
}
diff --git a/components/camel-xchange/src/test/java/org/apache/camel/component/xchange/XChangeTestSupport.java b/components/camel-xchange/src/test/java/org/apache/camel/component/xchange/XChangeTestSupport.java
index cf39c001eef..13bed59db93 100644
--- a/components/camel-xchange/src/test/java/org/apache/camel/component/xchange/XChangeTestSupport.java
+++ b/components/camel-xchange/src/test/java/org/apache/camel/component/xchange/XChangeTestSupport.java
@@ -24,6 +24,7 @@ import org.junit.jupiter.api.BeforeAll;
import org.knowm.xchange.Exchange;
import org.knowm.xchange.ExchangeFactory;
import org.knowm.xchange.ExchangeSpecification;
+import org.knowm.xchange.utils.AuthUtils;
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
@@ -60,8 +61,11 @@ public abstract class XChangeTestSupport extends CamelTestSupport {
if (useMockedBackend()) {
specification.setSslUri("http://localhost:" + wireMockServer.port());
} else {
- specification.setApiKey(System.getProperty("xchange.api.key", System.getenv("XCHANGE_API_KEY")));
- specification.setSecretKey(System.getProperty("xchange.secret.key", System.getenv("XCHANGE_SECRET_KEY")));
+ AuthUtils.setApiAndSecretKey(specification, "binance");
+ if (specification.getApiKey() == null)
+ specification.setApiKey(System.getProperty("xchange.api.key", System.getenv("XCHANGE_API_KEY")));
+ if (specification.getSecretKey() == null)
+ specification.setSecretKey(System.getProperty("xchange.secret.key", System.getenv("XCHANGE_SECRET_KEY")));
}
XChange xchange = new XChange(ExchangeFactory.INSTANCE.createExchange(specification));
@@ -71,6 +75,7 @@ public abstract class XChangeTestSupport extends CamelTestSupport {
}
protected static boolean useMockedBackend() {
- return !Boolean.TRUE.toString().equals(System.getProperty("enable.xchange.itests"));
+ String value = System.getProperty("enable.xchange.itests");
+ return !Boolean.parseBoolean(value);
}
}
diff --git a/components/camel-xchange/src/test/java/org/apache/camel/component/xchange/account/AccountProducerTest.java b/components/camel-xchange/src/test/java/org/apache/camel/component/xchange/account/AccountProducerTest.java
index f2f84727a3b..56c15fd2f03 100644
--- a/components/camel-xchange/src/test/java/org/apache/camel/component/xchange/account/AccountProducerTest.java
+++ b/components/camel-xchange/src/test/java/org/apache/camel/component/xchange/account/AccountProducerTest.java
@@ -22,6 +22,7 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.xchange.XChangeComponent;
import org.apache.camel.component.xchange.XChangeTestSupport;
import org.junit.jupiter.api.Test;
+import org.knowm.xchange.ExchangeSpecification;
import org.knowm.xchange.dto.account.Balance;
import org.knowm.xchange.dto.account.FundingRecord;
import org.knowm.xchange.dto.account.Wallet;
@@ -75,6 +76,7 @@ public class AccountProducerTest extends XChangeTestSupport {
private boolean hasAPICredentials() {
XChangeComponent component = context().getComponent("xchange", XChangeComponent.class);
- return component.getXChange("binance").getExchangeSpecification().getApiKey() != null;
+ ExchangeSpecification exchangeSpecification = component.getXChange("binance").getExchangeSpecification();
+ return exchangeSpecification.getApiKey() != null;
}
}
diff --git a/components/camel-xchange/src/test/java/org/apache/camel/component/xchange/metadata/MetaDataProducerTest.java b/components/camel-xchange/src/test/java/org/apache/camel/component/xchange/metadata/MetaDataProducerTest.java
index a93987d4e91..973a212d805 100644
--- a/components/camel-xchange/src/test/java/org/apache/camel/component/xchange/metadata/MetaDataProducerTest.java
+++ b/components/camel-xchange/src/test/java/org/apache/camel/component/xchange/metadata/MetaDataProducerTest.java
@@ -24,7 +24,7 @@ import org.junit.jupiter.api.Test;
import org.knowm.xchange.currency.Currency;
import org.knowm.xchange.currency.CurrencyPair;
import org.knowm.xchange.dto.meta.CurrencyMetaData;
-import org.knowm.xchange.dto.meta.CurrencyPairMetaData;
+import org.knowm.xchange.dto.meta.InstrumentMetaData;
import static org.apache.camel.component.xchange.XChangeConfiguration.HEADER_CURRENCY;
import static org.apache.camel.component.xchange.XChangeConfiguration.HEADER_CURRENCY_PAIR;
@@ -86,12 +86,12 @@ public class MetaDataProducerTest extends XChangeTestSupport {
@Test
void testCurrencyPairMetaData() {
- CurrencyPairMetaData metadata
- = template.requestBody("direct:currencyPairMetaData", CurrencyPair.EOS_ETH, CurrencyPairMetaData.class);
+ InstrumentMetaData metadata
+ = template.requestBody("direct:currencyPairMetaData", CurrencyPair.EOS_ETH, InstrumentMetaData.class);
assertNotNull(metadata, "CurrencyPairMetaData not null");
metadata = template.requestBodyAndHeader("direct:currencyPairMetaData", null, HEADER_CURRENCY_PAIR,
- CurrencyPair.EOS_ETH, CurrencyPairMetaData.class);
+ CurrencyPair.EOS_ETH, InstrumentMetaData.class);
assertNotNull(metadata, "CurrencyPairMetaData not null");
}
}
diff --git a/parent/pom.xml b/parent/pom.xml
index cce2a0e0619..6d62b9b4ee2 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -478,7 +478,7 @@
<woodstox-core-version>6.5.1</woodstox-core-version>
<xbean-spring-version>4.23</xbean-spring-version>
<xbean-asm5-shaded-version>4.5</xbean-asm5-shaded-version>
- <xchange-version>5.0.14</xchange-version>
+ <xchange-version>5.1.0</xchange-version>
<xerces-version>2.12.2</xerces-version>
<!-- needed to manage the xml-apis version in camel-xmljson -->
<xml-apis-version>1.4.01</xml-apis-version>