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