You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2013/07/15 09:27:52 UTC
git commit: CAMEL-6139 fixed the issue that message headers is not
set rightly.
Updated Branches:
refs/heads/master 83016eeb4 -> 46a9c2b01
CAMEL-6139 fixed the issue that message headers is not set rightly.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/46a9c2b0
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/46a9c2b0
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/46a9c2b0
Branch: refs/heads/master
Commit: 46a9c2b018f61824ed27a168daed5759318712b4
Parents: 83016ee
Author: Willem Jiang <ni...@apache.org>
Authored: Mon Jul 15 15:27:15 2013 +0800
Committer: Willem Jiang <ni...@apache.org>
Committed: Mon Jul 15 15:27:15 2013 +0800
----------------------------------------------------------------------
.../camel/dataformat/zipfile/ZipIterator.java | 2 +-
.../ZipFileMultipleFilesSplitterTest.java | 38 +++++++++++++++++++-
2 files changed, 38 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/46a9c2b0/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 a7f1d65..d4ac227 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
@@ -97,7 +97,7 @@ class ZipIterator implements Iterator<Message> {
if (current != null) {
LOGGER.debug("read zipEntry {}", current.getName());
answer = new DefaultMessage();
- answer.setHeaders(inputMessage.getHeaders());
+ answer.getHeaders().putAll(inputMessage.getHeaders());
answer.setHeader("zipFileName", current.getName());
answer.setHeader(Exchange.FILE_NAME, current.getName());
answer.setBody(new ZipInputStreamWrapper(zipInputStream));
http://git-wip-us.apache.org/repos/asf/camel/blob/46a9c2b0/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileMultipleFilesSplitterTest.java
----------------------------------------------------------------------
diff --git a/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileMultipleFilesSplitterTest.java b/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileMultipleFilesSplitterTest.java
index e60e6c1..54b5e54 100644
--- a/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileMultipleFilesSplitterTest.java
+++ b/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileMultipleFilesSplitterTest.java
@@ -18,9 +18,23 @@ package org.apache.camel.dataformat.zipfile;
import java.util.Iterator;
+import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.processor.aggregate.AggregationStrategy;
+import org.junit.Test;
public class ZipFileMultipleFilesSplitterTest extends ZipSplitterRouteTest {
+ static final String PROCESSED_FILES_HEADER_NAME = "processedFiles";
+
+ @Test
+ public void testSplitter() throws InterruptedException {
+ MockEndpoint processZipEntry = getMockEndpoint("mock:processZipEntry");
+ MockEndpoint splitResult = getMockEndpoint("mock:splitResult");
+ processZipEntry.expectedBodiesReceivedInAnyOrder("chau", "hi", "hola");
+ splitResult.expectedBodiesReceivedInAnyOrder("chiau.txt", "hi.txt", "hola.txt");
+ assertMockEndpointsSatisfied();
+ }
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
@@ -34,13 +48,35 @@ public class ZipFileMultipleFilesSplitterTest extends ZipSplitterRouteTest {
.unmarshal(zipFile)
.split(body(Iterator.class))
.streaming()
+ .aggregationStrategy(updateHeader())
.convertBodyTo(String.class)
.to("mock:processZipEntry")
.end()
- .log("Done processing big file: ${header.CamelFileName}");
+ .log("Done processing big file: ${header.CamelFileName}")
+ .setBody().header(PROCESSED_FILES_HEADER_NAME)
+ .split().body()
+ .to("mock:splitResult");
}
};
}
+
+ private AggregationStrategy updateHeader() {
+ return new AggregationStrategy() {
+ @Override
+ public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
+ if (oldExchange != null) {
+ String processedFiles = oldExchange.getIn().getHeader(PROCESSED_FILES_HEADER_NAME, String.class);
+ if (processedFiles == null) {
+ processedFiles = oldExchange.getIn().getHeader("zipFileName", String.class);
+ }
+ processedFiles = processedFiles + "," + newExchange.getIn().getHeader("zipFileName", String.class);
+ newExchange.getIn().setHeader(PROCESSED_FILES_HEADER_NAME, processedFiles);
+ }
+ return newExchange;
+ }
+
+ };
+ }
}