This is an automated email from the ASF dual-hosted git repository.
ffang 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 ae61ced5af [CXF-8938]don't assume to use XOP when attachment is
available
ae61ced5af is described below
commit ae61ced5af5caa1ee32dfc1af24bbbf777d6d926
Author: Freeman Fang <[email protected]>
AuthorDate: Thu Aug 14 11:14:31 2025 -0400
[CXF-8938]don't assume to use XOP when attachment is available
(cherry picked from commit afb073ebb0d5962a0dceeaebbe36f6578a545695)
(cherry picked from commit 183ab4f8905627b0e6aa3133942e782cda7f2d2a)
---
.../java/org/apache/cxf/jaxb/JAXBDataBase.java | 5 +++--
.../jaxb/attachment/JAXBAttachmentMarshaller.java | 6 ++++--
.../org/apache/cxf/jaxb/io/DataWriterImpl.java | 2 ++
.../mtom_bindingtype/MTOMBindingTypeTest.java | 23 ++++++++++++++++++++++
4 files changed, 32 insertions(+), 4 deletions(-)
diff --git
a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBase.java
b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBase.java
index 5df92b7f5b..13adfb7898 100644
--- a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBase.java
+++ b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBase.java
@@ -57,7 +57,8 @@ public abstract class JAXBDataBase {
protected Schema schema;
protected Collection<Attachment> attachments;
protected Integer mtomThreshold; // null if we should default.
-
+ protected boolean mtomEnabled;
+
protected JAXBDataBase(JAXBContext ctx) {
context = ctx;
}
@@ -90,7 +91,7 @@ public abstract class JAXBDataBase {
}
protected AttachmentMarshaller getAttachmentMarshaller() {
- return new JAXBAttachmentMarshaller(attachments, mtomThreshold);
+ return new JAXBAttachmentMarshaller(attachments, mtomThreshold,
mtomEnabled);
}
public void setProperty(String prop, Object value) {
diff --git
a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/attachment/JAXBAttachmentMarshaller.java
b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/attachment/JAXBAttachmentMarshaller.java
index 89b976ebb5..035839c485 100644
---
a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/attachment/JAXBAttachmentMarshaller.java
+++
b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/attachment/JAXBAttachmentMarshaller.java
@@ -37,13 +37,15 @@ public class JAXBAttachmentMarshaller extends
AttachmentMarshaller {
private boolean isXop;
private QName lastElementName;
- public JAXBAttachmentMarshaller(Collection<Attachment> attachments,
Integer mtomThreshold) {
+ public JAXBAttachmentMarshaller(Collection<Attachment> attachments,
+ Integer mtomThreshold,
+ boolean mtomEnabled) {
super();
if (mtomThreshold != null) {
threshold = mtomThreshold.intValue();
}
atts = attachments;
- isXop = attachments != null;
+ isXop = mtomEnabled && (attachments != null);
}
public QName getLastMTOMElementName() {
diff --git
a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
index 921c4976f8..a974ff6a8c 100644
---
a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
+++
b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
@@ -86,6 +86,8 @@ public class DataWriterImpl<T> extends JAXBDataBase
implements DataWriter<T> {
}
setEventHandler = MessageUtils.getContextualBoolean(m,
JAXBDataBinding.SET_VALIDATION_EVENT_HANDLER, true);
+ mtomEnabled = MessageUtils.getContextualBoolean(m,
+ org.apache.cxf.message.Message.MTOM_ENABLED, false);
}
}
diff --git
a/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_bindingtype/MTOMBindingTypeTest.java
b/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_bindingtype/MTOMBindingTypeTest.java
index 7ef01436e5..23a005a7e1 100644
---
a/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_bindingtype/MTOMBindingTypeTest.java
+++
b/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom_bindingtype/MTOMBindingTypeTest.java
@@ -103,6 +103,29 @@ public class MTOMBindingTypeTest extends
AbstractBusClientServerTestBase {
assertEquals("CXF", new String(photo.value));
assertNotNull(image.value);
}
+
+ @Test
+ public void testDetailWithoutMTOM() throws Exception {
+ ByteArrayOutputStream input = setupInLogging();
+ ByteArrayOutputStream output = setupOutLogging();
+
+ Holder<byte[]> photo = new Holder<>("CXF".getBytes());
+ Holder<Image> image = new Holder<>(getImage("/java.jpg"));
+
+ Hello port = getPort();
+
+ SOAPBinding binding = (SOAPBinding)
((BindingProvider)port).getBinding();
+ binding.setMTOMEnabled(false);
+
+ port.detail(photo, image);
+
+ String expected = "<xop:Include ";
+ assertTrue(output.toString().indexOf(expected) == -1);
+ assertTrue(input.toString().indexOf(expected) != -1);
+
+ assertEquals("CXF", new String(photo.value));
+ assertNotNull(image.value);
+ }
@Test
@org.junit.Ignore