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 2016/03/30 15:35:35 UTC

[1/2] camel git commit: CAMEL-9777: camel-zipfile - Using zip iterator with dataformat may fail.

Repository: camel
Updated Branches:
  refs/heads/camel-2.16.x cbf6335d5 -> 771f06c59
  refs/heads/master 2a5a7ccc4 -> b25ff047d


CAMEL-9777: camel-zipfile - Using zip iterator with dataformat may fail.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/771f06c5
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/771f06c5
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/771f06c5

Branch: refs/heads/camel-2.16.x
Commit: 771f06c595a11d6c99f9d54612472176624a7898
Parents: cbf6335
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Mar 30 15:34:04 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Mar 30 15:35:21 2016 +0200

----------------------------------------------------------------------
 .../camel/dataformat/zipfile/ZipIterator.java   |  7 +-
 .../zipfile/ZipFileSplitOneFileTest.java        | 97 ++++++++++++++++++++
 2 files changed, 98 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/771f06c5/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 ed8e68e..b1a0c30 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
@@ -105,12 +105,7 @@ public class ZipIterator implements Iterator<Message>, Closeable {
                 answer.getHeaders().putAll(inputMessage.getHeaders());
                 answer.setHeader("zipFileName", current.getName());
                 answer.setHeader(Exchange.FILE_NAME, current.getName());
-                if (current.getSize() > 0) {
-                    answer.setBody(new ZipInputStreamWrapper(zipInputStream));
-                } else {
-                    // Workaround for the case when the entry is zero bytes big
-                    answer.setBody(new ByteArrayInputStream(new byte[0]));
-                }
+                answer.setBody(new ZipInputStreamWrapper(zipInputStream));
                 return answer;
             } else {
                 LOGGER.trace("close zipInputStream");

http://git-wip-us.apache.org/repos/asf/camel/blob/771f06c5/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitOneFileTest.java
----------------------------------------------------------------------
diff --git a/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitOneFileTest.java b/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitOneFileTest.java
new file mode 100644
index 0000000..f1f6cd3
--- /dev/null
+++ b/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitOneFileTest.java
@@ -0,0 +1,97 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dataformat.zipfile;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class ZipFileSplitOneFileTest extends CamelTestSupport {
+
+    @Override
+    public void setUp() throws Exception {
+        deleteDirectory("target/zip-unmarshal");
+        super.setUp();
+    }
+
+    @Test
+    public void testZipFileUnmarshal() throws Exception {
+        getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.FILE_NAME_ONLY, "test.zip");
+        getMockEndpoint("mock:end").expectedBodiesReceived("Hello World");
+
+        createZipFile("Hello World");
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Override
+    protected RoutesBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                ZipFileDataFormat zf = new ZipFileDataFormat();
+                zf.setUsingIterator(true);
+
+                from("file://target/zip-unmarshal?noop=true&include=.*zip")
+                    .to("mock:input")
+                    .unmarshal(zf)
+                    .split(bodyAs(Iterator.class)).streaming()
+                        .convertBodyTo(String.class)
+                        .to("mock:end")
+                    .end();
+            }
+        };
+    }
+
+    private void createZipFile(String content) throws IOException {
+        String basePath = "target" + File.separator + "zip-unmarshal" + File.separator;
+        File file = new File(basePath + "test.txt");
+        file.getParentFile().mkdirs();
+
+        try (FileWriter fw = new FileWriter(file);
+             FileOutputStream fos = new FileOutputStream(basePath + "test.zip");
+             ZipOutputStream zos = new ZipOutputStream(fos);
+             FileInputStream fis = new FileInputStream(basePath + "test.txt")) {
+
+            fw.write(content);
+            fw.close();
+
+            ZipEntry entry = new ZipEntry("test.txt");
+            zos.putNextEntry(entry);
+
+            int len;
+            byte[] buffer = new byte[1024];
+
+            while ((len = fis.read(buffer)) > 0) {
+                zos.write(buffer, 0, len);
+            }
+
+            zos.closeEntry();
+        }
+    }
+}


[2/2] camel git commit: CAMEL-9777: camel-zipfile - Using zip iterator with dataformat may fail.

Posted by da...@apache.org.
CAMEL-9777: camel-zipfile - Using zip iterator with dataformat may fail.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b25ff047
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b25ff047
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b25ff047

Branch: refs/heads/master
Commit: b25ff047d3594188717ff1794092d9b7d1aec7fc
Parents: 2a5a7cc
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Mar 30 15:34:04 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Mar 30 15:35:28 2016 +0200

----------------------------------------------------------------------
 .../camel/dataformat/zipfile/ZipIterator.java   |  7 +-
 .../zipfile/ZipFileSplitOneFileTest.java        | 97 ++++++++++++++++++++
 2 files changed, 98 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/b25ff047/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 ed8e68e..b1a0c30 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
@@ -105,12 +105,7 @@ public class ZipIterator implements Iterator<Message>, Closeable {
                 answer.getHeaders().putAll(inputMessage.getHeaders());
                 answer.setHeader("zipFileName", current.getName());
                 answer.setHeader(Exchange.FILE_NAME, current.getName());
-                if (current.getSize() > 0) {
-                    answer.setBody(new ZipInputStreamWrapper(zipInputStream));
-                } else {
-                    // Workaround for the case when the entry is zero bytes big
-                    answer.setBody(new ByteArrayInputStream(new byte[0]));
-                }
+                answer.setBody(new ZipInputStreamWrapper(zipInputStream));
                 return answer;
             } else {
                 LOGGER.trace("close zipInputStream");

http://git-wip-us.apache.org/repos/asf/camel/blob/b25ff047/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitOneFileTest.java
----------------------------------------------------------------------
diff --git a/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitOneFileTest.java b/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitOneFileTest.java
new file mode 100644
index 0000000..f1f6cd3
--- /dev/null
+++ b/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileSplitOneFileTest.java
@@ -0,0 +1,97 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dataformat.zipfile;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class ZipFileSplitOneFileTest extends CamelTestSupport {
+
+    @Override
+    public void setUp() throws Exception {
+        deleteDirectory("target/zip-unmarshal");
+        super.setUp();
+    }
+
+    @Test
+    public void testZipFileUnmarshal() throws Exception {
+        getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.FILE_NAME_ONLY, "test.zip");
+        getMockEndpoint("mock:end").expectedBodiesReceived("Hello World");
+
+        createZipFile("Hello World");
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Override
+    protected RoutesBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                ZipFileDataFormat zf = new ZipFileDataFormat();
+                zf.setUsingIterator(true);
+
+                from("file://target/zip-unmarshal?noop=true&include=.*zip")
+                    .to("mock:input")
+                    .unmarshal(zf)
+                    .split(bodyAs(Iterator.class)).streaming()
+                        .convertBodyTo(String.class)
+                        .to("mock:end")
+                    .end();
+            }
+        };
+    }
+
+    private void createZipFile(String content) throws IOException {
+        String basePath = "target" + File.separator + "zip-unmarshal" + File.separator;
+        File file = new File(basePath + "test.txt");
+        file.getParentFile().mkdirs();
+
+        try (FileWriter fw = new FileWriter(file);
+             FileOutputStream fos = new FileOutputStream(basePath + "test.zip");
+             ZipOutputStream zos = new ZipOutputStream(fos);
+             FileInputStream fis = new FileInputStream(basePath + "test.txt")) {
+
+            fw.write(content);
+            fw.close();
+
+            ZipEntry entry = new ZipEntry("test.txt");
+            zos.putNextEntry(entry);
+
+            int len;
+            byte[] buffer = new byte[1024];
+
+            while ((len = fis.read(buffer)) > 0) {
+                zos.write(buffer, 0, len);
+            }
+
+            zos.closeEntry();
+        }
+    }
+}