This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 86be33a15d9520128aacc15172ff1f072808c743 Author: Claus Ibsen <[email protected]> AuthorDate: Wed May 11 13:44:19 2022 +0200 CAMEL-18087: camel-core - Enable stream caching by default. (#7586) --- ...1DataFormatWithStreamIteratorByteArrayTest.java | 6 ++--- .../ASN1DataFormatWithStreamIteratorClassTest.java | 1 - .../asn1/ASN1DataFormatWithStreamTest.java | 1 - .../s3/integration/S3CopyObjectCustomerKeyIT.java | 27 ++++------------------ .../storage/blob/integration/BlobConsumerIT.java | 27 +++++----------------- .../dataformat/barcode/BarcodeUnmarshalTest.java | 4 ++-- .../component/cxf/transport/CamelConduitTest.java | 14 ++++------- .../cxf/transport/CamelDestinationTest.java | 11 ++++----- .../FtpSimpleConsumeStreamingPartialReadIT.java | 7 +++--- .../FtpSimpleConsumeStreamingStepwiseFalseIT.java | 7 +++--- .../FtpSimpleConsumeStreamingStepwiseIT.java | 8 +++---- ...pSimpleConsumeStreamingWithMultipleFilesIT.java | 11 ++++----- .../remote/integration/FtpStreamingMoveIT.java | 6 ++--- .../integration/SftpSimpleConsumeStreamingIT.java | 8 +++---- .../SftpSimpleConsumeStreamingPartialReadIT.java | 7 +++--- ...pSimpleConsumeStreamingWithMultipleFilesIT.java | 11 ++++----- .../camel/component/hl7/HL7MLLPNettyEncoder.java | 11 ++++++++- .../camel/component/hl7/HL7DataFormatTest.java | 9 ++++---- .../avro/JacksonAvroLookupResolverTest.java | 1 - .../JacksonAvroMarshalUnmarshalJsonNodeTest.java | 2 -- .../JacksonAvroMarshalUnmarshalPojoListTest.java | 1 - .../avro/JacksonAvroMarshalUnmarshalPojoTest.java | 1 - .../JacksonProtobufLookupResolverTest.java | 3 ++- ...acksonProtobufMarshalUnmarshalJsonNodeTest.java | 1 - .../JacksonProtobufMarshalUnmarshalPojoTest.java | 1 - ...> JmsStreamMessageTypeNoStreamCachingTest.java} | 12 +++++----- .../component/jms/JmsStreamMessageTypeTest.java | 11 +++------ .../camel/dataformat/lzf/LZFDataFormatTest.java | 2 +- .../camel/component/mina/MinaConverterLoader.java | 2 ++ .../apache/camel/component/mina/MinaConverter.java | 10 ++++++++ .../apache/camel/component/mina/MinaHelper.java | 15 ++++++++++++ .../dataformat/soap/SoapToSoapDontIgnoreTest.java | 2 +- .../dataformat/soap/SoapToSoapIgnoreTest.java | 2 +- .../soap/SoapToSoapSingleDataFormatterTest.java | 2 +- .../tarfile/TarElementInputStreamWrapper.java | 17 ++++++++++++++ .../tarfile/SpringTarFileDataFormatTest.java | 6 ++--- .../dataformat/tarfile/TarFileDataFormatTest.java | 10 ++++---- .../dataformat/deflater/GzipDataFormatTest.java | 2 +- .../deflater/ZipDeflaterDataFormatTest.java | 3 ++- .../dataformat/zipfile/ZipFileDataFormatTest.java | 4 ++-- .../jaxp/CamelXmlJaxpBulkConverterLoader.java | 14 ++++++++++- .../apache/camel/converter/jaxp/XmlConverter.java | 14 +++++++++++ 42 files changed, 172 insertions(+), 142 deletions(-) diff --git a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorByteArrayTest.java b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorByteArrayTest.java index 32a60560a29..de700bbab88 100644 --- a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorByteArrayTest.java +++ b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorByteArrayTest.java @@ -50,9 +50,9 @@ public class ASN1DataFormatWithStreamIteratorByteArrayTest extends CamelTestSupp assertEquals(1, exchanges.size()); for (Exchange exchange : exchanges) { - assertTrue(exchange.getIn().getBody() instanceof byte[]); - assertTrue(Arrays.equals(FileUtils.readFileToByteArray(testFile), exchange.getIn().getBody(byte[].class))); - assertTrue(ASN1Primitive.fromByteArray(exchange.getIn().getBody(byte[].class)) instanceof ASN1Primitive); + byte[] arr = exchange.getIn().getBody(byte[].class); + assertTrue(Arrays.equals(FileUtils.readFileToByteArray(testFile), arr)); + assertTrue(ASN1Primitive.fromByteArray(arr) instanceof ASN1Primitive); } assertMockEndpointsSatisfied(); diff --git a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java index c7e4eb2cfe9..f8df0a29afa 100644 --- a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java +++ b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java @@ -77,7 +77,6 @@ public class ASN1DataFormatWithStreamIteratorClassTest extends CamelTestSupport assertEquals(1, exchanges.size()); for (Exchange exchange : exchanges) { - assertTrue(exchange.getIn().getBody() instanceof byte[]); // assertTrue(Arrays.equals(FileUtils.readFileToByteArray(testFile), // exchange.getIn().getBody(byte[].class))); diff --git a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamTest.java b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamTest.java index 8f66982bce7..183662d7a5e 100644 --- a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamTest.java +++ b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamTest.java @@ -47,7 +47,6 @@ public class ASN1DataFormatWithStreamTest extends CamelTestSupport { assertEquals(1, exchanges.size()); for (Exchange exchange : exchanges) { - assertTrue(exchange.getIn().getBody() instanceof byte[]); assertTrue(Arrays.equals(FileUtils.readFileToByteArray(testFile), exchange.getIn().getBody(byte[].class))); } diff --git a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CopyObjectCustomerKeyIT.java b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CopyObjectCustomerKeyIT.java index 7424a8368e0..d5140e4826a 100644 --- a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CopyObjectCustomerKeyIT.java +++ b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CopyObjectCustomerKeyIT.java @@ -16,12 +16,7 @@ */ package org.apache.camel.component.aws2.s3.integration; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; +import java.io.InputStream; import java.security.SecureRandom; import java.util.Base64; import java.util.List; @@ -37,10 +32,9 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.aws2.s3.AWS2S3Constants; import org.apache.camel.component.aws2.s3.AWS2S3Operations; import org.apache.camel.component.mock.MockEndpoint; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import software.amazon.awssdk.core.ResponseInputStream; import software.amazon.awssdk.services.s3.model.GetObjectRequest; -import software.amazon.awssdk.services.s3.model.GetObjectResponse; import software.amazon.awssdk.utils.Md5Utils; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -100,9 +94,9 @@ public class S3CopyObjectCustomerKeyIT extends Aws2S3Base { } }); - ResponseInputStream<GetObjectResponse> s3 = res.getIn().getBody(ResponseInputStream.class); - - assertEquals("Test", readInputStream(s3)); + InputStream is = res.getIn().getBody(InputStream.class); + Assertions.assertNotNull(is); + assertEquals("Test", context.getTypeConverter().convertTo(String.class, is)); Exchange res1 = template.request("direct:listObject", new Processor() { @@ -153,15 +147,4 @@ public class S3CopyObjectCustomerKeyIT extends Aws2S3Base { } } - private String readInputStream(ResponseInputStream<GetObjectResponse> s3Object) throws IOException { - StringBuilder textBuilder = new StringBuilder(); - try (Reader reader - = new BufferedReader(new InputStreamReader(s3Object, Charset.forName(StandardCharsets.UTF_8.name())))) { - int c = 0; - while ((c = reader.read()) != -1) { - textBuilder.append((char) c); - } - } - return textBuilder.toString(); - } } diff --git a/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobConsumerIT.java b/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobConsumerIT.java index 17b74f84d35..9fc9e8c1b85 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobConsumerIT.java +++ b/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobConsumerIT.java @@ -16,9 +16,7 @@ */ package org.apache.camel.component.azure.storage.blob.integration; -import java.io.BufferedReader; import java.io.File; -import java.io.InputStreamReader; import java.nio.file.Path; import java.util.regex.Pattern; @@ -100,12 +98,8 @@ class BlobConsumerIT extends Base { mockEndpoint.expectedMessageCount(1); mockEndpoint.assertIsSatisfied(); - final BlobInputStream blobInputStream = mockEndpoint.getExchanges().get(0).getIn().getBody(BlobInputStream.class); - assertNotNull(blobInputStream, "BlobInputStream must be set"); - - final String bufferedText = new BufferedReader(new InputStreamReader(blobInputStream)).readLine(); - - assertEquals("Block Blob", bufferedText); + String text = mockEndpoint.getExchanges().get(0).getIn().getBody(String.class); + assertEquals("Block Blob", text); } @Test @@ -132,24 +126,15 @@ class BlobConsumerIT extends Base { MockEndpoint.assertIsSatisfied(context()); - final BlobInputStream blobInputStream = mockEndpoint.getExchanges().get(0).getIn().getBody(BlobInputStream.class); - final BlobInputStream blobInputStream2 = mockEndpoint.getExchanges().get(1).getIn().getBody(BlobInputStream.class); - - assertNotNull(blobInputStream, "BlobInputStream must be set"); - assertNotNull(blobInputStream2, "BlobInputStream must be set"); - - final String bufferedText = context().getTypeConverter().convertTo(String.class, blobInputStream); - final String bufferedText2 = context().getTypeConverter().convertTo(String.class, blobInputStream2); - - assertEquals("Block Batch Blob 1", bufferedText); - assertEquals("Block Batch Blob 2", bufferedText2); + String text = mockEndpoint.getExchanges().get(0).getIn().getBody(String.class); + String text2 = mockEndpoint.getExchanges().get(1).getIn().getBody(String.class); + assertEquals("Block Batch Blob 1", text); + assertEquals("Block Batch Blob 2", text2); final File file = mockEndpointFile.getExchanges().get(0).getIn().getBody(File.class); final File file2 = mockEndpointFile.getExchanges().get(1).getIn().getBody(File.class); - assertNotNull(file, "File must be set"); assertNotNull(file2, "File must be set"); - assertEquals("Block Batch Blob 1", context().getTypeConverter().convertTo(String.class, file)); assertEquals("Block Batch Blob 2", context().getTypeConverter().convertTo(String.class, file2)); } diff --git a/components/camel-barcode/src/test/java/org/apache/camel/dataformat/barcode/BarcodeUnmarshalTest.java b/components/camel-barcode/src/test/java/org/apache/camel/dataformat/barcode/BarcodeUnmarshalTest.java index 6a6f204957f..fec6d63c5c1 100644 --- a/components/camel-barcode/src/test/java/org/apache/camel/dataformat/barcode/BarcodeUnmarshalTest.java +++ b/components/camel-barcode/src/test/java/org/apache/camel/dataformat/barcode/BarcodeUnmarshalTest.java @@ -46,7 +46,7 @@ public class BarcodeUnmarshalTest extends BarcodeTestBase { } }); - assertEquals(180, exchange.getOut().getHeader("ORIENTATION")); + assertEquals(180, exchange.getMessage().getHeader("ORIENTATION")); } @@ -63,7 +63,7 @@ public class BarcodeUnmarshalTest extends BarcodeTestBase { .process(new Processor() { @Override public void process(Exchange exchange) throws Exception { - ByteArrayInputStream bis = new ByteArrayInputStream((byte[]) exchange.getIn().getBody()); + InputStream bis = exchange.getIn().getBody(InputStream.class); BinaryBitmap bitmap = new BinaryBitmap( new HybridBinarizer(new BufferedImageLuminanceSource(ImageIO.read(bis)))); BitMatrix blackMatrix = bitmap.getBlackMatrix(); diff --git a/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelConduitTest.java b/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelConduitTest.java index bdcab1cd6b2..30e67b90ac6 100644 --- a/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelConduitTest.java +++ b/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelConduitTest.java @@ -28,6 +28,7 @@ import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.util.IOHelper; import org.apache.cxf.Bus; import org.apache.cxf.BusFactory; import org.apache.cxf.bus.spring.SpringBusFactory; @@ -154,15 +155,10 @@ public class CamelConduitTest extends CamelTransportTestSupport { } public void verifyReceivedMessage(String content) { - ByteArrayInputStream bis = (ByteArrayInputStream) inMessage.getContent(InputStream.class); - byte bytes[] = new byte[bis.available()]; - try { - bis.read(bytes); - } catch (IOException ex) { - LOG.warn("I/O error receiving messages: {}", ex.getMessage(), ex); - } - String reponse = new String(bytes); - assertEquals(content, reponse, "The reponse date should be equals"); + InputStream is = inMessage.getContent(InputStream.class); + byte[] bytes = context().getTypeConverter().convertTo(byte[].class, is); + String response = new String(bytes); + assertEquals(content, response, "The response date should be equals"); } } diff --git a/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelDestinationTest.java b/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelDestinationTest.java index a5428e0cdb7..85c88ebbb33 100644 --- a/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelDestinationTest.java +++ b/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelDestinationTest.java @@ -151,12 +151,11 @@ public class CamelDestinationTest extends CamelTransportTestSupport { destination.shutdown(); } - private void verifyReceivedMessage(Message inMessage, String content) throws IOException { - ByteArrayInputStream bis = (ByteArrayInputStream) inMessage.getContent(InputStream.class); - byte bytes[] = new byte[bis.available()]; - bis.read(bytes); - String reponse = new String(bytes); - assertEquals(content, reponse, "The reponse date should be equals"); + private void verifyReceivedMessage(Message inMessage, String content) { + InputStream is = inMessage.getContent(InputStream.class); + byte[] bytes = context().getTypeConverter().convertTo(byte[].class, is); + String response = new String(bytes); + assertEquals(content, response, "The response date should be equals"); } @Test diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingPartialReadIT.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingPartialReadIT.java index 435f8c3e165..d82a5d7db02 100644 --- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingPartialReadIT.java +++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingPartialReadIT.java @@ -23,12 +23,12 @@ import java.util.concurrent.TimeUnit; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.file.GenericFile; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; import static org.awaitility.Awaitility.await; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; public class FtpSimpleConsumeStreamingPartialReadIT extends FtpServerTestSupport { @@ -50,8 +50,9 @@ public class FtpSimpleConsumeStreamingPartialReadIT extends FtpServerTestSupport context.getRouteController().startRoute("foo"); assertMockEndpointsSatisfied(); - GenericFile<?> remoteFile1 = (GenericFile<?>) mock.getExchanges().get(0).getIn().getBody(); - assertTrue(remoteFile1.getBody() instanceof InputStream); + + InputStream is = mock.getExchanges().get(0).getIn().getBody(InputStream.class); + assertNotNull(is); // Wait a little bit for the move to finish. File resultFile = new File(path + File.separator + "failed", "hello.txt"); diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingStepwiseFalseIT.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingStepwiseFalseIT.java index e7b13a36871..64eb0f47d83 100644 --- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingStepwiseFalseIT.java +++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingStepwiseFalseIT.java @@ -20,11 +20,10 @@ import java.io.InputStream; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.file.GenericFile; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertNotNull; public class FtpSimpleConsumeStreamingStepwiseFalseIT extends FtpServerTestSupport { @@ -51,8 +50,8 @@ public class FtpSimpleConsumeStreamingStepwiseFalseIT extends FtpServerTestSuppo } void assertMore(MockEndpoint mock) { - GenericFile<?> remoteFile = (GenericFile<?>) mock.getExchanges().get(0).getIn().getBody(); - assertTrue(remoteFile.getBody() instanceof InputStream); + InputStream is = mock.getExchanges().get(0).getIn().getBody(InputStream.class); + assertNotNull(is); } MockEndpoint getMockEndpoint() { diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingStepwiseIT.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingStepwiseIT.java index ca6ae8638b5..cfb56bc4a97 100644 --- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingStepwiseIT.java +++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingStepwiseIT.java @@ -22,13 +22,12 @@ import org.apache.camel.Endpoint; import org.apache.camel.Exchange; import org.apache.camel.Producer; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.file.GenericFile; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.converter.IOConverter; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertNotNull; // README (informative only, to be removed in final version): // The filesize at which this test fails is arbitrary, I suppose it depends on the FTP we are using and Java @@ -54,10 +53,11 @@ public class FtpSimpleConsumeStreamingStepwiseIT extends FtpServerTestSupport { public void testFtpRoute() throws Exception { MockEndpoint resultEndpoint = getMockEndpoint("mock:result"); resultEndpoint.expectedMessageCount(1); + resultEndpoint.assertIsSatisfied(); - GenericFile<?> remoteFile = (GenericFile<?>) resultEndpoint.getExchanges().get(0).getIn().getBody(); - assertTrue(remoteFile.getBody() instanceof InputStream); + InputStream is = resultEndpoint.getExchanges().get(0).getIn().getBody(InputStream.class); + assertNotNull(is); } private void prepareFtpServer() throws Exception { diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingWithMultipleFilesIT.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingWithMultipleFilesIT.java index 7f2638b347c..635ae0599ee 100644 --- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingWithMultipleFilesIT.java +++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpSimpleConsumeStreamingWithMultipleFilesIT.java @@ -20,11 +20,10 @@ import java.io.InputStream; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.file.GenericFile; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertNotNull; public class FtpSimpleConsumeStreamingWithMultipleFilesIT extends FtpServerTestSupport { @@ -48,10 +47,10 @@ public class FtpSimpleConsumeStreamingWithMultipleFilesIT extends FtpServerTestS assertMockEndpointsSatisfied(); - GenericFile<?> remoteFile1 = mock.getExchanges().get(0).getIn().getBody(GenericFile.class); - GenericFile<?> remoteFile2 = mock.getExchanges().get(1).getIn().getBody(GenericFile.class); - assertTrue(remoteFile1.getBody() instanceof InputStream); - assertTrue(remoteFile2.getBody() instanceof InputStream); + InputStream remoteFile1 = mock.getExchanges().get(0).getIn().getBody(InputStream.class); + assertNotNull(remoteFile1); + InputStream remoteFile2 = mock.getExchanges().get(1).getIn().getBody(InputStream.class); + assertNotNull(remoteFile2); } @Override diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpStreamingMoveIT.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpStreamingMoveIT.java index 9fe34d2b9e9..5bea940f506 100644 --- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpStreamingMoveIT.java +++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/integration/FtpStreamingMoveIT.java @@ -21,11 +21,11 @@ import java.io.InputStream; import java.util.concurrent.TimeUnit; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.file.GenericFile; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; import static org.awaitility.Awaitility.await; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; public class FtpStreamingMoveIT extends FtpServerTestSupport { @@ -46,8 +46,8 @@ public class FtpStreamingMoveIT extends FtpServerTestSupport { assertMockEndpointsSatisfied(); - GenericFile<?> remoteFile = (GenericFile<?>) mock.getExchanges().get(0).getIn().getBody(); - assertTrue(remoteFile.getBody() instanceof InputStream); + InputStream is = mock.getExchanges().get(0).getIn().getBody(InputStream.class); + assertNotNull(is); // give time for consumer to rename file File file = ftpFile("mymove/done/hello.txt").toFile(); diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeStreamingIT.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeStreamingIT.java index 4ea829dc781..7acbca115dc 100644 --- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeStreamingIT.java +++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeStreamingIT.java @@ -20,12 +20,11 @@ import java.io.InputStream; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.file.GenericFile; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIf; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertNotNull; @EnabledIf(value = "org.apache.camel.component.file.remote.services.SftpEmbeddedService#hasRequiredAlgorithms") public class SftpSimpleConsumeStreamingIT extends SftpServerTestSupport { @@ -45,8 +44,9 @@ public class SftpSimpleConsumeStreamingIT extends SftpServerTestSupport { context.getRouteController().startRoute("foo"); assertMockEndpointsSatisfied(); - GenericFile<?> remoteFile = mock.getExchanges().get(0).getIn().getBody(GenericFile.class); - assertTrue(remoteFile.getBody() instanceof InputStream); + + InputStream is = mock.getExchanges().get(0).getIn().getBody(InputStream.class); + assertNotNull(is); } @Override diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeStreamingPartialReadIT.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeStreamingPartialReadIT.java index f3c66d1cec9..edfb3688539 100644 --- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeStreamingPartialReadIT.java +++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeStreamingPartialReadIT.java @@ -23,13 +23,13 @@ import java.util.concurrent.TimeUnit; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.file.GenericFile; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIf; import static org.awaitility.Awaitility.await; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; /** @@ -52,8 +52,9 @@ public class SftpSimpleConsumeStreamingPartialReadIT extends SftpServerTestSuppo context.getRouteController().startRoute("foo"); assertMockEndpointsSatisfied(); - GenericFile<?> remoteFile1 = (GenericFile<?>) mock.getExchanges().get(0).getIn().getBody(); - assertTrue(remoteFile1.getBody() instanceof InputStream); + + InputStream is = mock.getExchanges().get(0).getIn().getBody(InputStream.class); + assertNotNull(is); // Wait a little bit for the move to finish. File resultFile = new File(service.getFtpRootDir() + File.separator + "failed", "hello.txt"); diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeStreamingWithMultipleFilesIT.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeStreamingWithMultipleFilesIT.java index cc7392505ae..eb5e2480bf6 100644 --- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeStreamingWithMultipleFilesIT.java +++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/sftp/integration/SftpSimpleConsumeStreamingWithMultipleFilesIT.java @@ -20,12 +20,11 @@ import java.io.InputStream; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.file.GenericFile; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIf; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertNotNull; @EnabledIf(value = "org.apache.camel.component.file.remote.services.SftpEmbeddedService#hasRequiredAlgorithms") public class SftpSimpleConsumeStreamingWithMultipleFilesIT extends SftpServerTestSupport { @@ -47,10 +46,10 @@ public class SftpSimpleConsumeStreamingWithMultipleFilesIT extends SftpServerTes assertMockEndpointsSatisfied(); - GenericFile<?> remoteFile1 = mock.getExchanges().get(0).getIn().getBody(GenericFile.class); - GenericFile<?> remoteFile2 = mock.getExchanges().get(1).getIn().getBody(GenericFile.class); - assertTrue(remoteFile1.getBody() instanceof InputStream); - assertTrue(remoteFile2.getBody() instanceof InputStream); + InputStream is = mock.getExchanges().get(0).getIn().getBody(InputStream.class); + assertNotNull(is); + InputStream is2 = mock.getExchanges().get(1).getIn().getBody(InputStream.class); + assertNotNull(is2); } @Override diff --git a/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7MLLPNettyEncoder.java b/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7MLLPNettyEncoder.java index 5fb3b3f4607..231fcf7a3c9 100644 --- a/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7MLLPNettyEncoder.java +++ b/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7MLLPNettyEncoder.java @@ -20,6 +20,9 @@ import ca.uhn.hl7v2.model.Message; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToByteEncoder; +import org.apache.camel.StreamCache; + +import java.io.ByteArrayOutputStream; /** * HL7 MLLP Encoder for Netty @@ -46,7 +49,13 @@ class HL7MLLPNettyEncoder extends MessageToByteEncoder<Object> { } byte[] body; - if (message instanceof Message) { + if (message instanceof StreamCache) { + // need to convert to byte array for the encoder + StreamCache sc = (StreamCache) message; + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + sc.writeTo(bos); + body = bos.toByteArray(); + } else if (message instanceof Message) { body = ((Message) message).encode().getBytes(config.getCharset()); } else if (message instanceof String) { body = ((String) message).getBytes(config.getCharset()); diff --git a/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7DataFormatTest.java b/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7DataFormatTest.java index 430f09e2153..1e23335e509 100644 --- a/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7DataFormatTest.java +++ b/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7DataFormatTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.hl7; import java.io.ByteArrayInputStream; +import java.io.InputStream; import java.nio.charset.Charset; import ca.uhn.hl7v2.model.Message; @@ -51,7 +52,7 @@ public class HL7DataFormatTest extends CamelTestSupport { public void testMarshal() throws Exception { MockEndpoint mock = getMockEndpoint("mock:marshal"); mock.expectedMessageCount(1); - mock.message(0).body().isInstanceOf(byte[].class); + mock.message(0).body().isInstanceOf(InputStream.class); mock.message(0).body(String.class).contains("MSA|AA|123"); mock.message(0).body(String.class).contains("QRD|20080805120000"); @@ -65,7 +66,7 @@ public class HL7DataFormatTest extends CamelTestSupport { public void testMarshalISO8859() throws Exception { MockEndpoint mock = getMockEndpoint("mock:marshal"); mock.expectedMessageCount(1); - mock.message(0).body().isInstanceOf(byte[].class); + mock.message(0).body().isInstanceOf(InputStream.class); mock.message(0).body(String.class).contains("MSA|AA|123"); mock.message(0).body(String.class).contains("QRD|20080805120000"); mock.message(0).body(String.class).not().contains(NONE_ISO_8859_1); @@ -84,7 +85,7 @@ public class HL7DataFormatTest extends CamelTestSupport { template.sendBodyAndProperty("direct:marshal", message, Exchange.CHARSET_NAME, charsetName); assertMockEndpointsSatisfied(); - byte[] body = (byte[]) mock.getExchanges().get(0).getIn().getBody(); + byte[] body = mock.getExchanges().get(0).getIn().getBody(byte[].class); String msg = new String(body, Charset.forName(charsetName)); assertTrue(msg.contains("MSA|AA|123")); assertTrue(msg.contains("QRD|20080805120000")); @@ -94,7 +95,7 @@ public class HL7DataFormatTest extends CamelTestSupport { public void testMarshalUTF8() throws Exception { MockEndpoint mock = getMockEndpoint("mock:marshal"); mock.expectedMessageCount(1); - mock.message(0).body().isInstanceOf(byte[].class); + mock.message(0).body().isInstanceOf(InputStream.class); mock.message(0).body(String.class).contains("MSA|AA|123"); mock.message(0).body(String.class).contains("QRD|20080805120000"); mock.message(0).body(String.class).contains(NONE_ISO_8859_1); diff --git a/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroLookupResolverTest.java b/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroLookupResolverTest.java index bfb565a6103..aeebe04da45 100644 --- a/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroLookupResolverTest.java +++ b/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroLookupResolverTest.java @@ -36,7 +36,6 @@ public class JacksonAvroLookupResolverTest extends CamelTestSupport { public void testMarshalUnmarshalPojo() throws Exception { MockEndpoint mock1 = getMockEndpoint("mock:serialized"); mock1.expectedMessageCount(1); - mock1.message(0).body().isInstanceOf(byte[].class); Pojo pojo = new Pojo("Hello"); template.sendBody("direct:pojo", pojo); diff --git a/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroMarshalUnmarshalJsonNodeTest.java b/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroMarshalUnmarshalJsonNodeTest.java index aaebba0bcb0..e7a231ec2fa 100644 --- a/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroMarshalUnmarshalJsonNodeTest.java +++ b/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroMarshalUnmarshalJsonNodeTest.java @@ -40,7 +40,6 @@ public class JacksonAvroMarshalUnmarshalJsonNodeTest extends CamelTestSupport { public void testMarshalUnmarshalJsonNode() throws Exception { MockEndpoint mock1 = getMockEndpoint("mock:serialized"); mock1.expectedMessageCount(1); - mock1.message(0).body().isInstanceOf(byte[].class); Pojo pojo = new Pojo("Hello"); template.sendBody("direct:pojo", pojo); @@ -67,7 +66,6 @@ public class JacksonAvroMarshalUnmarshalJsonNodeTest extends CamelTestSupport { public void testMarshalUnmarshalJsonNodeList() throws Exception { MockEndpoint mock1 = getMockEndpoint("mock:serialized"); mock1.expectedMessageCount(1); - mock1.message(0).body().isInstanceOf(byte[].class); List<JacksonAvroMarshalUnmarshalPojoListTest.Pojo> pojos = new ArrayList<>(); pojos.add(new JacksonAvroMarshalUnmarshalPojoListTest.Pojo("Hello")); diff --git a/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroMarshalUnmarshalPojoListTest.java b/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroMarshalUnmarshalPojoListTest.java index 7522e6e383f..544005da201 100644 --- a/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroMarshalUnmarshalPojoListTest.java +++ b/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroMarshalUnmarshalPojoListTest.java @@ -38,7 +38,6 @@ public class JacksonAvroMarshalUnmarshalPojoListTest extends CamelTestSupport { public void testMarshalUnmarshalPojoList() throws Exception { MockEndpoint mock1 = getMockEndpoint("mock:serialized"); mock1.expectedMessageCount(1); - mock1.message(0).body().isInstanceOf(byte[].class); List<Pojo> pojos = new ArrayList<>(); pojos.add(new Pojo("Hello")); diff --git a/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroMarshalUnmarshalPojoTest.java b/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroMarshalUnmarshalPojoTest.java index a45d81d37dd..12e6ea53480 100644 --- a/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroMarshalUnmarshalPojoTest.java +++ b/components/camel-jackson-avro/src/test/java/org/apache/camel/component/jackson/avro/JacksonAvroMarshalUnmarshalPojoTest.java @@ -35,7 +35,6 @@ public class JacksonAvroMarshalUnmarshalPojoTest extends CamelTestSupport { public void testMarshalUnmarshalPojo() throws Exception { MockEndpoint mock1 = getMockEndpoint("mock:serialized"); mock1.expectedMessageCount(1); - mock1.message(0).body().isInstanceOf(byte[].class); Pojo pojo = new Pojo("Hello"); template.sendBody("direct:pojo", pojo); diff --git a/components/camel-jackson-protobuf/src/test/java/org/apache/camel/component/jackson/protobuf/JacksonProtobufLookupResolverTest.java b/components/camel-jackson-protobuf/src/test/java/org/apache/camel/component/jackson/protobuf/JacksonProtobufLookupResolverTest.java index 3e30db3e2fb..c57504c553b 100644 --- a/components/camel-jackson-protobuf/src/test/java/org/apache/camel/component/jackson/protobuf/JacksonProtobufLookupResolverTest.java +++ b/components/camel-jackson-protobuf/src/test/java/org/apache/camel/component/jackson/protobuf/JacksonProtobufLookupResolverTest.java @@ -27,6 +27,8 @@ import org.apache.camel.spi.Registry; import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.Test; +import java.io.InputStream; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -36,7 +38,6 @@ public class JacksonProtobufLookupResolverTest extends CamelTestSupport { public void testMarshalUnmarshalPojo() throws Exception { MockEndpoint mock1 = getMockEndpoint("mock:serialized"); mock1.expectedMessageCount(1); - mock1.message(0).body().isInstanceOf(byte[].class); Pojo pojo = new Pojo("Hello"); template.sendBody("direct:pojo", pojo); diff --git a/components/camel-jackson-protobuf/src/test/java/org/apache/camel/component/jackson/protobuf/JacksonProtobufMarshalUnmarshalJsonNodeTest.java b/components/camel-jackson-protobuf/src/test/java/org/apache/camel/component/jackson/protobuf/JacksonProtobufMarshalUnmarshalJsonNodeTest.java index f2089246c1e..9da127a25e1 100644 --- a/components/camel-jackson-protobuf/src/test/java/org/apache/camel/component/jackson/protobuf/JacksonProtobufMarshalUnmarshalJsonNodeTest.java +++ b/components/camel-jackson-protobuf/src/test/java/org/apache/camel/component/jackson/protobuf/JacksonProtobufMarshalUnmarshalJsonNodeTest.java @@ -36,7 +36,6 @@ public class JacksonProtobufMarshalUnmarshalJsonNodeTest extends CamelTestSuppor public void testMarshalUnmarshalJsonNode() throws Exception { MockEndpoint mock1 = getMockEndpoint("mock:serialized"); mock1.expectedMessageCount(1); - mock1.message(0).body().isInstanceOf(byte[].class); Pojo pojo = new Pojo("Hello"); template.sendBody("direct:pojo", pojo); diff --git a/components/camel-jackson-protobuf/src/test/java/org/apache/camel/component/jackson/protobuf/JacksonProtobufMarshalUnmarshalPojoTest.java b/components/camel-jackson-protobuf/src/test/java/org/apache/camel/component/jackson/protobuf/JacksonProtobufMarshalUnmarshalPojoTest.java index d5c7afc1080..8debd701b10 100644 --- a/components/camel-jackson-protobuf/src/test/java/org/apache/camel/component/jackson/protobuf/JacksonProtobufMarshalUnmarshalPojoTest.java +++ b/components/camel-jackson-protobuf/src/test/java/org/apache/camel/component/jackson/protobuf/JacksonProtobufMarshalUnmarshalPojoTest.java @@ -35,7 +35,6 @@ public class JacksonProtobufMarshalUnmarshalPojoTest extends CamelTestSupport { public void testMarshalUnmarshalPojo() throws Exception { MockEndpoint mock1 = getMockEndpoint("mock:serialized"); mock1.expectedMessageCount(1); - mock1.message(0).body().isInstanceOf(byte[].class); Pojo pojo = new Pojo("Hello"); template.sendBody("direct:pojo", pojo); diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeNoStreamCachingTest.java similarity index 96% copy from components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeTest.java copy to components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeNoStreamCachingTest.java index 212ef6c9917..e3690fff555 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeTest.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeNoStreamCachingTest.java @@ -16,10 +16,6 @@ */ package org.apache.camel.component.jms; -import java.io.File; - -import javax.jms.ConnectionFactory; - import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.test.junit5.CamelTestSupport; @@ -27,23 +23,27 @@ import org.apache.camel.util.FileUtil; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import javax.jms.ConnectionFactory; +import java.io.File; + import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge; import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf; import static org.apache.camel.test.junit5.TestSupport.deleteDirectory; import static org.junit.jupiter.api.Assertions.assertEquals; -public class JmsStreamMessageTypeTest extends CamelTestSupport { +public class JmsStreamMessageTypeNoStreamCachingTest extends CamelTestSupport { @Override @BeforeEach public void setUp() throws Exception { - deleteDirectory("target/stream"); + deleteDirectory("target/nostream"); super.setUp(); } @Override protected CamelContext createCamelContext() throws Exception { CamelContext camelContext = super.createCamelContext(); + camelContext.setStreamCaching(false); ConnectionFactory connectionFactory = CamelJmsTestHelper.createConnectionFactory(); JmsComponent jms = jmsComponentAutoAcknowledge(connectionFactory); diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeTest.java index 212ef6c9917..c68d6db8c8d 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeTest.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsStreamMessageTypeTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.jms; import java.io.File; +import java.io.InputStream; import javax.jms.ConnectionFactory; @@ -62,10 +63,7 @@ public class JmsStreamMessageTypeTest extends CamelTestSupport { assertMockEndpointsSatisfied(); Object body = getMockEndpoint("mock:result").getReceivedExchanges().get(0).getIn().getBody(); - StreamMessageInputStream is = assertIsInstanceOf(StreamMessageInputStream.class, body); - - // no more bytes should be available on the inputstream - assertEquals(0, is.available()); + InputStream is = assertIsInstanceOf(InputStream.class, body); // assert on the content of input versus output file String srcContent = context.getTypeConverter().mandatoryConvertTo(String.class, new File("src/test/data/message1.xml")); @@ -84,10 +82,7 @@ public class JmsStreamMessageTypeTest extends CamelTestSupport { assertMockEndpointsSatisfied(); Object body = getMockEndpoint("mock:result").getReceivedExchanges().get(0).getIn().getBody(); - StreamMessageInputStream is = assertIsInstanceOf(StreamMessageInputStream.class, body); - - // no more bytes should be available on the inputstream - assertEquals(0, is.available()); + InputStream is = assertIsInstanceOf(InputStream.class, body); // assert on the content of input versus output file String srcContent = context.getTypeConverter().mandatoryConvertTo(String.class, new File("src/test/data/message1.txt")); diff --git a/components/camel-lzf/src/test/java/org/apache/camel/dataformat/lzf/LZFDataFormatTest.java b/components/camel-lzf/src/test/java/org/apache/camel/dataformat/lzf/LZFDataFormatTest.java index a334e1c9c54..41631af898e 100644 --- a/components/camel-lzf/src/test/java/org/apache/camel/dataformat/lzf/LZFDataFormatTest.java +++ b/components/camel-lzf/src/test/java/org/apache/camel/dataformat/lzf/LZFDataFormatTest.java @@ -89,6 +89,6 @@ public class LZFDataFormatTest extends CamelTestSupport { } private byte[] sendText(String destination) throws Exception { - return (byte[]) template.requestBody(destination, TEXT.getBytes("UTF-8")); + return template.requestBody(destination, TEXT.getBytes("UTF-8"), byte[].class); } } diff --git a/components/camel-mina/src/generated/java/org/apache/camel/component/mina/MinaConverterLoader.java b/components/camel-mina/src/generated/java/org/apache/camel/component/mina/MinaConverterLoader.java index 3e876dbf800..811d109bc65 100644 --- a/components/camel-mina/src/generated/java/org/apache/camel/component/mina/MinaConverterLoader.java +++ b/components/camel-mina/src/generated/java/org/apache/camel/component/mina/MinaConverterLoader.java @@ -51,6 +51,8 @@ public final class MinaConverterLoader implements TypeConverterLoader, CamelCont (type, exchange, value) -> org.apache.camel.component.mina.MinaConverter.toString((org.apache.mina.core.buffer.IoBuffer) value, exchange)); addTypeConverter(registry, org.apache.mina.core.buffer.IoBuffer.class, byte[].class, false, (type, exchange, value) -> org.apache.camel.component.mina.MinaConverter.toIoBuffer((byte[]) value)); + addTypeConverter(registry, org.apache.mina.core.buffer.IoBuffer.class, org.apache.camel.StreamCache.class, false, + (type, exchange, value) -> org.apache.camel.component.mina.MinaConverter.toIoBuffer((org.apache.camel.StreamCache) value, exchange)); } private static void addTypeConverter(TypeConverterRegistry registry, Class<?> toType, Class<?> fromType, boolean allowNull, SimpleTypeConverter.ConversionMethod method) { diff --git a/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java b/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java index 8f7b2735c45..73548c81271 100644 --- a/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java +++ b/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java @@ -16,6 +16,7 @@ */ package org.apache.camel.component.mina; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInput; @@ -23,6 +24,9 @@ import java.io.ObjectInputStream; import org.apache.camel.Converter; import org.apache.camel.Exchange; +import org.apache.camel.StreamCache; +import org.apache.camel.TypeConverter; +import org.apache.camel.converter.stream.ByteArrayInputStreamCache; import org.apache.mina.core.buffer.IoBuffer; /** @@ -67,4 +71,10 @@ public final class MinaConverter { buf.put(bytes); return buf; } + + @Converter + public static IoBuffer toIoBuffer(StreamCache cache, Exchange exchange) throws Exception { + byte[] arr = exchange.getContext().getTypeConverter().mandatoryConvertTo(byte[].class, exchange, cache); + return toIoBuffer(arr); + } } diff --git a/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaHelper.java b/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaHelper.java index 683eacddcbc..12d31002121 100644 --- a/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaHelper.java +++ b/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaHelper.java @@ -18,11 +18,16 @@ package org.apache.camel.component.mina; import org.apache.camel.CamelExchangeException; import org.apache.camel.Exchange; +import org.apache.camel.NoTypeConversionAvailableException; +import org.apache.camel.StreamCache; +import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.future.WriteFuture; import org.apache.mina.core.session.IoSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; + /** * Helper class used internally by camel-mina using Apache MINA. */ @@ -47,6 +52,16 @@ public final class MinaHelper { */ public static void writeBody(IoSession session, Object body, Exchange exchange, long writeTimeout) throws CamelExchangeException { + + // if stream cached then mina needs to use byte array instead + if (body instanceof StreamCache) { + try { + body = exchange.getContext().getTypeConverter().mandatoryConvertTo(byte[].class, exchange, body); + } catch (NoTypeConversionAvailableException e) { + throw new CamelExchangeException("Error converting body to byte[]", exchange, e); + } + } + // the write operation is asynchronous. Use WriteFuture to wait until the session has been written WriteFuture future = session.write(body); // must use a timeout as in some very high performance scenarios a write can cause thread hanging forever diff --git a/components/camel-soap/src/test/java/org/apache/camel/dataformat/soap/SoapToSoapDontIgnoreTest.java b/components/camel-soap/src/test/java/org/apache/camel/dataformat/soap/SoapToSoapDontIgnoreTest.java index 74bbfb2ccb6..cd613e4d218 100644 --- a/components/camel-soap/src/test/java/org/apache/camel/dataformat/soap/SoapToSoapDontIgnoreTest.java +++ b/components/camel-soap/src/test/java/org/apache/camel/dataformat/soap/SoapToSoapDontIgnoreTest.java @@ -78,7 +78,7 @@ public class SoapToSoapDontIgnoreTest extends CamelTestSupport { assertMockEndpointsSatisfied(); Exchange result = endpoint.assertExchangeReceived(0); - byte[] body = (byte[]) result.getIn().getBody(); + byte[] body = result.getIn().getBody(byte[].class); InputStream stream = new ByteArrayInputStream(body); SOAPMessage request = MessageFactory.newInstance().createMessage(null, stream); assertTrue(null != request.getSOAPHeader() diff --git a/components/camel-soap/src/test/java/org/apache/camel/dataformat/soap/SoapToSoapIgnoreTest.java b/components/camel-soap/src/test/java/org/apache/camel/dataformat/soap/SoapToSoapIgnoreTest.java index 89c12fdb80d..6c02360ac76 100644 --- a/components/camel-soap/src/test/java/org/apache/camel/dataformat/soap/SoapToSoapIgnoreTest.java +++ b/components/camel-soap/src/test/java/org/apache/camel/dataformat/soap/SoapToSoapIgnoreTest.java @@ -78,7 +78,7 @@ public class SoapToSoapIgnoreTest extends CamelTestSupport { assertMockEndpointsSatisfied(); Exchange result = endpoint.assertExchangeReceived(0); - byte[] body = (byte[]) result.getIn().getBody(); + byte[] body = result.getIn().getBody(byte[].class); InputStream stream = new ByteArrayInputStream(body); SOAPMessage request = MessageFactory.newInstance().createMessage(null, stream); assertTrue(null == request.getSOAPHeader() diff --git a/components/camel-soap/src/test/java/org/apache/camel/dataformat/soap/SoapToSoapSingleDataFormatterTest.java b/components/camel-soap/src/test/java/org/apache/camel/dataformat/soap/SoapToSoapSingleDataFormatterTest.java index 848a367546b..f2bf9bda5a5 100644 --- a/components/camel-soap/src/test/java/org/apache/camel/dataformat/soap/SoapToSoapSingleDataFormatterTest.java +++ b/components/camel-soap/src/test/java/org/apache/camel/dataformat/soap/SoapToSoapSingleDataFormatterTest.java @@ -71,7 +71,7 @@ public class SoapToSoapSingleDataFormatterTest extends CamelTestSupport { assertMockEndpointsSatisfied(); Exchange result = endpoint.assertExchangeReceived(0); - byte[] body = (byte[]) result.getIn().getBody(); + byte[] body = result.getIn().getBody(byte[].class); InputStream stream = new ByteArrayInputStream(body); SOAPMessage request = MessageFactory.newInstance().createMessage(null, stream); assertTrue(null != request.getSOAPHeader() diff --git a/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarElementInputStreamWrapper.java b/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarElementInputStreamWrapper.java index 90a271d45ea..d6a8db2be98 100644 --- a/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarElementInputStreamWrapper.java +++ b/components/camel-tarfile/src/main/java/org/apache/camel/dataformat/tarfile/TarElementInputStreamWrapper.java @@ -16,6 +16,8 @@ */ package org.apache.camel.dataformat.tarfile; +import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; + import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; @@ -43,4 +45,19 @@ public class TarElementInputStreamWrapper extends BufferedInputStream { in = input; } } + + @Override + public synchronized int available() throws IOException { + if (in instanceof TarArchiveInputStream) { + TarArchiveInputStream tai = (TarArchiveInputStream) in; + if (tai.getCurrentEntry() != null) { + // avoid NPE in TarArchiveInputStream.available which + // only works if there is a current entry + return tai.available(); + } else { + return 0; + } + } + return super.available(); + } } diff --git a/components/camel-tarfile/src/test/java/org/apache/camel/dataformat/tarfile/SpringTarFileDataFormatTest.java b/components/camel-tarfile/src/test/java/org/apache/camel/dataformat/tarfile/SpringTarFileDataFormatTest.java index 261c7e12b0d..3819b9039d9 100644 --- a/components/camel-tarfile/src/test/java/org/apache/camel/dataformat/tarfile/SpringTarFileDataFormatTest.java +++ b/components/camel-tarfile/src/test/java/org/apache/camel/dataformat/tarfile/SpringTarFileDataFormatTest.java @@ -53,7 +53,7 @@ public class SpringTarFileDataFormatTest extends CamelSpringTestSupport { Exchange exchange = mock.getReceivedExchanges().get(0); assertEquals(exchange.getIn().getMessageId() + ".tar", exchange.getIn().getHeader(FILE_NAME)); - assertArrayEquals(getTaredText(exchange.getIn().getMessageId()), (byte[]) exchange.getIn().getBody()); + assertArrayEquals(getTaredText(exchange.getIn().getMessageId()), exchange.getIn().getBody(byte[].class)); } @Test @@ -67,7 +67,7 @@ public class SpringTarFileDataFormatTest extends CamelSpringTestSupport { assertMockEndpointsSatisfied(); Exchange exchange = mock.getReceivedExchanges().get(0); - assertArrayEquals(getTaredText("poem.txt"), (byte[]) exchange.getIn().getBody()); + assertArrayEquals(getTaredText("poem.txt"), exchange.getIn().getBody(byte[].class)); } @Test @@ -91,7 +91,7 @@ public class SpringTarFileDataFormatTest extends CamelSpringTestSupport { Exchange exchange = mock.getReceivedExchanges().get(0); assertEquals(exchange.getIn().getMessageId(), exchange.getIn().getHeader(FILE_NAME)); - assertArrayEquals(TEXT.getBytes(UTF_8), (byte[]) exchange.getIn().getBody()); + assertArrayEquals(TEXT.getBytes(UTF_8), exchange.getIn().getBody(byte[].class)); } @Test diff --git a/components/camel-tarfile/src/test/java/org/apache/camel/dataformat/tarfile/TarFileDataFormatTest.java b/components/camel-tarfile/src/test/java/org/apache/camel/dataformat/tarfile/TarFileDataFormatTest.java index 2ea3f3b1485..c614277eab3 100644 --- a/components/camel-tarfile/src/test/java/org/apache/camel/dataformat/tarfile/TarFileDataFormatTest.java +++ b/components/camel-tarfile/src/test/java/org/apache/camel/dataformat/tarfile/TarFileDataFormatTest.java @@ -73,7 +73,7 @@ public class TarFileDataFormatTest extends CamelTestSupport { Exchange exchange = mock.getReceivedExchanges().get(0); assertEquals(exchange.getIn().getMessageId() + ".tar", exchange.getIn().getHeader(FILE_NAME)); assertTrue(ObjectHelper.equalByteArray(getTaredText(exchange.getIn().getMessageId()), - (byte[]) exchange.getIn().getBody())); + exchange.getIn().getBody(byte[].class))); } @Test @@ -87,7 +87,7 @@ public class TarFileDataFormatTest extends CamelTestSupport { assertMockEndpointsSatisfied(); Exchange exchange = mock.getReceivedExchanges().get(0); - assertTrue(ObjectHelper.equalByteArray(getTaredText("poem.txt"), (byte[]) exchange.getIn().getBody())); + assertTrue(ObjectHelper.equalByteArray(getTaredText("poem.txt"), exchange.getIn().getBody(byte[].class))); } @Test @@ -101,7 +101,7 @@ public class TarFileDataFormatTest extends CamelTestSupport { assertMockEndpointsSatisfied(); Exchange exchange = mock.getReceivedExchanges().get(0); - assertTrue(ObjectHelper.equalByteArray(getTaredText("poem.txt"), (byte[]) exchange.getIn().getBody())); + assertTrue(ObjectHelper.equalByteArray(getTaredText("poem.txt"), exchange.getIn().getBody(byte[].class))); } @Test @@ -118,7 +118,7 @@ public class TarFileDataFormatTest extends CamelTestSupport { Exchange exchange = mock.getReceivedExchanges().get(0); assertTrue(ObjectHelper.equalByteArray(getTaredTextInFolder("poems/", "poems/poem.txt"), - (byte[]) exchange.getIn().getBody())); + exchange.getIn().getBody(byte[].class))); } @Test @@ -150,7 +150,7 @@ public class TarFileDataFormatTest extends CamelTestSupport { Exchange exchange = mock.getReceivedExchanges().get(0); assertEquals(exchange.getIn().getMessageId(), exchange.getIn().getHeader(FILE_NAME)); - assertEquals(TEXT, new String((byte[]) exchange.getIn().getBody(), StandardCharsets.UTF_8)); + assertEquals(TEXT, new String(exchange.getIn().getBody(byte[].class), StandardCharsets.UTF_8)); } @Test diff --git a/components/camel-zip-deflater/src/test/java/org/apache/camel/dataformat/deflater/GzipDataFormatTest.java b/components/camel-zip-deflater/src/test/java/org/apache/camel/dataformat/deflater/GzipDataFormatTest.java index 4cf1118905d..09e5684f07b 100644 --- a/components/camel-zip-deflater/src/test/java/org/apache/camel/dataformat/deflater/GzipDataFormatTest.java +++ b/components/camel-zip-deflater/src/test/java/org/apache/camel/dataformat/deflater/GzipDataFormatTest.java @@ -45,7 +45,7 @@ public class GzipDataFormatTest extends CamelTestSupport { } private byte[] sendText() { - return (byte[]) template.requestBody("direct:start", TEXT.getBytes(StandardCharsets.UTF_8)); + return template.requestBody("direct:start", TEXT.getBytes(StandardCharsets.UTF_8), byte[].class); } @Test diff --git a/components/camel-zip-deflater/src/test/java/org/apache/camel/dataformat/deflater/ZipDeflaterDataFormatTest.java b/components/camel-zip-deflater/src/test/java/org/apache/camel/dataformat/deflater/ZipDeflaterDataFormatTest.java index 27098a8bb61..ab14f844c14 100644 --- a/components/camel-zip-deflater/src/test/java/org/apache/camel/dataformat/deflater/ZipDeflaterDataFormatTest.java +++ b/components/camel-zip-deflater/src/test/java/org/apache/camel/dataformat/deflater/ZipDeflaterDataFormatTest.java @@ -33,6 +33,7 @@ import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; @@ -131,7 +132,7 @@ public class ZipDeflaterDataFormatTest extends CamelTestSupport { sendText(); result.assertIsSatisfied(); List<Exchange> exchangeList = result.getExchanges(); - assertTrue(exchangeList.get(0).getIn().getBody() instanceof byte[]); + exchangeList.get(0).getIn().getBody(byte[].class); } @Test diff --git a/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormatTest.java b/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormatTest.java index a36044f6ab2..635515bae3c 100644 --- a/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormatTest.java +++ b/components/camel-zipfile/src/test/java/org/apache/camel/dataformat/zipfile/ZipFileDataFormatTest.java @@ -99,7 +99,7 @@ public class ZipFileDataFormatTest extends CamelTestSupport { Exchange exchange = mock.getReceivedExchanges().get(0); assertEquals(exchange.getIn().getMessageId() + ".zip", exchange.getIn().getHeader(FILE_NAME)); - assertArrayEquals(getZippedText(exchange.getIn().getMessageId()), (byte[]) exchange.getIn().getBody()); + assertArrayEquals(getZippedText(exchange.getIn().getMessageId()), exchange.getIn().getBody(byte[].class)); } @Test @@ -183,7 +183,7 @@ public class ZipFileDataFormatTest extends CamelTestSupport { Exchange exchange = mock.getReceivedExchanges().get(0); assertEquals(exchange.getIn().getMessageId(), exchange.getIn().getHeader(FILE_NAME)); - assertEquals(TEXT, new String((byte[]) exchange.getIn().getBody(), "UTF-8")); + assertEquals(TEXT, new String(exchange.getIn().getBody(byte[].class), "UTF-8")); } @Test diff --git a/core/camel-xml-jaxp/src/generated/java/org/apache/camel/converter/jaxp/CamelXmlJaxpBulkConverterLoader.java b/core/camel-xml-jaxp/src/generated/java/org/apache/camel/converter/jaxp/CamelXmlJaxpBulkConverterLoader.java index ed9d0cbc853..16d305f247e 100644 --- a/core/camel-xml-jaxp/src/generated/java/org/apache/camel/converter/jaxp/CamelXmlJaxpBulkConverterLoader.java +++ b/core/camel-xml-jaxp/src/generated/java/org/apache/camel/converter/jaxp/CamelXmlJaxpBulkConverterLoader.java @@ -37,7 +37,7 @@ public final class CamelXmlJaxpBulkConverterLoader implements TypeConverterLoade @Override public int size() { - return 92; + return 94; } @Override @@ -191,6 +191,9 @@ public final class CamelXmlJaxpBulkConverterLoader implements TypeConverterLoade if (value instanceof org.w3c.dom.Document) { return getXmlConverter().toSource((org.w3c.dom.Document) value); } + if (value instanceof org.apache.camel.StreamCache) { + return getXmlConverter().toSource((org.apache.camel.StreamCache) value, exchange); + } } else if (to == javax.xml.transform.dom.DOMSource.class) { if (value instanceof org.w3c.dom.Document) { return getXmlConverter().toDOMSource((org.w3c.dom.Document) value); @@ -342,6 +345,9 @@ public final class CamelXmlJaxpBulkConverterLoader implements TypeConverterLoade return obj; } } + if (value instanceof org.apache.camel.StreamCache) { + return getXmlConverter().toDOMDocument((org.apache.camel.StreamCache) value, exchange); + } } else if (to == org.w3c.dom.Element.class) { if (value instanceof javax.xml.transform.Source) { return getXmlConverter().toDOMElement((javax.xml.transform.Source) value); @@ -513,6 +519,9 @@ public final class CamelXmlJaxpBulkConverterLoader implements TypeConverterLoade if (from == org.w3c.dom.Document.class) { return this; } + if (from == org.apache.camel.StreamCache.class) { + return this; + } } else if (to == javax.xml.transform.dom.DOMSource.class) { if (from == org.w3c.dom.Document.class) { return this; @@ -659,6 +668,9 @@ public final class CamelXmlJaxpBulkConverterLoader implements TypeConverterLoade if (from == org.w3c.dom.NodeList.class) { return this; } + if (from == org.apache.camel.StreamCache.class) { + return this; + } } else if (to == org.w3c.dom.Element.class) { if (from == javax.xml.transform.Source.class) { return this; diff --git a/core/camel-xml-jaxp/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java b/core/camel-xml-jaxp/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java index 750b4e20e20..6fd77812f48 100644 --- a/core/camel-xml-jaxp/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java +++ b/core/camel-xml-jaxp/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java @@ -56,6 +56,7 @@ import javax.xml.transform.stax.StAXSource; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; +import org.apache.camel.StreamCache; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -854,6 +855,19 @@ public class XmlConverter { return is; } + @Converter(order = 64) + public Source toSource(StreamCache cache, Exchange exchange) { + byte[] arr = exchange.getContext().getTypeConverter().convertTo(byte[].class, exchange, cache); + return toSource(arr); + } + + @Converter(order = 65) + public Document toDOMDocument(StreamCache cache, Exchange exchange) + throws IOException, SAXException, ParserConfigurationException { + byte[] arr = exchange.getContext().getTypeConverter().convertTo(byte[].class, exchange, cache); + return toDOMDocument(arr, exchange); + } + /** * Converts the given Document to into text *
