- added new camel example
- added new camel context for junit test
This commit is contained in:
parent
48f5fdb8e9
commit
9187dbd362
|
@ -0,0 +1,20 @@
|
||||||
|
package com.baeldung.camel.file;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.apache.camel.Exchange;
|
||||||
|
import org.apache.camel.Processor;
|
||||||
|
|
||||||
|
public class FileProcessor implements Processor {
|
||||||
|
|
||||||
|
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");
|
||||||
|
String changedFileName = dateFormat.format(date) + originalFileName;
|
||||||
|
exchange.getIn().setHeader(Exchange.FILE_NAME, changedFileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.baeldung.camel.file;
|
||||||
|
|
||||||
|
import org.apache.camel.builder.RouteBuilder;
|
||||||
|
|
||||||
|
public class FileRouter extends RouteBuilder {
|
||||||
|
|
||||||
|
private static final String SOURCE_FOLDER = "src/test/source-folder";
|
||||||
|
private static final String DESTINATION_FOLDER = "src/test/destination-folder";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void configure() throws Exception {
|
||||||
|
from("file://" + SOURCE_FOLDER + "?delete=true").process(new FileProcessor()).to("file://" + DESTINATION_FOLDER);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
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">
|
||||||
|
|
||||||
|
<bean id="fileRouter" class="com.baeldung.camel.file.FileRouter" />
|
||||||
|
<bean id="fileProcessor" class="com.baeldung.camel.file.FileProcessor" />
|
||||||
|
|
||||||
|
<camelContext xmlns="http://camel.apache.org/schema/spring">
|
||||||
|
<routeBuilder ref="fileRouter" />
|
||||||
|
</camelContext>
|
||||||
|
|
||||||
|
</beans>
|
|
@ -1,39 +1,39 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
|
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://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
|
||||||
|
|
||||||
<camelContext xmlns="http://camel.apache.org/schema/spring">
|
<camelContext xmlns="http://camel.apache.org/schema/spring">
|
||||||
|
|
||||||
<route customId="true" id="route1">
|
<route customId="true" id="route1">
|
||||||
|
|
||||||
<!-- Read files from input directory -->
|
<!-- Read files from input directory -->
|
||||||
<from uri="file://src/test/data/input"/>
|
<from uri="file://src/test/data/input" />
|
||||||
|
|
||||||
<!-- Transform content to UpperCase -->
|
<!-- Transform content to UpperCase -->
|
||||||
<process ref="myFileProcessor"/>
|
<process ref="myFileProcessor" />
|
||||||
|
|
||||||
<!-- Write converted file content -->
|
<!-- Write converted file content -->
|
||||||
<to uri="file://src/test/data/outputUpperCase"/>
|
<to uri="file://src/test/data/outputUpperCase" />
|
||||||
|
|
||||||
<!-- Transform content to LowerCase -->
|
<!-- Transform content to LowerCase -->
|
||||||
<transform>
|
<transform>
|
||||||
<simple>${body.toLowerCase()}</simple>
|
<simple>${body.toLowerCase()}</simple>
|
||||||
</transform>
|
</transform>
|
||||||
|
|
||||||
<!-- Write converted file content -->
|
<!-- Write converted file content -->
|
||||||
<to uri="file://src/test/data/outputLowerCase"/>
|
<to uri="file://src/test/data/outputLowerCase" />
|
||||||
|
|
||||||
<!-- Display process completion message on console -->
|
<!-- Display process completion message on console -->
|
||||||
<transform>
|
<transform>
|
||||||
<simple>.......... File content conversion completed ..........</simple>
|
<simple>.......... File content conversion completed ..........</simple>
|
||||||
</transform>
|
</transform>
|
||||||
<to uri="stream:out"/>
|
<to uri="stream:out" />
|
||||||
|
|
||||||
</route>
|
</route>
|
||||||
|
|
||||||
</camelContext>
|
</camelContext>
|
||||||
|
|
||||||
<bean id="myFileProcessor" class="com.baeldung.camel.processor.FileProcessor"/>
|
<bean id="myFileProcessor" class="com.baeldung.camel.processor.FileProcessor" />
|
||||||
</beans>
|
</beans>
|
|
@ -0,0 +1,68 @@
|
||||||
|
package org.apache.camel.file.processor;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import org.apache.camel.CamelContext;
|
||||||
|
import org.apache.camel.builder.RouteBuilder;
|
||||||
|
import org.apache.camel.impl.DefaultCamelContext;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||||
|
|
||||||
|
import com.baeldung.camel.file.FileProcessor;
|
||||||
|
|
||||||
|
|
||||||
|
public class FileProcessorTest {
|
||||||
|
|
||||||
|
private static final long DURATION_MILIS = 10000;
|
||||||
|
private static final String SOURCE_FOLDER = "src/test/source-folder";
|
||||||
|
private static final String DESTINATION_FOLDER = "src/test/destination-folder";
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() throws Exception {
|
||||||
|
File sourceFolder = new File(SOURCE_FOLDER);
|
||||||
|
File destinationFolder = new File(DESTINATION_FOLDER);
|
||||||
|
|
||||||
|
cleanFolder(sourceFolder);
|
||||||
|
cleanFolder(destinationFolder);
|
||||||
|
|
||||||
|
sourceFolder.mkdirs();
|
||||||
|
File file1 = new File(SOURCE_FOLDER + "/File1.txt");
|
||||||
|
File file2 = new File(SOURCE_FOLDER + "/File2.txt");
|
||||||
|
file1.createNewFile();
|
||||||
|
file2.createNewFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cleanFolder(File folder) {
|
||||||
|
File[] files = folder.listFiles();
|
||||||
|
if (files != null) {
|
||||||
|
for (File file : files) {
|
||||||
|
if (file.isFile()) {
|
||||||
|
file.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void moveFolderContentJavaDSLTest() throws Exception {
|
||||||
|
final CamelContext camelContext = new DefaultCamelContext();
|
||||||
|
camelContext.addRoutes(new RouteBuilder() {
|
||||||
|
@Override
|
||||||
|
public void configure() throws Exception {
|
||||||
|
from("file://" + SOURCE_FOLDER + "?delete=true").process(new FileProcessor()).to("file://" + DESTINATION_FOLDER);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
camelContext.start();
|
||||||
|
Thread.sleep(DURATION_MILIS);
|
||||||
|
camelContext.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void moveFolderContentSpringDSLTest() throws InterruptedException {
|
||||||
|
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context-test.xml");
|
||||||
|
Thread.sleep(DURATION_MILIS);
|
||||||
|
applicationContext.close();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue