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")