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/9264594e Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9264594e Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9264594e Branch: refs/heads/camel-2.15.x Commit: 9264594eb6d7fd98f477c8559f60f4b483a1c6e7 Parents: 6b62806 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:50 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/9264594e/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 6b4679c..b34f63e 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; } }