CAMEL-9202: camel-flatpack. Close reader if error creating. Thanks to MykhailoVlakh for partial patch.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/92a6514f Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/92a6514f Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/92a6514f Branch: refs/heads/camel-2.16.x Commit: 92a6514ffdecb352e4771c7e181db1373cfeed40 Parents: 8e261f7 Author: Claus Ibsen <davscl...@apache.org> Authored: Sun Nov 22 14:41:43 2015 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sun Nov 22 14:44:31 2015 +0100 ---------------------------------------------------------------------- .../camel/component/flatpack/FlatpackEndpoint.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/92a6514f/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackEndpoint.java b/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackEndpoint.java index cb7b3af..58c3604 100644 --- a/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackEndpoint.java +++ b/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackEndpoint.java @@ -102,12 +102,18 @@ public class FlatpackEndpoint extends DefaultPollingEndpoint { loadBalancer.process(exchange); } - public Parser createParser(Exchange exchange) throws InvalidPayloadException, IOException { + public Parser createParser(Exchange exchange) throws Exception { Reader bodyReader = exchange.getIn().getMandatoryBody(Reader.class); - if (FlatpackType.fixed == type) { - return createFixedParser(resourceUri, bodyReader); - } else { - return createDelimitedParser(exchange); + try { + if (FlatpackType.fixed == type) { + return createFixedParser(resourceUri, bodyReader); + } else { + return createDelimitedParser(exchange); + } + } catch (Exception e) { + // must close reader in case of some exception + IOHelper.close(bodyReader); + throw e; } }