diff --git a/messaging-modules/apache-camel/pom.xml b/messaging-modules/apache-camel/pom.xml
index bb20f178aa..8b49ad4893 100644
--- a/messaging-modules/apache-camel/pom.xml
+++ b/messaging-modules/apache-camel/pom.xml
@@ -17,30 +17,39 @@
- org.apache.camel
- camel-core
- ${env.camel.version}
+ org.apache.camel.springboot
+ camel-spring-boot-starter
+ ${camel.version}
+
+
+ org.apache.camel.springboot
+ camel-jackson-starter
+ ${camel.version}
org.apache.camel
- camel-spring-javaconfig
- ${env.camel.version}
+ camel-test-spring-junit5
+ ${camel.version}
+ test
- org.apache.camel
- camel-jackson
- ${env.camel.version}
+ org.junit.platform
+ junit-platform-launcher
+ test
- org.apache.camel
- camel-test
- ${env.camel.version}
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.awaitility
+ awaitility
test
- 3.14.7
+ 3.21.0
\ No newline at end of file
diff --git a/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/Application.java b/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/Application.java
new file mode 100755
index 0000000000..51b2540aa8
--- /dev/null
+++ b/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/Application.java
@@ -0,0 +1,11 @@
+package com.baeldung.camel.apache;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+}
\ No newline at end of file
diff --git a/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/file/FileProcessor.java b/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/file/FileProcessor.java
index ce4d92e8ab..a0571e7083 100644
--- a/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/file/FileProcessor.java
+++ b/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/file/FileProcessor.java
@@ -5,14 +5,17 @@ import java.util.Date;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
+import org.springframework.stereotype.Component;
+@Component
public class FileProcessor implements Processor {
+ @Override
public void process(Exchange exchange) throws Exception {
String originalFileName = (String) exchange.getIn().getHeader(Exchange.FILE_NAME, String.class);
Date date = new Date();
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String changedFileName = dateFormat.format(date) + originalFileName;
exchange.getIn().setHeader(Exchange.FILE_NAME, changedFileName);
}
diff --git a/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/file/FileRouter.java b/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/file/FileRouter.java
index 760f37677b..b57232d41e 100644
--- a/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/file/FileRouter.java
+++ b/messaging-modules/apache-camel/src/main/java/com/baeldung/camel/apache/file/FileRouter.java
@@ -1,7 +1,9 @@
package com.baeldung.camel.apache.file;
import org.apache.camel.builder.RouteBuilder;
+import org.springframework.stereotype.Component;
+@Component
public class FileRouter extends RouteBuilder {
private static final String SOURCE_FOLDER = "src/test/source-folder";
diff --git a/messaging-modules/apache-camel/src/main/resources/camel-context-test.xml b/messaging-modules/apache-camel/src/main/resources/camel-context-test.xml
index f306574868..f6177c69b5 100644
--- a/messaging-modules/apache-camel/src/main/resources/camel-context-test.xml
+++ b/messaging-modules/apache-camel/src/main/resources/camel-context-test.xml
@@ -1,11 +1,12 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
-
-
+
+
diff --git a/messaging-modules/apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitArrayJacksonUnmarshalUnitTest.java b/messaging-modules/apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitArrayJacksonUnmarshalUnitTest.java
index bc0025b263..df7a57a984 100644
--- a/messaging-modules/apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitArrayJacksonUnmarshalUnitTest.java
+++ b/messaging-modules/apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitArrayJacksonUnmarshalUnitTest.java
@@ -1,31 +1,65 @@
package com.apache.baeldung.camel.jackson;
+import com.baeldung.camel.apache.Application;
+import com.baeldung.camel.apache.jackson.Fruit;
+import org.apache.camel.Configuration;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.jackson.ListJacksonDataFormat;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Bean;
+import org.springframework.test.annotation.DirtiesContext;
+
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.jackson.ListJacksonDataFormat;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
+import static org.springframework.test.util.AssertionErrors.assertEquals;
+import static org.springframework.test.util.AssertionErrors.assertNotNull;
-import com.baeldung.camel.apache.jackson.Fruit;
+@CamelSpringBootTest
+@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
+@SpringBootTest(classes = {Application.class, FruitArrayJacksonUnmarshalUnitTest.TestConfig.class})
+public class FruitArrayJacksonUnmarshalUnitTest {
-public class FruitArrayJacksonUnmarshalUnitTest extends CamelTestSupport {
+ @Autowired
+ private ProducerTemplate template;
+
+ @EndpointInject("mock:marshalledObject")
+ private MockEndpoint mock;
+
+ @Configuration
+ static class TestConfig {
+ @Bean
+ RoutesBuilder route() {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:jsonInput").unmarshal(new ListJacksonDataFormat(Fruit.class))
+ .to("mock:marshalledObject");
+ }
+ };
+ }
+ }
@Test
public void givenJsonFruitArray_whenUnmarshalled_thenSuccess() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:marshalledObject");
- mock.expectedMessageCount(1);
+ mock.setExpectedMessageCount(1);
mock.message(0).body().isInstanceOf(List.class);
String json = readJsonFromFile("/json/fruit-array.json");
template.sendBody("direct:jsonInput", json);
- assertMockEndpointsSatisfied();
+ mock.assertIsSatisfied();
@SuppressWarnings("unchecked")
List fruitList = mock.getReceivedExchanges().get(0).getIn().getBody(List.class);
@@ -41,22 +75,10 @@ public class FruitArrayJacksonUnmarshalUnitTest extends CamelTestSupport {
assertEquals("Fruit name", "Apple", fruit.getName());
assertEquals("Fruit id", 101, fruit.getId());
}
-
- @Override
- protected RouteBuilder createRouteBuilder() throws Exception {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
-
- from("direct:jsonInput").unmarshal(new ListJacksonDataFormat(Fruit.class))
- .to("mock:marshalledObject");
- }
- };
- }
private String readJsonFromFile(String path) throws URISyntaxException, IOException {
URL resource = FruitArrayJacksonUnmarshalUnitTest.class.getResource(path);
- return new String(Files.readAllBytes(Paths.get(resource.toURI())));
+ return new String(Files.readAllBytes(Paths.get(resource.toURI())), StandardCharsets.UTF_8);
}
}
diff --git a/messaging-modules/apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitListJacksonUnmarshalUnitTest.java b/messaging-modules/apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitListJacksonUnmarshalUnitTest.java
index 2d15ebf46b..8120eeffec 100644
--- a/messaging-modules/apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitListJacksonUnmarshalUnitTest.java
+++ b/messaging-modules/apache-camel/src/test/java/com/apache/baeldung/camel/jackson/FruitListJacksonUnmarshalUnitTest.java
@@ -1,32 +1,64 @@
package com.apache.baeldung.camel.jackson;
+import com.baeldung.camel.apache.Application;
+import com.baeldung.camel.apache.jackson.Fruit;
+import com.baeldung.camel.apache.jackson.FruitList;
+import org.apache.camel.Configuration;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.jackson.JacksonDataFormat;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Bean;
+
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.jackson.JacksonDataFormat;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
+import static org.springframework.test.util.AssertionErrors.assertEquals;
+import static org.springframework.test.util.AssertionErrors.assertNotNull;
-import com.baeldung.camel.apache.jackson.Fruit;
-import com.baeldung.camel.apache.jackson.FruitList;
+@CamelSpringBootTest
+@SpringBootTest(classes = {Application.class, FruitListJacksonUnmarshalUnitTest.TestConfig.class})
+public class FruitListJacksonUnmarshalUnitTest {
-public class FruitListJacksonUnmarshalUnitTest extends CamelTestSupport {
+ @Autowired
+ private ProducerTemplate template;
+
+ @EndpointInject("mock:marshalledObject")
+ private MockEndpoint mock;
+
+ @Configuration
+ static class TestConfig {
+ @Bean
+ RoutesBuilder route() {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:jsonInput").unmarshal(new JacksonDataFormat(FruitList.class))
+ .to("mock:marshalledObject");
+ }
+ };
+ }
+ }
@Test
public void givenJsonFruitList_whenUnmarshalled_thenSuccess() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:marshalledObject");
- mock.expectedMessageCount(1);
+ mock.setExpectedMessageCount(1);
mock.message(0).body().isInstanceOf(FruitList.class);
String json = readJsonFromFile("/json/fruit-list.json");
template.sendBody("direct:jsonInput", json);
- assertMockEndpointsSatisfied();
+ mock.assertIsSatisfied();
FruitList fruitList = mock.getReceivedExchanges().get(0).getIn().getBody(FruitList.class);
assertNotNull("Fruit lists should not be null", fruitList);
@@ -43,20 +75,9 @@ public class FruitListJacksonUnmarshalUnitTest extends CamelTestSupport {
assertEquals("Fruit id", 101, fruit.getId());
}
- @Override
- protected RouteBuilder createRouteBuilder() throws Exception {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
- from("direct:jsonInput").unmarshal(new JacksonDataFormat(FruitList.class))
- .to("mock:marshalledObject");
- }
- };
- }
-
private String readJsonFromFile(String path) throws URISyntaxException, IOException {
URL resource = FruitListJacksonUnmarshalUnitTest.class.getResource(path);
- return new String(Files.readAllBytes(Paths.get(resource.toURI())));
+ return new String(Files.readAllBytes(Paths.get(resource.toURI())), StandardCharsets.UTF_8);
}
}
diff --git a/messaging-modules/apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorIntegrationTest.java b/messaging-modules/apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorIntegrationTest.java
index e4390a95e5..5003021d20 100644
--- a/messaging-modules/apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorIntegrationTest.java
+++ b/messaging-modules/apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorIntegrationTest.java
@@ -1,16 +1,21 @@
package com.apache.camel.file.processor;
-import java.io.File;
-
+import com.baeldung.camel.apache.file.FileProcessor;
import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
+import org.awaitility.Awaitility;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
-import com.baeldung.camel.apache.file.FileProcessor;
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
public class FileProcessorIntegrationTest {
@@ -52,7 +57,7 @@ public class FileProcessorIntegrationTest {
}
@Test
- public void moveFolderContentJavaDSLTest() throws Exception {
+ public void givenJavaDSLRoute_whenCamelStart_thenMoveFolderContent() throws Exception {
final CamelContext camelContext = new DefaultCamelContext();
camelContext.addRoutes(new RouteBuilder() {
@Override
@@ -61,15 +66,26 @@ public class FileProcessorIntegrationTest {
}
});
camelContext.start();
- Thread.sleep(DURATION_MILIS);
+ verifyFolderContent();
camelContext.stop();
}
@Test
- public void moveFolderContentSpringDSLTest() throws InterruptedException {
+ public void givenSpringDSLRoute_whenCamelStart_thenMoveFolderContent() throws InterruptedException {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context-test.xml");
- Thread.sleep(DURATION_MILIS);
+ verifyFolderContent();
applicationContext.close();
+ }
+ private void verifyFolderContent() {
+ Date date = new Date();
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ File destinationFile1 = new File(DESTINATION_FOLDER + "/" + dateFormat.format(date) + "File1.txt");
+ File destinationFile2 = new File(DESTINATION_FOLDER + "/" + dateFormat.format(date) + "File2.txt");
+
+ Awaitility.await().atMost(DURATION_MILIS, TimeUnit.MILLISECONDS).untilAsserted(() -> {
+ assertThat(destinationFile1.exists()).isTrue();
+ assertThat(destinationFile2.exists()).isTrue();
+ });
}
}
\ No newline at end of file