From deeeccc40b9a555ce1788adea6275e1781cd2f9c Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Wed, 21 Jun 2017 16:46:22 -0400 Subject: [PATCH] GH-160: Optimize UnZipResultSplitter Fixes spring-projects/spring-integration-extensions#160 * Upgrade to `zt-zip-1.11` * Polish README a bit --- spring-integration-zip/README.md | 13 +++----- spring-integration-zip/build.gradle | 2 +- .../zip/splitter/UnZipResultSplitter.java | 31 ++++++++++++------- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/spring-integration-zip/README.md b/spring-integration-zip/README.md index aedaa4b..0c45fd1 100644 --- a/spring-integration-zip/README.md +++ b/spring-integration-zip/README.md @@ -1,20 +1,15 @@ Spring Integration Zip Support ============================== -| | Build Status | -| ------------- | :-------------: | -| Linux | [![Build Status](http://build.spring.io/plugins/servlet/buildStatusImage/INTEXT-ZIP)](https://build.spring.io/browse/INTEXT-ZIP) | -| Windows | [![Build Status](http://build.spring.io/plugins/servlet/buildStatusImage/INTEXT-ZIPWIN)](https://build.spring.io/browse/INTEXT-ZIPWIN) | +Build Status : [![Build Status](http://build.spring.io/plugins/servlet/buildStatusImage/INTEXT-ZIP)](https://build.spring.io/browse/INTEXT-ZIP) ## Introduction This *Spring Integration Extension* provides [Zip][] (un-) compression support. The following components are provided: -* Zip transformer -* Unzip transformer -* UnZipResultSplitter - -**Important!** This module is currently under active development and not all functionality is provided or stable, yet. +* Zip Transformer +* UnZip Transformer +* UnZip Result Splitter ## ZIP Compression Support diff --git a/spring-integration-zip/build.gradle b/spring-integration-zip/build.gradle index 80edd30..33c20b7 100644 --- a/spring-integration-zip/build.gradle +++ b/spring-integration-zip/build.gradle @@ -63,7 +63,7 @@ ext { slf4jVersion = "1.7.21" springIntegrationVersion = '4.3.10.RELEASE' - ztZipVersion = '1.9' + ztZipVersion = '1.11' idPrefix = 'zip' } diff --git a/spring-integration-zip/src/main/java/org/springframework/integration/zip/splitter/UnZipResultSplitter.java b/spring-integration-zip/src/main/java/org/springframework/integration/zip/splitter/UnZipResultSplitter.java index 4e32a0e..c2e47d6 100644 --- a/spring-integration-zip/src/main/java/org/springframework/integration/zip/splitter/UnZipResultSplitter.java +++ b/spring-integration-zip/src/main/java/org/springframework/integration/zip/splitter/UnZipResultSplitter.java @@ -1,5 +1,5 @@ /* - * Copyright 2015-2016 the original author or authors. + * Copyright 2015-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,37 +23,44 @@ import java.util.Map; import org.apache.commons.io.FilenameUtils; import org.springframework.integration.file.FileHeaders; +import org.springframework.integration.splitter.AbstractMessageSplitter; import org.springframework.integration.support.MessageBuilder; import org.springframework.integration.zip.ZipHeaders; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; +import org.springframework.util.Assert; /** * * @author Gunnar Hillert * @author Andriy Kryvtsun + * @author Artem Bilan * * @since 1.0 */ -public class UnZipResultSplitter { +public class UnZipResultSplitter extends AbstractMessageSplitter { - public List> splitUnzippedMap(Message> message) { + @Override + @SuppressWarnings("unchecked") + protected Object splitMessage(Message message) { + Assert.state(message.getPayload() instanceof Map, + "The UnZipResultSplitter supports only Map payload"); + Map unzippedEntries = (Map) message.getPayload(); MessageHeaders headers = message.getHeaders(); - Map unzippedEntries = message.getPayload(); - List> messages = new ArrayList>(unzippedEntries.size()); + List> messageBuilders = new ArrayList>(unzippedEntries.size()); for (Map.Entry entry : unzippedEntries.entrySet()) { - final String path = FilenameUtils.getPath(entry.getKey()); - final String filename = FilenameUtils.getName(entry.getKey()); - final Message splitMessage = MessageBuilder.withPayload(entry.getValue()) + String path = FilenameUtils.getPath(entry.getKey()); + String filename = FilenameUtils.getName(entry.getKey()); + MessageBuilder messageBuilder = MessageBuilder.withPayload(entry.getValue()) .setHeader(FileHeaders.FILENAME, filename) .setHeader(ZipHeaders.ZIP_ENTRY_PATH, path) - .copyHeadersIfAbsent(headers) - .build(); - messages.add(splitMessage); + .copyHeadersIfAbsent(headers); + messageBuilders.add(messageBuilder); } - return messages; + + return messageBuilders; } }