Skip to content

Commit

Permalink
CAMEL-20686: avoid using unsafe shared resources
Browse files Browse the repository at this point in the history
  • Loading branch information
orpiske committed Apr 18, 2024
1 parent 22de245 commit ad186ac
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,23 +27,24 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

/**
*
*/
class FileProducerCharsetUTFtoISOConfiguredTest extends ContextTestSupport {

private static final String DATA = "ABC\u00e6";
private static final String INPUT_FILE
= "input." + FileProducerCharsetUTFtoISOConfiguredTest.class.getSimpleName() + ".txt";
private static final String OUTPUT_FILE
= "output." + FileProducerCharsetUTFtoISOConfiguredTest.class.getSimpleName() + ".txt";

@Test
void testFileProducerCharsetUTFtoISO() throws Exception {
try (OutputStream fos = Files.newOutputStream(testFile("input.txt"))) {
try (OutputStream fos = Files.newOutputStream(testFile(INPUT_FILE))) {
fos.write(DATA.getBytes(StandardCharsets.UTF_8));
}

assertTrue(oneExchangeDone.matchesWaitTime());

assertFileExists(testFile("output.txt"));
byte[] data = Files.readAllBytes(testFile("output.txt"));
assertFileExists(testFile(OUTPUT_FILE));
byte[] data = Files.readAllBytes(testFile(OUTPUT_FILE));

assertEquals(DATA, new String(data, StandardCharsets.ISO_8859_1));
}
Expand All @@ -53,8 +54,8 @@ protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() {
from(fileUri("?initialDelay=0&delay=10&charset=utf-8&fileName=input.txt"))
.to(fileUri("?fileName=output.txt&charset=iso-8859-1"));
fromF(fileUri("?initialDelay=0&delay=10&charset=utf-8&fileName=%s"), INPUT_FILE)
.toF(fileUri("?fileName=%s&charset=iso-8859-1"), OUTPUT_FILE);
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,18 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;

/**
*
*/
class FileProducerCharsetUTFtoISOConvertBodyToTest extends ContextTestSupport {

private static final String DATA = "ABC\u00e6";

private static final String INPUT_FILE
= "input." + FileProducerCharsetUTFtoISOConvertBodyToTest.class.getSimpleName() + ".txt";
private static final String OUTPUT_FILE
= "output." + FileProducerCharsetUTFtoISOConvertBodyToTest.class.getSimpleName() + ".txt";

@BeforeEach
void writeTestData() {
try (OutputStream fos = Files.newOutputStream(testFile("input.txt"))) {
try (OutputStream fos = Files.newOutputStream(testFile(INPUT_FILE))) {
fos.write(DATA.getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
fail("The test cannot run due to: " + e.getMessage());
Expand All @@ -54,7 +56,7 @@ void writeTestData() {
@AfterEach
void cleanupFile() {
try {
Files.delete(testFile("output.txt"));
Files.delete(testFile(OUTPUT_FILE));
} catch (IOException e) {
fail("The test cannot run due to an error cleaning up: " + e.getMessage());
}
Expand All @@ -64,7 +66,7 @@ void cleanupFile() {
void testFileProducerCharsetUTFtoISOConvertBodyTo() throws Exception {
assertTrue(oneExchangeDone.matchesWaitTime());

final Path outputFile = testFile("output.txt");
final Path outputFile = testFile(OUTPUT_FILE);

Awaitility.await().atMost(2, TimeUnit.SECONDS).untilAsserted(() -> assertFileExists(outputFile));
Awaitility.await().atMost(2, TimeUnit.SECONDS).untilAsserted(() -> assertTrue(Files.size(outputFile) > 0));
Expand All @@ -80,12 +82,12 @@ protected RouteBuilder createRouteBuilder() throws Exception {
@Override
public void configure() {
// the input file is in utf-8
from(fileUri("?initialDelay=0&delay=10&fileName=input.txt&charset=utf-8"))
fromF(fileUri("?initialDelay=0&delay=10&fileName=%s&charset=utf-8"), INPUT_FILE)
// now convert the input file from utf-8 to iso-8859-1
.convertBodyTo(byte[].class, "iso-8859-1")
// and write the file using that encoding
.setProperty(Exchange.CHARSET_NAME, header("someCharsetHeader"))
.to(fileUri("?fileName=output.txt"));
.toF(fileUri("?fileName=%s"), OUTPUT_FILE);
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,29 +24,27 @@
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.util.ObjectHelper;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.parallel.Isolated;

import static org.junit.jupiter.api.Assertions.assertTrue;

/**
*
*/
@Isolated
class FileProducerCharsetUTFtoUTFTest extends ContextTestSupport {

private static final String DATA = "ABC\u00e6";

private static final String INPUT_FILE = "input." + FileProducerCharsetUTFtoUTFTest.class.getSimpleName() + ".txt";
private static final String OUTPUT_FILE = "output." + FileProducerCharsetUTFtoUTFTest.class.getSimpleName() + ".txt";

@Test
void testFileProducerCharsetUTFtoUTF() throws Exception {
byte[] source = DATA.getBytes(StandardCharsets.UTF_8);
try (OutputStream fos = Files.newOutputStream(testFile("input.txt"))) {
try (OutputStream fos = Files.newOutputStream(testFile(INPUT_FILE))) {
fos.write(source);
}

assertTrue(oneExchangeDone.matchesWaitTime());

assertFileExists(testFile("output.txt"));
byte[] target = Files.readAllBytes(testFile("output.txt"));
assertFileExists(testFile(OUTPUT_FILE));
byte[] target = Files.readAllBytes(testFile(OUTPUT_FILE));

assertTrue(ObjectHelper.equalByteArray(source, target));
}
Expand All @@ -56,8 +54,8 @@ protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from(fileUri("?initialDelay=0&delay=10&fileName=input.txt"))
.to(fileUri("?fileName=output.txt&charset=utf-8"));
fromF(fileUri("?initialDelay=0&delay=10&fileName=%s"), INPUT_FILE)
.toF(fileUri("?fileName=%s&charset=utf-8"), OUTPUT_FILE);
}
};
}
Expand Down

0 comments on commit ad186ac

Please sign in to comment.