- 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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user