From d2f3e3c683b0b757d832b87a5aa05fe94f1f1e15 Mon Sep 17 00:00:00 2001 From: bvn13 Date: Thu, 11 Aug 2022 10:38:05 +0300 Subject: [PATCH] camel testing --- camel-testing/build.gradle | 9 ++-- .../cameltesting/CamelTestingApplication.java | 8 ++- .../cameltesting/PropertyProviderImpl.java | 4 +- .../cameltesting/RestRouteBuilder.java | 26 ++++++++++ .../cameltesting/SimpleRouteBuilder.java | 7 +-- .../cameltesting/SupervisorResponseDto.java | 8 +-- .../danielolivaw/FileBackupRouteBuilder.java | 49 +++++++++++++++++++ .../cameltesting/danielolivaw/GetFiles.java | 40 +++++++++++++++ .../src/main/resources/application.yaml | 6 +-- 9 files changed, 138 insertions(+), 19 deletions(-) create mode 100644 camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/RestRouteBuilder.java create mode 100644 camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/danielolivaw/FileBackupRouteBuilder.java create mode 100644 camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/danielolivaw/GetFiles.java diff --git a/camel-testing/build.gradle b/camel-testing/build.gradle index bdf54bc..2280bef 100644 --- a/camel-testing/build.gradle +++ b/camel-testing/build.gradle @@ -24,9 +24,12 @@ dependencies { // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.5.7' - implementation 'org.apache.camel.springboot:camel-spring-boot-starter:3.13.0' - implementation 'org.apache.camel.springboot:camel-http-starter:3.13.0' - implementation 'org.apache.camel:camel-jackson:3.13.0' + implementation 'org.apache.camel.springboot:camel-spring-boot-starter:3.15.0' + implementation 'org.apache.camel.springboot:camel-http-starter:3.15.0' + implementation 'org.apache.camel:camel-jackson:3.15.0' + + implementation 'org.apache.camel.springboot:camel-rest-starter:3.15.0' + implementation 'org.apache.camel:camel-jetty:3.15.0' compileOnly 'org.projectlombok:lombok:1.18.22' annotationProcessor 'org.projectlombok:lombok:1.18.22' diff --git a/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/CamelTestingApplication.java b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/CamelTestingApplication.java index b0982a9..00c3d15 100644 --- a/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/CamelTestingApplication.java +++ b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/CamelTestingApplication.java @@ -1,14 +1,18 @@ package me.bvn13.lesson.camel.testing.cameltesting; -import org.springframework.boot.SpringApplication; +import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; @SpringBootApplication public class CamelTestingApplication { public static void main(String[] args) { - SpringApplication.run(CamelTestingApplication.class, args); +// SpringApplication.run(CamelTestingApplication.class, args); + new SpringApplicationBuilder(CamelTestingApplication.class) + .web(WebApplicationType.NONE) + .run(args); } } diff --git a/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/PropertyProviderImpl.java b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/PropertyProviderImpl.java index a3c124b..2bea7cc 100644 --- a/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/PropertyProviderImpl.java +++ b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/PropertyProviderImpl.java @@ -8,10 +8,10 @@ import org.springframework.stereotype.Component; @Profile("!test") public class PropertyProviderImpl implements PropertiesProvider { - @Value("${app.input.folder}") + @Value("${app.input.folder:/tmp/in}") private String inputFolder; - @Value("${app.output.folder}") + @Value("${app.output.folder:/tmp/out}") private String outputFolder; @Override diff --git a/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/RestRouteBuilder.java b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/RestRouteBuilder.java new file mode 100644 index 0000000..f9aa81e --- /dev/null +++ b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/RestRouteBuilder.java @@ -0,0 +1,26 @@ +package me.bvn13.lesson.camel.testing.cameltesting; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; + +//@Component +public class RestRouteBuilder extends RouteBuilder { + @Override + public void configure() throws Exception { + + restConfiguration() + .port(8085) +// .host("localhost") + ; + + rest() + .get("/test") + .route() + .log("${body}") + .setBody().body(ex -> "OK") + .end() + .endRest() + ; + + } +} diff --git a/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/SimpleRouteBuilder.java b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/SimpleRouteBuilder.java index 5f09442..a0ca9f2 100644 --- a/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/SimpleRouteBuilder.java +++ b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/SimpleRouteBuilder.java @@ -20,12 +20,9 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; -import static me.bvn13.lesson.camel.testing.cameltesting.SupervisorResponseDto.Verdict.SKIP; - -@Converter @Slf4j @RequiredArgsConstructor -@Component +//@Component public class SimpleRouteBuilder extends RouteBuilder { @Value("${app.bad-word}") @@ -54,7 +51,7 @@ public class SimpleRouteBuilder extends RouteBuilder { .log("processing ${header[CamelFileName]}") .to("direct://supervisor") .choice() - .when(exchangeProperty(SUPERVISION_VERDICT).isEqualTo(SKIP)) + .when(exchangeProperty(SUPERVISION_VERDICT).isEqualTo(SupervisorResponseDto.Verdict.SKIP)) .to("direct://skip") .otherwise() .to("direct://process"); diff --git a/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/SupervisorResponseDto.java b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/SupervisorResponseDto.java index 4a7ba40..24a294f 100644 --- a/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/SupervisorResponseDto.java +++ b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/SupervisorResponseDto.java @@ -9,10 +9,10 @@ public class SupervisorResponseDto { Verdict verdict; - @JsonCreator - public SupervisorResponseDto(@JsonProperty("verdict") Verdict verdict) { - this.verdict = verdict; - } +// @JsonCreator +// public SupervisorResponseDto(@JsonProperty("verdict") Verdict verdict) { +// this.verdict = verdict; +// } public enum Verdict { PROCESS, diff --git a/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/danielolivaw/FileBackupRouteBuilder.java b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/danielolivaw/FileBackupRouteBuilder.java new file mode 100644 index 0000000..4262f82 --- /dev/null +++ b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/danielolivaw/FileBackupRouteBuilder.java @@ -0,0 +1,49 @@ +package me.bvn13.lesson.camel.testing.cameltesting.danielolivaw; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; + +@Component +public class FileBackupRouteBuilder extends RouteBuilder { + + public static final String SOURCE_FILE_NAME = "SourceFileName"; + public static final String DESTINATION_FILE_NAME = "DestinationFileName"; + public static final String DATE_PART_1 = "DATE_PART_1"; + public static final String DATE_PART_2 = "DATE_PART_2"; + public static final String DATE_PART_3 = "DATE_PART_3"; + + @Value("${source.path}") + private String sourcePath; + @Value("${destination.path}") + private String destinationPath; + + @Override + public void configure() throws Exception { + + from("file://" + sourcePath + "?delete=false&recursively=true") + .routeId("Transfer_Backup") + .setProperty(SOURCE_FILE_NAME, header("CamelFileName")) + .log("Transferring ${exchangeProperty["+SOURCE_FILE_NAME+"]}") + .process(exchange -> { + String sourceFileName = exchange.getProperty(SOURCE_FILE_NAME, String.class); + // be sure sourceFileName is a name without path + String newFileName = sourceFileName + ".bup"; // maybe + + LocalDate now = LocalDate.now(); + exchange.setProperty(DATE_PART_1, now.getYear()); + exchange.setProperty(DATE_PART_2, now.getMonthValue()); + exchange.setProperty(DATE_PART_3, now.getDayOfMonth()); + exchange.setProperty(DESTINATION_FILE_NAME, newFileName); + }) + .toD("file://" + destinationPath + + "/${exchangeProperty["+DATE_PART_1+"]}" + + "/${exchangeProperty["+DATE_PART_2+"]}" + + "/${exchangeProperty["+DATE_PART_3+"]}" + + "/${exchangeProperty["+DESTINATION_FILE_NAME+"]}") + ; + + } +} diff --git a/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/danielolivaw/GetFiles.java b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/danielolivaw/GetFiles.java new file mode 100644 index 0000000..8d53571 --- /dev/null +++ b/camel-testing/src/main/java/me/bvn13/lesson/camel/testing/cameltesting/danielolivaw/GetFiles.java @@ -0,0 +1,40 @@ +package me.bvn13.lesson.camel.testing.cameltesting.danielolivaw; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class GetFiles { + + public GetFiles() { + File parentPath = new File("Desktop/oldBackup"); + List files = list(parentPath); + } + + protected List list(File parent) { + return listFiles(parent, parent); + } + + protected List listFiles(File parent, File folder) { + List fileList = new ArrayList(); + if (folder.isDirectory()) { + + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isDirectory()) { + fileList.addAll(listFiles(parent, file)); + } else { + String path = file.getPath(); + String offset = parent.getPath(); + + path = path.substring(offset.length()); + fileList.add(path); + } + } + } + } + + return fileList; + } +} \ No newline at end of file diff --git a/camel-testing/src/main/resources/application.yaml b/camel-testing/src/main/resources/application.yaml index 314d93e..046a37c 100644 --- a/camel-testing/src/main/resources/application.yaml +++ b/camel-testing/src/main/resources/application.yaml @@ -1,6 +1,6 @@ -#camel: -# springboot: -# main-run-controller: true +camel: + springboot: + main-run-controller: true app: