[ 
https://issues.apache.org/jira/browse/CAMEL-24346?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen updated CAMEL-24346:
--------------------------------
    Fix Version/s: 4.22.0

> camel-google-sheets: splitResults always reports range index 1 and NPEs on an 
> empty range
> -----------------------------------------------------------------------------------------
>
>                 Key: CAMEL-24346
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24346
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-google-sheets
>            Reporter: Andrea Cosentino
>            Assignee: Andrea Cosentino
>            Priority: Minor
>             Fix For: 4.22.0
>
>
> In {{GoogleSheetsStreamConsumer.poll()}} the range counter is allocated 
> inside the per-range loop:
> {code:java}
> // GoogleSheetsStreamConsumer.java:88-104
> for (ValueRange valueRange : response.getValueRanges()) {
>     AtomicInteger rangeIndex = new AtomicInteger(1);
>     ...
>     rangeIndex.incrementAndGet();
> }
> {code}
> so with {{splitResults=true}} and several comma-separated ranges every 
> exchange carries {{CamelGoogleSheetsRangeIndex=1}} and the trailing increment 
> is dead. The non-split branch (:107) uses a single counter and is correct.
> Two more items in the same method:
> * {{valueRange.getValues()}} is dereferenced without a null check (:92, :111) 
> - an empty range has no {{values}} field and gives an NPE.
> * The non-range branch (:121-128) never calls {{forceConsumerAsReady()}}, so 
> the consumer readiness check is only satisfied when a range is configured.
> Found during a source audit of the {{components/camel-google}} module family 
> against main @ c3b01310be15.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to