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 2025/09/22 08:30:30 UTC

(camel) branch camel-4.14.x updated: CAMEL-22400: Add support for empty zip files / entries (#19199)

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

davsclaus pushed a commit to branch camel-4.14.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-4.14.x by this push:
     new 1aafe42c0f1 CAMEL-22400: Add support for empty zip files / entries (#19199)
1aafe42c0f1 is described below

commit 1aafe42c0f1117ee7947f6cc3e508810b467485e
Author: Benjamin Graf <gr...@users.noreply.github.com>
AuthorDate: Mon Sep 15 21:25:19 2025 +0200

    CAMEL-22400: Add support for empty zip files / entries (#19199)
---
 .../org/apache/camel/dataformat/zipfile/ZipIterator.java   |   4 ----
 .../zipfile/ZipFileSplitIteratorCorruptTest.java           |   3 ++-
 ...CorruptTest.java => ZipFileSplitIteratorEmptyTest.java} |  11 +++--------
 components/camel-zipfile/src/test/resources/corrupt.zip    |   2 +-
 components/camel-zipfile/src/test/resources/empty.zip      | Bin 0 -> 22 bytes
 5 files changed, 6 insertions(+), 14 deletions(-)

diff --git a/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipIterator.java b/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipIterator.java
index 637d6cbaa94..5ea553430d2 100644
--- a/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipIterator.java
+++ b/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipIterator.java
@@ -86,13 +86,9 @@ public class ZipIterator implements Iterator<Message>, Closeable {
                 parent = getNextElement();
                 if (parent == null) {
                     zipInputStream.close();
-                    availableDataInCurrentEntry = false;
                 } else {
                     availableDataInCurrentEntry = true;
                 }
-                if (first && parent == null) {
-                    throw new IllegalStateException("Unable to unzip the file, it may be corrupted.");
-                }
             }
             return availableDataInCurrentEntry;
         } catch (IOException exception) {
diff --git a/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitIteratorCorruptTest.java b/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitIteratorCorruptTest.java
index dfc54129871..b31c2577739 100644
--- a/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitIteratorCorruptTest.java
+++ b/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitIteratorCorruptTest.java
@@ -20,6 +20,7 @@ import java.util.Iterator;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.RoutesBuilder;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
@@ -31,7 +32,7 @@ public class ZipFileSplitIteratorCorruptTest extends CamelTestSupport {
     public void testZipFileUnmarshal() throws Exception {
         getMockEndpoint("mock:dead").expectedMessageCount(1);
         getMockEndpoint("mock:dead").message(0).exchangeProperty(Exchange.EXCEPTION_CAUGHT)
-                .isInstanceOf(IllegalStateException.class);
+                .isInstanceOf(RuntimeCamelException.class);
         getMockEndpoint("mock:end").expectedMessageCount(0);
 
         MockEndpoint.assertIsSatisfied(context);
diff --git a/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitIteratorCorruptTest.java b/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitIteratorEmptyTest.java
similarity index 82%
copy from components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitIteratorCorruptTest.java
copy to components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitIteratorEmptyTest.java
index dfc54129871..f392eacf7f1 100644
--- a/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitIteratorCorruptTest.java
+++ b/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitIteratorEmptyTest.java
@@ -18,21 +18,18 @@ package org.apache.camel.dataformat.zipfile;
 
 import java.util.Iterator;
 
-import org.apache.camel.Exchange;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
 
-public class ZipFileSplitIteratorCorruptTest extends CamelTestSupport {
+public class ZipFileSplitIteratorEmptyTest extends CamelTestSupport {
 
     @Test
     public void testZipFileUnmarshal() throws Exception {
-        getMockEndpoint("mock:dead").expectedMessageCount(1);
-        getMockEndpoint("mock:dead").message(0).exchangeProperty(Exchange.EXCEPTION_CAUGHT)
-                .isInstanceOf(IllegalStateException.class);
         getMockEndpoint("mock:end").expectedMessageCount(0);
+        getMockEndpoint("mock:end").setSleepForEmptyTest(1000);
 
         MockEndpoint.assertIsSatisfied(context);
     }
@@ -45,9 +42,7 @@ public class ZipFileSplitIteratorCorruptTest extends CamelTestSupport {
                 ZipFileDataFormat zf = new ZipFileDataFormat();
                 zf.setUsingIterator(true);
 
-                errorHandler(deadLetterChannel("mock:dead"));
-
-                from("file://src/test/resources?delay=10&fileName=corrupt.zip&noop=true")
+                from("file://src/test/resources?delay=10&fileName=empty.zip&noop=true")
                         .unmarshal(zf)
                         .split(bodyAs(Iterator.class)).streaming()
                         .convertBodyTo(String.class)
diff --git a/components/camel-zipfile/src/test/resources/corrupt.zip b/components/camel-zipfile/src/test/resources/corrupt.zip
index fc744046421..7ed8f58f9c9 100644
--- a/components/camel-zipfile/src/test/resources/corrupt.zip
+++ b/components/camel-zipfile/src/test/resources/corrupt.zip
@@ -1 +1 @@
-I am corrupted
\ No newline at end of file
+I am totally corrupted!
\ No newline at end of file
diff --git a/components/camel-zipfile/src/test/resources/empty.zip b/components/camel-zipfile/src/test/resources/empty.zip
new file mode 100644
index 00000000000..15cb0ecb3e2
Binary files /dev/null and b/components/camel-zipfile/src/test/resources/empty.zip differ