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

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


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

commit b6922c9c9acea981553c864e08a9df143442adf9
Author: Benjamin Graf <[email protected]>
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

Reply via email to