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 2017/03/14 17:34:43 UTC
[05/10] camel git commit: CAMEL-10791-added option to handle empty
directories while unzipping
CAMEL-10791-added option to handle empty directories while unzipping
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/033bb9d9
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/033bb9d9
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/033bb9d9
Branch: refs/heads/master
Commit: 033bb9d9a1f0db458c7121d93aabeefe6d4bc476
Parents: 741b047
Author: onders86 <on...@gmail.com>
Authored: Mon Mar 13 11:04:44 2017 +0300
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Mar 14 18:29:38 2017 +0100
----------------------------------------------------------------------
.../camel/dataformat/zipfile/ZipFileDataFormat.java | 14 ++++++++++++++
.../apache/camel/dataformat/zipfile/ZipIterator.java | 7 +++++++
2 files changed, 21 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/033bb9d9/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormat.java b/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormat.java
index b251201..3704d94 100644
--- a/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormat.java
+++ b/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormat.java
@@ -39,6 +39,7 @@ import static org.apache.camel.Exchange.FILE_NAME;
*/
public class ZipFileDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
private boolean usingIterator;
+ private boolean supportEmptyDirectory;
@Override
public String getDataFormatName() {
@@ -72,6 +73,11 @@ public class ZipFileDataFormat extends ServiceSupport implements DataFormat, Dat
@Override
public Object unmarshal(final Exchange exchange, final InputStream inputStream) throws Exception {
+ if (supportEmptyDirectory) {
+ exchange.getIn().setHeader("unzipEmptyDirectorySupported", true);
+ } else {
+ exchange.getIn().setHeader("unzipEmptyDirectorySupported", false);
+ }
if (usingIterator) {
return new ZipIterator(exchange.getIn());
} else {
@@ -104,6 +110,14 @@ public class ZipFileDataFormat extends ServiceSupport implements DataFormat, Dat
public void setUsingIterator(boolean usingIterator) {
this.usingIterator = usingIterator;
}
+
+ public boolean isSupportEmptyDirectory() {
+ return supportEmptyDirectory;
+ }
+
+ public void setSupportEmptyDirectory(boolean supportEmptyDirectory) {
+ this.supportEmptyDirectory = supportEmptyDirectory;
+ }
@Override
protected void doStart() throws Exception {
http://git-wip-us.apache.org/repos/asf/camel/blob/033bb9d9/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/ZipIterator.java
----------------------------------------------------------------------
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 77312a3..6d58ad8 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
@@ -40,11 +40,13 @@ public class ZipIterator implements Iterator<Message>, Closeable {
static final Logger LOGGER = LoggerFactory.getLogger(ZipIterator.class);
private final Message inputMessage;
+ private final boolean unzipEmptyDirectorySupported;
private volatile ZipInputStream zipInputStream;
private volatile Message parent;
public ZipIterator(Message inputMessage) {
this.inputMessage = inputMessage;
+ this.unzipEmptyDirectorySupported = (boolean)inputMessage.getHeader("unzipEmptyDirectorySupported");
InputStream inputStream = inputMessage.getBody(InputStream.class);
if (inputStream instanceof ZipInputStream) {
zipInputStream = (ZipInputStream)inputStream;
@@ -129,6 +131,11 @@ public class ZipIterator implements Iterator<Message>, Closeable {
while ((entry = zipInputStream.getNextEntry()) != null) {
if (!entry.isDirectory()) {
return entry;
+ } else {
+ if (unzipEmptyDirectorySupported) {
+ ZipEntry dirEntry = new ZipEntry(entry.getName() + ".");
+ return dirEntry;
+ }
}
}