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