This is an automated email from the ASF dual-hosted git repository. ppalaga pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push: new a3b728e158 CxfSoapMtomIT fails in native mode #4208 a3b728e158 is described below commit a3b728e1580e0d31c56bfc3f0e117e17e9ce0b41 Author: Peter Palaga <ppal...@redhat.com> AuthorDate: Tue Oct 25 18:04:18 2022 +0200 CxfSoapMtomIT fails in native mode #4208 --- .../soap/mtom/awt/it/CxfSoapMtomAwtResource.java | 22 +++++++------ .../cxf/soap/mtom/awt/it/CxfSoapMtomAwtRoutes.java | 23 ------------- .../cxf/soap/mtom/awt/it/IImageService.java | 6 ++-- .../awt/it/{IImageService.java => ImageData.java} | 38 +++++++++++++++++----- .../cxf/soap/mtom/awt/it/ImageService.java | 23 +++++-------- .../cxf/soap/mtom/awt/it/CxfSoapMtomAwtTest.java | 9 ++--- 6 files changed, 54 insertions(+), 67 deletions(-) diff --git a/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/CxfSoapMtomAwtResource.java b/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/CxfSoapMtomAwtResource.java index fac4c2d1f9..69be8bdf6a 100644 --- a/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/CxfSoapMtomAwtResource.java +++ b/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/CxfSoapMtomAwtResource.java @@ -26,8 +26,10 @@ import javax.enterprise.context.ApplicationScoped; import javax.imageio.ImageIO; import javax.inject.Inject; import javax.ws.rs.Consumes; +import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; +import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; @@ -44,15 +46,16 @@ public class CxfSoapMtomAwtResource { @Inject ProducerTemplate producerTemplate; - @Path("/upload") + @Path("/image/{imageName}") @POST + @Consumes(MediaType.APPLICATION_OCTET_STREAM) @Produces(MediaType.TEXT_PLAIN) - public Response upload(@QueryParam("imageName") String imageName, @QueryParam("mtomEnabled") boolean mtomEnabled, + public Response upload(@PathParam("imageName") String imageName, @QueryParam("mtomEnabled") boolean mtomEnabled, byte[] image) throws Exception { try (ByteArrayInputStream bais = new ByteArrayInputStream(image)) { final String response = producerTemplate.requestBodyAndHeader( "direct:" + mtomEndpoint(mtomEnabled), - new Object[] { ImageIO.read(bais), imageName }, + new ImageData(ImageIO.read(bais), imageName), OPERATION_NAME, "uploadImage", String.class); return Response .created(new URI("https://camel.apache.org/")) @@ -61,18 +64,17 @@ public class CxfSoapMtomAwtResource { } } - @Path("/download") - @POST - @Consumes(MediaType.TEXT_PLAIN) - public Response download(@QueryParam("imageName") String imageName, @QueryParam("mtomEnabled") boolean mtomEnabled) + @Path("/image/{imageName}") + @GET + public Response download(@PathParam("imageName") String imageName, @QueryParam("mtomEnabled") boolean mtomEnabled) throws Exception { - final BufferedImage response = (BufferedImage) producerTemplate.requestBodyAndHeader( + final ImageData image = (ImageData) producerTemplate.requestBodyAndHeader( "direct:" + mtomEndpoint(mtomEnabled), imageName, OPERATION_NAME, - "downloadImage", Image.class); + "downloadImage", ImageData.class); try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { - ImageIO.write(response, "png", baos); + ImageIO.write((BufferedImage) image.getData(), "png", baos); byte[] bytes = baos.toByteArray(); return Response .created(new URI("https://camel.apache.org/")) diff --git a/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/CxfSoapMtomAwtRoutes.java b/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/CxfSoapMtomAwtRoutes.java index 388a8cb093..0bb9e318c2 100644 --- a/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/CxfSoapMtomAwtRoutes.java +++ b/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/CxfSoapMtomAwtRoutes.java @@ -26,12 +26,9 @@ import javax.inject.Named; import javax.xml.ws.handler.Handler; import io.quarkus.runtime.LaunchMode; -import org.apache.camel.Exchange; -import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.cxf.jaxws.CxfEndpoint; import org.apache.cxf.ext.logging.LoggingFeature; -import org.apache.cxf.message.MessageContentsList; import org.eclipse.microprofile.config.Config; import org.eclipse.microprofile.config.ConfigProvider; @@ -58,30 +55,10 @@ public class CxfSoapMtomAwtRoutes extends RouteBuilder { .to("direct:processAwtImage"); from("direct:processAwtImage") - .process("imageAwtServiceProcessor") .recipientList((simple("bean:imageAwtService?method=${header.operationName}"))); } - @ApplicationScoped - @Named("imageAwtServiceProcessor") - static class ImageServiceProcessor implements Processor { - @Override - public void process(Exchange exchange) throws Exception { - String operationName = (String) exchange.getIn().getHeaders().get("operationName"); - MessageContentsList list = (MessageContentsList) exchange.getIn().getBody(); - if ("uploadImage".equals(operationName)) { - exchange.getIn().getHeaders().put("image", list.get(0)); - exchange.getIn().getHeaders().put("imageName", list.get(1)); - exchange.getIn().getHeaders() - .put("operationName", "uploadImage(${header.image},${header.imageName})"); - } else if ("downloadImage".equals(operationName)) { - exchange.getIn().setBody(list.get(0)); - } - } - - } - @Produces @ApplicationScoped @Named("loggingMtomAwtFeatureClient") diff --git a/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/IImageService.java b/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/IImageService.java index 686c53bbc6..6816daae83 100644 --- a/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/IImageService.java +++ b/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/IImageService.java @@ -16,8 +16,6 @@ */ package org.apache.camel.quarkus.component.cxf.soap.mtom.awt.it; -import java.awt.*; - import javax.jws.WebMethod; import javax.jws.WebService; @@ -25,9 +23,9 @@ import javax.jws.WebService; public interface IImageService { @WebMethod - Image downloadImage(String name); + ImageData downloadImage(String name); @WebMethod - String uploadImage(Image image, String name); + String uploadImage(ImageData image); } diff --git a/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/IImageService.java b/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/ImageData.java similarity index 58% copy from integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/IImageService.java copy to integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/ImageData.java index 686c53bbc6..e39a79a9c5 100644 --- a/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/IImageService.java +++ b/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/ImageData.java @@ -16,18 +16,38 @@ */ package org.apache.camel.quarkus.component.cxf.soap.mtom.awt.it; -import java.awt.*; +import java.awt.Image; -import javax.jws.WebMethod; -import javax.jws.WebService; +import javax.xml.bind.annotation.XmlType; -@WebService -public interface IImageService { +@XmlType(name = "imageData", namespace = "http://org.jboss.ws/xop/doclit") +public class ImageData { - @WebMethod - Image downloadImage(String name); + private Image data; + private String name; - @WebMethod - String uploadImage(Image image, String name); + public ImageData() { + } + public ImageData(Image data, String name) { + super(); + this.data = data; + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Image getData() { + return data; + } + + public void setData(Image data) { + this.data = data; + } } diff --git a/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/ImageService.java b/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/ImageService.java index aa0f0ab5c4..6a213f9732 100644 --- a/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/ImageService.java +++ b/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/main/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/ImageService.java @@ -23,25 +23,20 @@ import java.util.concurrent.ConcurrentHashMap; import javax.enterprise.context.ApplicationScoped; import javax.inject.Named; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.jboss.logging.Logger; @ApplicationScoped @Named("imageAwtService") public class ImageService implements IImageService { public static final String MSG_SUCCESS = "Upload Successful"; - private static final Logger log = LoggerFactory.getLogger(ImageService.class); + private static final Logger log = Logger.getLogger(ImageService.class); - private final Map<String, Image> imageRepository; - - public ImageService() { - imageRepository = new ConcurrentHashMap<>(); - } + private final Map<String, ImageData> imageRepository = new ConcurrentHashMap<>(); @Override - public Image downloadImage(String name) { - final Image image = imageRepository.get(name); + public ImageData downloadImage(String name) { + final ImageData image = imageRepository.get(name); if (image == null) { throw new IllegalStateException("Image with name " + name + " does not exist."); } @@ -49,12 +44,12 @@ public class ImageService implements IImageService { } @Override - public String uploadImage(Image image, String name) { + public String uploadImage(ImageData image) { - log.info("Upload image: " + image + " with name: " + name); + log.infof("Upload image: %s", image.getName()); - if (image != null && name != null && !"".equals(name)) { - imageRepository.put(name, image); + if (image.getData() != null && image.getName() != null) { + imageRepository.put(image.getName(), image); return MSG_SUCCESS; } throw new IllegalStateException("Illegal Data Format."); diff --git a/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/test/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/CxfSoapMtomAwtTest.java b/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/test/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/CxfSoapMtomAwtTest.java index ba52a03771..de6ff4da34 100644 --- a/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/test/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/CxfSoapMtomAwtTest.java +++ b/integration-test-groups/cxf-soap/cxf-soap-mtom-awt/src/test/java/org/apache/camel/quarkus/component/cxf/soap/mtom/awt/it/CxfSoapMtomAwtTest.java @@ -22,7 +22,6 @@ import java.io.IOException; import javax.imageio.ImageIO; -import io.quarkus.test.junit.DisabledOnIntegrationTest; import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; import io.restassured.http.ContentType; @@ -34,7 +33,6 @@ import org.junit.jupiter.params.provider.ValueSource; @QuarkusTest class CxfSoapMtomAwtTest { - @DisabledOnIntegrationTest("https://github.com/apache/camel-quarkus/issues/4208") @ParameterizedTest @ValueSource(booleans = { true, false }) public void uploadDownloadMtom(boolean mtomEnabled) throws IOException { @@ -42,18 +40,15 @@ class CxfSoapMtomAwtTest { String imageName = "linux-image-name"; RestAssured.given() .contentType(ContentType.BINARY) - .queryParam("imageName", imageName) .queryParam("mtomEnabled", mtomEnabled) .body(imageBytes) - .post("/cxf-soap/mtom-awt/upload") + .post("/cxf-soap/mtom-awt/image/" + imageName) .then() .statusCode(201) .body(CoreMatchers.equalTo(ImageService.MSG_SUCCESS)); byte[] downloadedImageBytes = RestAssured.given() - .contentType(ContentType.TEXT) - .queryParam("imageName", imageName) .queryParam("mtomEnabled", mtomEnabled) - .post("/cxf-soap/mtom-awt/download") + .get("/cxf-soap/mtom-awt/image/" + imageName) .then() .statusCode(201) .extract().asByteArray();