Claus Ibsen created CAMEL-25937:
-----------------------------------

             Summary: camel-azure-storage-blob - an upload without a body fails 
with a NullPointerException
                 Key: CAMEL-25937
                 URL: https://issues.apache.org/jira/browse/CAMEL-25937
             Project: Camel
          Issue Type: Bug
          Components: camel-azure
    Affects Versions: 4.18.0, 4.22.0, 4.23.0
            Reporter: Claus Ibsen
             Fix For: 4.24.0


{{BlobStreamAndLength.createBlobStreamAndLengthFromExchangeBody}} (main 
4065a7464c45, lines 60-66), which uploadBlockBlob, commitAppendBlob and 
uploadBlockBlobChunked use to read the body, names the class of a body it 
cannot read, and so fails with a NullPointerException when there is no body:

{code:java}
InputStream is = body instanceof InputStream inputStream
        ? inputStream
        : 
exchange.getContext().getTypeConverter().tryConvertTo(InputStream.class, 
exchange, body);
if (is == null) {
    throw new IllegalArgumentException("Unsupported blob type:" + 
body.getClass().getName());
}
{code}

{noformat}
java.lang.NullPointerException: Cannot invoke "Object.getClass()" because 
"body" is null
{noformat}

Checked on 4.24.0-SNAPSHOT against Azurite with uploadBlockBlob. A Map body 
gets the intended {{IllegalArgumentException: Unsupported blob 
type:java.util.LinkedHashMap}}.

Also read in the code: commitAppendBlob and uploadPageBlob create their blob 
before they read the body ({{BlobOperations}} lines 476-480 and 525-529, with 
{{createAppendBlob}} and {{createPageBlob}}, which default to true), so an 
upload without a body to a blob that does not exist yet leaves an empty blob 
behind.

*Proposed change*: fail with a clear error when there is no body, as 
{{getMandatoryBody}} does ({{InvalidPayloadException}}), and read the body 
before creating the blob.

_Claude Code on behalf of davsclaus_



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

Reply via email to