[
https://issues.apache.org/jira/browse/CAMEL-26171?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18136865#comment-18136865
]
Claus Ibsen commented on CAMEL-26171:
-------------------------------------
PR: https://github.com/apache/camel/pull/29001
All four points are fixed there:
* String to Currency and String to CurrencyPair type converters fix the
currency option and text in the header or body. They only look up currencies
XChange already knows, so unknown text fails with "Unknown currency" instead of
registering a new currency in the JVM-wide map of XChange.
* currencyPairMetaData with no pair reports "Null currency pair".
* An endpoint with no method, or a method of another service, fails when it is
created (upgrade guide entry added).
_Claude Code on behalf of Claus Ibsen (davsclaus)_
> camel-xchange - the option currency=BTC fails with no type converter, and a
> String currency pair body or header is not converted
> --------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26171
> URL: https://issues.apache.org/jira/browse/CAMEL-26171
> Project: Camel
> Issue Type: Bug
> Components: camel-xchange
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Minor
> Fix For: 4.24.0
>
>
> Found while adding the catalog body types of xchange (CAMEL-24961, PR #28412).
> h4. 1. The endpoint option currency=BTC fails with no type converter
> The generated {{XChangeEndpointConfigurer}} (line 26) sets {{currency}} with
> {{setCurrency(Currency)}} after converting the value to
> {{org.knowm.xchange.currency.Currency}}, and there is no String to Currency
> converter, so
> {{xchange:binance?service=metadata&method=currencyMetaData¤cy=BTC}}
> fails with "No type converter available to convert from type:
> java.lang.String to the required type: org.knowm.xchange.currency.Currency".
> The {{setCurrency(String)}} setter in {{XChangeConfiguration}} (line 102) is
> never used. Checked on 4.24.0-SNAPSHOT with a fake {{Exchange}} (dynamic
> proxy) set with {{putXChange}}.
> Proposed: add a String to {{Currency}} type converter (or make the option a
> String as {{currencyPair}} is).
> h4. 2. A String body or header with a currency pair or currency is not
> converted
> {{XChangeMarketDataProducer.process}} (main 2a465aa4814c, lines 45-46) and
> {{XChangeMetaDataProducer.process}} (lines 52-53 and 58-59) read the
> {{CamelXChangeCurrencyPair}} / {{CamelXChangeCurrency}} header and then the
> body as {{CurrencyPair}} / {{Currency}}. A String such as {{"BTC/USDT"}} or
> {{"USDT"}} is not converted, so the call fails with "Null currency pair" or
> "Null currency". Checked on 4.24.0-SNAPSHOT with the fake {{Exchange}}.
> Proposed: add String to {{CurrencyPair}} ({{new CurrencyPair(String)}}) and
> String to {{Currency}} type converters.
> h4. 3. currencyPairMetaData with no pair reports "Null currency"
> {{XChangeEndpoint.getCurrencyPairMetaData}} (main 2a465aa4814c, line 132)
> uses {{Assert.notNull(pair, "Null currency")}}, so a missing pair is reported
> as a missing currency. Read in the code, not run.
> Proposed: use the message "Null currency pair".
> h4. 4. A method of another service silently does nothing
> Each producer only handles its own methods: for example
> {{XChangeMarketDataProducer.process}} (line 44) only handles {{ticker}}, so
> {{service=marketdata&method=currencies}} does nothing and leaves the body
> unchanged, with no error. Checked on 4.24.0-SNAPSHOT with the fake
> {{Exchange}}.
> Proposed: fail at endpoint creation when the method does not belong to the
> service.
> _Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)