This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 5d8f871be9aab8206c15c5115fb72bb916915c85
Author: Croway <[email protected]>
AuthorDate: Wed Feb 5 15:01:57 2025 +0100

    Add more headers in platform-http multipart uploads
---
 .../platform/http/vertx/VertxPlatformHttpConsumer.java         |  5 ++++-
 .../platform/http/vertx/VertxPlatformHttpEngineTest.java       | 10 ++++++++--
 .../src/main/docs/platform-http-component.adoc                 |  5 ++++-
 .../java/org/apache/camel/ExchangeConstantProvider.java        |  3 ++-
 core/camel-api/src/main/java/org/apache/camel/Exchange.java    |  1 +
 5 files changed, 19 insertions(+), 5 deletions(-)

diff --git 
a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java
 
b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java
index e19aacb3a5b..11472ee6265 100644
--- 
a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java
+++ 
b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java
@@ -332,6 +332,7 @@ public class VertxPlatformHttpConsumer extends 
DefaultConsumer
     }
 
     protected void populateAttachments(List<FileUpload> uploads, Message 
message) {
+        message.setHeader(Exchange.ATTACHMENTS_SIZE, uploads.size());
         for (FileUpload upload : uploads) {
             final String name = upload.name();
             final String fileName = upload.fileName();
@@ -357,13 +358,15 @@ public class VertxPlatformHttpConsumer extends 
DefaultConsumer
 
                 // populate body in case there is only one attachment
                 if (uploads.size() == 1) {
+                    message.setHeader(Exchange.FILE_PATH, 
localFile.getAbsolutePath());
+                    message.setHeader(Exchange.FILE_LENGTH, upload.size());
                     message.setHeader(Exchange.FILE_NAME, upload.fileName());
                     String ct = 
MimeTypeHelper.probeMimeType(upload.fileName());
                     if (ct == null) {
                         ct = upload.contentType();
                     }
                     if (ct != null) {
-                        message.setHeader(Exchange.CONTENT_TYPE, ct);
+                        message.setHeader(Exchange.FILE_CONTENT_TYPE, ct);
                     }
                     message.setBody(localFile);
                 }
diff --git 
a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpEngineTest.java
 
b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpEngineTest.java
index 44c11655dd9..1ec67a4bc51 100644
--- 
a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpEngineTest.java
+++ 
b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpEngineTest.java
@@ -430,7 +430,8 @@ public class VertxPlatformHttpEngineTest {
                                 }
 
                                 
exchange.getIn().setHeader("ConcatFileContent", result);
-                            });
+                            })
+                            .setHeader("UploadedAttachments", 
simple("${headers.CamelAttachmentsSize}"));
                 }
             });
 
@@ -444,6 +445,7 @@ public class VertxPlatformHttpEngineTest {
                     .then()
                     .statusCode(204)
                     .body(emptyOrNullString())
+                    .header("UploadedAttachments", 
is(String.valueOf(attachmentIds.size())))
                     .header("ConcatFileContent",
                             is("Test multipart upload content 
myFirstTestFileTest multipart upload content mySecondTestFile"));
         } finally {
@@ -476,7 +478,9 @@ public class VertxPlatformHttpEngineTest {
                                 AttachmentMessage message = 
exchange.getMessage(AttachmentMessage.class);
                                 DataHandler attachment = 
message.getAttachment(attachmentId);
                                 
exchange.getMessage().setHeader("myDataHandler", attachment);
-                            });
+                            })
+                            .setHeader("UploadedFileContentType", 
simple("${header.CamelFileContentType}"))
+                            .setHeader("UploadedFileSize", 
simple("${header.CamelFileLength}"));
                 }
             });
 
@@ -489,6 +493,8 @@ public class VertxPlatformHttpEngineTest {
                     .then()
                     .statusCode(200)
                     .header("myDataHandler", 
containsString("jakarta.activation.DataHandler"))
+                    .header("UploadedFileContentType", is("text/plain"))
+                    .header("UploadedFileSize", 
is(String.valueOf(fileContent.getBytes().length)))
                     .body(is(fileContent));
         } finally {
             context.stop();
diff --git 
a/components/camel-platform-http/src/main/docs/platform-http-component.adoc 
b/components/camel-platform-http/src/main/docs/platform-http-component.adoc
index 16ebe481df5..96c236cfea9 100644
--- a/components/camel-platform-http/src/main/docs/platform-http-component.adoc
+++ b/components/camel-platform-http/src/main/docs/platform-http-component.adoc
@@ -91,6 +91,9 @@ Since Apache Camel 4.10, multipart file uploads are easier 
and harmonized across
 * The Apache Camel message contains:
 ** The uploaded file in the message body
 ** The file name in the "CamelFileName" message header
-** The file's content type in the "Content-Type" message header
+** The file's content type in the "CamelFileContentType" message header
+** The file's size in the "CamelFileLength" message header
+
+In case of multiple uploads, the header "CamelAttachmentsSize" contains the 
number of files uploaded.
 
 include::spring-boot:partial$starter.adoc[]
\ No newline at end of file
diff --git 
a/core/camel-api/src/generated/java/org/apache/camel/ExchangeConstantProvider.java
 
b/core/camel-api/src/generated/java/org/apache/camel/ExchangeConstantProvider.java
index 498abea265f..7a078488846 100644
--- 
a/core/camel-api/src/generated/java/org/apache/camel/ExchangeConstantProvider.java
+++ 
b/core/camel-api/src/generated/java/org/apache/camel/ExchangeConstantProvider.java
@@ -13,7 +13,7 @@ public class ExchangeConstantProvider {
 
     private static final Map<String, String> MAP;
     static {
-        Map<String, String> map = new HashMap<>(160);
+        Map<String, String> map = new HashMap<>(161);
         map.put("ACCEPT_CONTENT_TYPE", "CamelAcceptContentType");
         map.put("AGGREGATED_COLLECTION_GUARD", 
"CamelAggregatedCollectionGuard");
         map.put("AGGREGATED_COMPLETED_BY", "CamelAggregatedCompletedBy");
@@ -25,6 +25,7 @@ public class ExchangeConstantProvider {
         map.put("AGGREGATION_COMPLETE_CURRENT_GROUP", 
"CamelAggregationCompleteCurrentGroup");
         map.put("AGGREGATION_STRATEGY", "CamelAggregationStrategy");
         map.put("ASYNC_WAIT", "CamelAsyncWait");
+        map.put("ATTACHMENTS_SIZE", "CamelAttachmentsSize");
         map.put("AUTHENTICATION", "CamelAuthentication");
         map.put("AUTHENTICATION_FAILURE_POLICY_ID", 
"CamelAuthenticationFailurePolicyId");
         map.put("BATCH_COMPLETE", "CamelBatchComplete");
diff --git a/core/camel-api/src/main/java/org/apache/camel/Exchange.java 
b/core/camel-api/src/main/java/org/apache/camel/Exchange.java
index d794a2ab1a4..6f07c90cfd8 100644
--- a/core/camel-api/src/main/java/org/apache/camel/Exchange.java
+++ b/core/camel-api/src/main/java/org/apache/camel/Exchange.java
@@ -117,6 +117,7 @@ public interface Exchange extends VariableAware {
     String CONTENT_TYPE = "Content-Type";
     String COOKIE_HANDLER = "CamelCookieHandler";
     String CORRELATION_ID = "CamelCorrelationId";
+    String ATTACHMENTS_SIZE = "CamelAttachmentsSize";
 
     // The schema of the message payload
     String CONTENT_SCHEMA = "CamelContentSchema";

Reply via email to