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

Reply via email to