CAMEL-11772 - Fix potential ClassCastException when creating the message ID in camel-sjms and camel-jms
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/bcfb5f8b Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/bcfb5f8b Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/bcfb5f8b Branch: refs/heads/camel-2.18.x Commit: bcfb5f8b3817a98df0d18082de9a30d1413f63d2 Parents: 312a5e7 Author: derekwilhelm <[email protected]> Authored: Tue Sep 12 08:19:06 2017 -0600 Committer: Claus Ibsen <[email protected]> Committed: Wed Sep 13 09:47:06 2017 +0200 ---------------------------------------------------------------------- .../java/org/apache/camel/component/jms/JmsMessage.java | 12 +++++++++--- .../org/apache/camel/component/sjms/SjmsMessage.java | 12 +++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/bcfb5f8b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java ---------------------------------------------------------------------- diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java index 0408ff7..2a757a0 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java @@ -235,7 +235,13 @@ public class JmsMessage extends DefaultMessage { return super.createMessageId(); } try { - String id = getDestinationAsString(jmsMessage.getJMSDestination()) + jmsMessage.getJMSMessageID(); + String id = getDestinationAsString(jmsMessage.getJMSDestination()); + if(id != null) { + id += jmsMessage.getJMSMessageID(); + } + else { + id = super.createMessageId(); + } return getSanitizedString(id); } catch (JMSException e) { throw new RuntimeExchangeException("Unable to retrieve JMSMessageID from JMS Message", getExchange(), e); @@ -252,12 +258,12 @@ public class JmsMessage extends DefaultMessage { } private String getDestinationAsString(Destination destination) throws JMSException { - String result; + String result = null; if (destination == null) { result = "null destination!" + File.separator; } else if (destination instanceof Topic) { result = "topic" + File.separator + ((Topic) destination).getTopicName() + File.separator; - } else { + } else if (destination instanceof Queue){ result = "queue" + File.separator + ((Queue) destination).getQueueName() + File.separator; } return result; http://git-wip-us.apache.org/repos/asf/camel/blob/bcfb5f8b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsMessage.java ---------------------------------------------------------------------- diff --git a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsMessage.java b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsMessage.java index 907985e..4cc83ce 100644 --- a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsMessage.java +++ b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsMessage.java @@ -248,7 +248,13 @@ public class SjmsMessage extends DefaultMessage { return super.createMessageId(); } try { - String id = getDestinationAsString(jmsMessage.getJMSDestination()) + jmsMessage.getJMSMessageID(); + String id = getDestinationAsString(jmsMessage.getJMSDestination()); + if(id != null) { + id += jmsMessage.getJMSMessageID(); + } + else { + id = super.createMessageId(); + } return getSanitizedString(id); } catch (JMSException e) { throw new RuntimeExchangeException("Unable to retrieve JMSMessageID from JMS Message", getExchange(), e); @@ -265,12 +271,12 @@ public class SjmsMessage extends DefaultMessage { } private String getDestinationAsString(Destination destination) throws JMSException { - String result; + String result = null; if (destination == null) { result = "null destination!" + File.separator; } else if (destination instanceof Topic) { result = "topic" + File.separator + ((Topic) destination).getTopicName() + File.separator; - } else { + } else if (destination instanceof Queue) { result = "queue" + File.separator + ((Queue) destination).getQueueName() + File.separator; } return result;
