This is an automated email from the ASF dual-hosted git repository.
coheigea pushed a commit to branch 3.6.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/3.6.x-fixes by this push:
new 96916fdc0df Make it configuration to send binary JMS messages as
BytesMessages
96916fdc0df is described below
commit 96916fdc0df37f56c4b58275a4bff1bfd3c96eae
Author: Colm O hEigeartaigh <[email protected]>
AuthorDate: Fri Jul 24 15:37:42 2026 +0100
Make it configuration to send binary JMS messages as BytesMessages
(cherry picked from commit 1695c05def5506db2c94de68f9ce835a18c1107d)
---
.../apache/cxf/transport/jms/JMSConfiguration.java | 9 +++++++++
.../apache/cxf/transport/jms/JMSMessageUtils.java | 3 ++-
.../org/apache/cxf/transport/jms/util/JMSUtil.java | 20 +++++++++++++++++++-
.../apache/cxf/transport/jms/util/JMSUtilTest.java | 15 ++++++++++++++-
4 files changed, 44 insertions(+), 3 deletions(-)
diff --git
a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
index 44e7477d379..42dd298b906 100644
---
a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
+++
b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
@@ -87,6 +87,7 @@ public class JMSConfiguration {
private volatile Destination replyToDestinationDest;
private String messageType = JMSConstants.TEXT_MESSAGE_TYPE;
+ private boolean useObjectMessageFallback = true;
private boolean pubSubDomain;
private boolean replyPubSubDomain;
@@ -284,6 +285,14 @@ public class JMSConfiguration {
this.messageType = messageType;
}
+ public boolean isUseObjectMessageFallback() {
+ return useObjectMessageFallback;
+ }
+
+ public void setUseObjectMessageFallback(boolean useObjectMessageFallback) {
+ this.useObjectMessageFallback = useObjectMessageFallback;
+ }
+
public boolean isPubSubDomain() {
return pubSubDomain;
}
diff --git
a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSMessageUtils.java
b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSMessageUtils.java
index 06da1b4f2d9..dee29bd6459 100644
---
a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSMessageUtils.java
+++
b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSMessageUtils.java
@@ -187,7 +187,8 @@ final class JMSMessageUtils {
String headerType)
throws JMSException {
- Message jmsMessage = JMSUtil.createAndSetPayload(payload, session,
messageType);
+ Message jmsMessage = JMSUtil.createAndSetPayload(payload, session,
messageType,
+
jmsConfig.isUseObjectMessageFallback());
JMSMessageHeadersType messageHeaders = getOrCreateHeader(outMessage,
headerType);
if (!messageHeaders.isSetJMSDeliveryMode()) {
messageHeaders.setJMSDeliveryMode(jmsConfig.getDeliveryMode());
diff --git
a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/JMSUtil.java
b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/JMSUtil.java
index bc1e62821a6..363f1c63c39 100644
---
a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/JMSUtil.java
+++
b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/JMSUtil.java
@@ -106,12 +106,30 @@ public final class JMSUtil {
* @param messageType the JMS message type
* @return a JMS of the appropriate type populated with the given payload
*/
+ @Deprecated(since = "4.1.8", forRemoval = true)
public static Message createAndSetPayload(Object payload, Session session,
String messageType)
throws JMSException {
+ return createAndSetPayload(payload, session, messageType, true);
+ }
+
+ /**
+ * Create a JMS of the appropriate type populated with the given payload.
+ *
+ * @param payload the message payload, expected to be either of type
String or byte[] depending on payload
+ * type
+ * @param session the JMS session
+ * @param messageType the JMS message type
+ * @param useObjectMessageFallback whether non-text payloads should fall
back to ObjectMessage
+ * @return a JMS of the appropriate type populated with the given payload
+ */
+ public static Message createAndSetPayload(Object payload, Session session,
String messageType,
+ boolean useObjectMessageFallback)
+ throws JMSException {
final Message message;
if (JMSConstants.TEXT_MESSAGE_TYPE.equals(messageType)) {
message = session.createTextMessage((String)payload);
- } else if (JMSConstants.BYTE_MESSAGE_TYPE.equals(messageType)) {
+ } else if (JMSConstants.BYTE_MESSAGE_TYPE.equals(messageType)
+ || !useObjectMessageFallback) {
message = session.createBytesMessage();
((BytesMessage)message).writeBytes((byte[])payload);
} else {
diff --git
a/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/util/JMSUtilTest.java
b/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/util/JMSUtilTest.java
index 777ddd85f84..901b881a1ea 100644
---
a/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/util/JMSUtilTest.java
+++
b/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/util/JMSUtilTest.java
@@ -27,6 +27,7 @@ import java.util.concurrent.atomic.AtomicLong;
import javax.jms.BytesMessage;
import javax.jms.Connection;
import javax.jms.JMSException;
+import javax.jms.ObjectMessage;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
@@ -82,7 +83,19 @@ public class JMSUtilTest {
javax.jms.Message jmsMessage =
JMSUtil.createAndSetPayload(testBytes, session,
JMSConstants.BYTE_MESSAGE_TYPE);
assertTrue("Message should have been of type BytesMessage ",
jmsMessage instanceof BytesMessage);
+ jmsMessage = JMSUtil.createAndSetPayload(testBytes, session,
JMSConstants.BINARY_MESSAGE_TYPE);
+ assertTrue("Binary message fallback should have been of type
ObjectMessage ",
+ jmsMessage instanceof ObjectMessage);
+ jmsMessage = JMSUtil.createAndSetPayload(testBytes, session,
JMSConstants.BINARY_MESSAGE_TYPE, false);
+ assertTrue("Fallback-disabled binary message should have been of
type BytesMessage ",
+ jmsMessage instanceof BytesMessage);
+ jmsMessage = JMSUtil.createAndSetPayload(testBytes, session,
"application/octet-stream", true);
+ assertTrue("Non-text message fallback should have been of type
ObjectMessage ",
+ jmsMessage instanceof ObjectMessage);
+ jmsMessage = JMSUtil.createAndSetPayload(testBytes, session,
"application/octet-stream", false);
+ assertTrue("Fallback-disabled message should have been of type
BytesMessage ",
+ jmsMessage instanceof BytesMessage);
}
}
-}
\ No newline at end of file
+}