This is an automated email from the ASF dual-hosted git repository.

reta 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 2b1e467c70 [CXF-9134] Do not wrap Attachment into another Attachment 
(#2392)
2b1e467c70 is described below

commit 2b1e467c704a03b7fd2ec70d9d68a0b17d880377
Author: andreibastun <[email protected]>
AuthorDate: Tue May 6 23:57:19 2025 +0200

    [CXF-9134] Do not wrap Attachment into another Attachment (#2392)
---
 .../java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java   |  6 +++++-
 .../org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java    | 13 +++++++++++++
 .../java/org/apache/cxf/systest/jaxrs/MultipartStore.java   | 11 +++++++++++
 3 files changed, 29 insertions(+), 1 deletion(-)

diff --git 
a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java 
b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
index 9eaaeea407..2cf922e40c 100644
--- 
a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
+++ 
b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
@@ -801,7 +801,11 @@ public class ClientProxyImpl extends AbstractClient 
implements
             if (part != null) {
                 Object partObject = params[p.getIndex()];
                 if (partObject != null) {
-                    atts.add(new Attachment(part.value(), part.type(), 
partObject));
+                    if (partObject instanceof Attachment) {
+                        atts.add((Attachment)partObject);
+                    } else {
+                        atts.add(new Attachment(part.value(), part.type(), 
partObject));
+                    }
                 }
             }
         });
diff --git 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
index e1a1984908..4b2ae2702e 100644
--- 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
+++ 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
@@ -511,6 +511,19 @@ public class JAXRSMultipartTest extends 
AbstractBusClientServerTestBase {
         assertEquals("CXF in Action - 2", b.getName());
     }
 
+    @Test
+    public void attachmentIsNotWrappedIntoAnotherAttachment() throws Exception 
{
+        MultipartStore store =
+                JAXRSClientFactory.create("http://localhost:"; + PORT, 
MultipartStore.class);
+
+        Attachment attachment =
+                new Attachment("audio", MediaType.APPLICATION_OCTET_STREAM, 
new byte[]{42});
+
+        Book b = store.addAudioBook(new Book("CXF in Action", 125L), 
attachment);
+        assertEquals(125L, b.getId());
+        assertEquals("CXF in Action - 42", b.getName());
+    }
+
     @Test
     public void testNullPartProxy() throws Exception {
         MultipartStore store =
diff --git 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java
index 01190c6185..9a73818f71 100644
--- 
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java
+++ 
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java
@@ -469,6 +469,17 @@ public class MultipartStore {
         return addBookJaxbJson(b1, b2);
     }
 
+    @POST
+    @Path("/books/audiofiles")
+    @Consumes("multipart/related")
+    @Produces("text/xml")
+    public Book addAudioBook(
+            @Multipart(value = "book", type = "application/json") Book book,
+            @Multipart(value = "audio") Attachment audioFile) throws Exception 
{
+        String payload = 
String.valueOf(audioFile.getDataHandler().getContent().toString().getBytes()[0]);
+        return new Book(book.getName() + " - " + payload, book.getId());
+    }
+
     @POST
     @Path("/books/jaxbandsimpleparts")
     @Consumes("multipart/related")

Reply via email to