You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2015/03/15 10:51:11 UTC
[3/5] camel git commit: CAMEL-8489: camel-sjms - allow null body
option.
CAMEL-8489: camel-sjms - allow null body option.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7852d990
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7852d990
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7852d990
Branch: refs/heads/master
Commit: 7852d9906663fbe3c9227c551a790d04e6aac15a
Parents: de613e9
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Mar 15 10:51:51 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Mar 15 10:51:51 2015 +0100
----------------------------------------------------------------------
.../camel/component/sjms/SjmsEndpoint.java | 10 +++
.../component/sjms/jms/JmsMessageHelper.java | 87 ++++++++++----------
2 files changed, 55 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/7852d990/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsEndpoint.java b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsEndpoint.java
index 5dbeb03..0ea668c 100644
--- a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsEndpoint.java
+++ b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsEndpoint.java
@@ -84,6 +84,8 @@ public class SjmsEndpoint extends DefaultEndpoint implements MultipleConsumersSu
private boolean asyncStopListener;
@UriParam(defaultValue = "true")
private boolean prefillPool = true;
+ @UriParam(defaultValue = "true")
+ private boolean allowNullBody = true;
@UriParam
private TransactionCommitStrategy transactionCommitStrategy;
@UriParam
@@ -504,4 +506,12 @@ public class SjmsEndpoint extends DefaultEndpoint implements MultipleConsumersSu
public void setDestinationCreationStrategy(DestinationCreationStrategy destinationCreationStrategy) {
this.destinationCreationStrategy = destinationCreationStrategy;
}
+
+ public boolean isAllowNullBody() {
+ return allowNullBody;
+ }
+
+ public void setAllowNullBody(boolean allowNullBody) {
+ this.allowNullBody = allowNullBody;
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7852d990/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/jms/JmsMessageHelper.java
----------------------------------------------------------------------
diff --git a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/jms/JmsMessageHelper.java b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/jms/JmsMessageHelper.java
index 062d143..81091d6 100644
--- a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/jms/JmsMessageHelper.java
+++ b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/jms/JmsMessageHelper.java
@@ -153,55 +153,58 @@ public final class JmsMessageHelper implements JmsConstants {
}
public static Message createMessage(Session session, Object payload, Map<String, Object> messageHeaders, SjmsEndpoint endpoint) throws Exception {
- return createMessage(session, payload, messageHeaders, endpoint.getJmsKeyFormatStrategy(), endpoint.getCamelContext().getTypeConverter());
+ return createMessage(session, payload, messageHeaders, endpoint.isAllowNullBody(), endpoint.getJmsKeyFormatStrategy(), endpoint.getCamelContext().getTypeConverter());
}
- private static Message createMessage(Session session, Object payload, Map<String, Object> messageHeaders, KeyFormatStrategy keyFormatStrategy, TypeConverter typeConverter) throws Exception {
+ private static Message createMessage(Session session, Object payload, Map<String, Object> messageHeaders, boolean allowNullBody,
+ KeyFormatStrategy keyFormatStrategy, TypeConverter typeConverter) throws Exception {
Message answer = null;
JmsMessageType messageType = JmsMessageHelper.discoverMessageTypeFromPayload(payload);
- try {
- switch (messageType) {
- case Bytes:
- BytesMessage bytesMessage = session.createBytesMessage();
- byte[] bytesToWrite = typeConverter.convertTo(byte[].class, payload);
- bytesMessage.writeBytes(bytesToWrite);
- answer = bytesMessage;
- break;
- case Map:
- MapMessage mapMessage = session.createMapMessage();
- Map objMap = (Map) payload;
- for (final Map.Entry entry : (Set<Map.Entry>)objMap.entrySet()) {
- mapMessage.setObject(entry.getKey().toString(), entry.getValue());
- }
- answer = mapMessage;
- break;
- case Object:
- ObjectMessage objectMessage = session.createObjectMessage();
- objectMessage.setObject((Serializable) payload);
- answer = objectMessage;
- break;
- case Text:
- TextMessage textMessage = session.createTextMessage();
- String convertedText = typeConverter.convertTo(String.class, payload);
- textMessage.setText(convertedText);
- answer = textMessage;
- break;
- case Stream:
- StreamMessage streamMessage = session.createStreamMessage();
- Collection collection = (Collection)payload;
- for (final Object obj : collection) {
- streamMessage.writeObject(obj);
- }
- answer = streamMessage;
- break;
- default:
- break;
+ switch (messageType) {
+ case Bytes:
+ BytesMessage bytesMessage = session.createBytesMessage();
+ byte[] bytesToWrite = typeConverter.convertTo(byte[].class, payload);
+ bytesMessage.writeBytes(bytesToWrite);
+ answer = bytesMessage;
+ break;
+ case Map:
+ MapMessage mapMessage = session.createMapMessage();
+ Map objMap = (Map) payload;
+ for (final Map.Entry entry : (Set<Map.Entry>)objMap.entrySet()) {
+ mapMessage.setObject(entry.getKey().toString(), entry.getValue());
}
- } catch (Exception e) {
- LOGGER.error("Error creating a message of type: {}", messageType, e);
- throw e;
+ answer = mapMessage;
+ break;
+ case Object:
+ ObjectMessage objectMessage = session.createObjectMessage();
+ objectMessage.setObject((Serializable) payload);
+ answer = objectMessage;
+ break;
+ case Text:
+ TextMessage textMessage = session.createTextMessage();
+ String convertedText = typeConverter.convertTo(String.class, payload);
+ textMessage.setText(convertedText);
+ answer = textMessage;
+ break;
+ case Stream:
+ StreamMessage streamMessage = session.createStreamMessage();
+ Collection collection = (Collection)payload;
+ for (final Object obj : collection) {
+ streamMessage.writeObject(obj);
+ }
+ answer = streamMessage;
+ break;
+ case Message:
+ if (allowNullBody && payload == null) {
+ answer = session.createMessage();
+ } else {
+ throw new JMSException("Null body is not allowed");
+ }
+ default:
+ break;
}
+
if (messageHeaders != null && !messageHeaders.isEmpty()) {
answer = JmsMessageHelper.setJmsMessageHeaders(answer, messageHeaders, keyFormatStrategy);
}