This is an automated email from the ASF dual-hosted git repository.
ffang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/main by this push:
new afb073ebb0 [CXF-8938]don't assume to use XOP when attachment is
available
afb073ebb0 is described below
commit afb073ebb0d5962a0dceeaebbe36f6578a545695
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
---
.../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 3c9211568a..2629f1b91c 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 74be7403de..a7762bad80 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 48cee54656..01f502db37 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
@@ -85,6 +85,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 bd391f58a2..e38ed4ee21 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