diff --git a/cook-books/file-processing/.classpath b/cook-books/file-processing/.classpath
new file mode 100644
index 00000000..96489ff1
--- /dev/null
+++ b/cook-books/file-processing/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/cook-books/file-processing/.gitignore b/cook-books/file-processing/.gitignore
new file mode 100644
index 00000000..3ceb93dd
--- /dev/null
+++ b/cook-books/file-processing/.gitignore
@@ -0,0 +1,2 @@
+/target
+/input
diff --git a/cook-books/file-processing/.project b/cook-books/file-processing/.project
new file mode 100644
index 00000000..7c172b41
--- /dev/null
+++ b/cook-books/file-processing/.project
@@ -0,0 +1,29 @@
+
+
+ file-processing
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.maven.ide.eclipse.maven2Builder
+
+
+
+
+ org.springframework.ide.eclipse.core.springbuilder
+
+
+
+
+
+ org.springframework.ide.eclipse.core.springnature
+ org.eclipse.jdt.core.javanature
+ org.maven.ide.eclipse.maven2Nature
+
+
diff --git a/cook-books/file-processing/.settings/com.springsource.sts.config.flow.prefs b/cook-books/file-processing/.settings/com.springsource.sts.config.flow.prefs
new file mode 100644
index 00000000..c761574e
--- /dev/null
+++ b/cook-books/file-processing/.settings/com.springsource.sts.config.flow.prefs
@@ -0,0 +1,4 @@
+#Fri Sep 17 20:44:37 EDT 2010
+//com.springsource.sts.config.flow.coordinates\:http\://www.springframework.org/schema/integration\:/file-processing/src/main/resources/META-INF/spring/integration/concurrentFileProcessing-config.xml=\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+//com.springsource.sts.config.flow.coordinates\:http\://www.springframework.org/schema/integration\:/file-processing/src/main/resources/META-INF/spring/integration/sequentialFileProcessing-config.xml=\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+eclipse.preferences.version=1
diff --git a/cook-books/file-processing/.settings/org.eclipse.jdt.core.prefs b/cook-books/file-processing/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..442363d4
--- /dev/null
+++ b/cook-books/file-processing/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,13 @@
+#Fri Sep 17 20:26:28 EDT 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/cook-books/file-processing/.settings/org.maven.ide.eclipse.prefs b/cook-books/file-processing/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 00000000..fd4db5fb
--- /dev/null
+++ b/cook-books/file-processing/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Fri Sep 17 20:25:10 EDT 2010
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/cook-books/file-processing/.springBeans b/cook-books/file-processing/.springBeans
new file mode 100644
index 00000000..15608f30
--- /dev/null
+++ b/cook-books/file-processing/.springBeans
@@ -0,0 +1,13 @@
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
diff --git a/cook-books/file-processing/pom.xml b/cook-books/file-processing/pom.xml
new file mode 100644
index 00000000..641854bb
--- /dev/null
+++ b/cook-books/file-processing/pom.xml
@@ -0,0 +1,61 @@
+
+ 4.0.0
+ orf.springframework.integration.samples
+ file-processing
+ 2.0.0
+
+ 2.0.0.M7
+ 1.2.16
+ 4.7
+
+
+
+ org.springframework.integration
+ spring-integration-file
+ ${spring.integration.version}
+
+
+ log4j
+ log4j
+ ${log4j.version}
+
+
+
+ junit
+ junit
+ ${junit.version}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.5
+ 1.5
+ -Xlint:all
+ true
+ false
+
+
+
+
+
+
+ repository.springframework.maven.release
+ Spring Framework Maven Release Repository
+ http://maven.springframework.org/release
+
+
+ repository.springframework.maven.milestone
+ Spring Framework Maven Milestone Repository
+ http://maven.springframework.org/milestone
+
+
+ repository.springframework.maven.snapshot
+ Spring Framework Maven Snapshot Repository
+ http://maven.springframework.org/snapshot
+
+
+
\ No newline at end of file
diff --git a/cook-books/file-processing/readme.txt b/cook-books/file-processing/readme.txt
new file mode 100644
index 00000000..05fb873d
--- /dev/null
+++ b/cook-books/file-processing/readme.txt
@@ -0,0 +1,51 @@
+This sample demonstrates how to wire a message flow to process Files
+sequentially (maintain the order) or concurrently (no order).
+
+The difference is in poller configuration - single threaded or multi-threaded.
+
+Poller, configured for File Inbound Channel Adapter, after polling files and converting them to Messages
+will distribute these Messages one at the time using its own thread by default. So files will be pulled
+based in the order they were created in the directory and processed in such order.
+See sequentialFileProcessing-config.xml for configuration details.
+The FileProcessor class will randomly delay the file processing, but the order of processing is still maintained
+regardless of this delay
+
+If order is not important, then you can process files concurrently. ALl you need to do is configure task-executor for poller.
+Based on the delay in FileProcessor you'll clearly observe that the order of processing is based on the availability
+of the thread in the thread poll of task executor
+
+To run sample execute FileProcessingTest. You should see the following output:
+
+
+
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest -
+#### Starting Sequential processing test ####
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Populating directory with files
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Populated directory with files
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Starting Spring Integration Sequential File processing
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessor - Processing File: input/file_0.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Finished processing input/file_0.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessor - Processing File: input/file_1.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Finished processing input/file_1.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessor - Processing File: input/file_2.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Finished processing input/file_2.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessor - Processing File: input/file_3.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Finished processing input/file_3.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessor - Processing File: input/file_4.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Finished processing input/file_4.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest -
+
+#### Starting Concurrent processing test ####
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Populating directory with files
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Populated directory with files
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Starting Spring Integration Sequential File processing
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessor - Processing File: input/file_1.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Finished processing input/file_1.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessor - Processing File: input/file_0.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Finished processing input/file_0.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessor - Processing File: input/file_3.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Finished processing input/file_3.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessor - Processing File: input/file_4.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Finished processing input/file_4.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessor - Processing File: input/file_2.txt
+INFO : org.springframework.integration.samples.fileprocessing.FileProcessingTest - Finished processing input/file_2.txt unless you specify task-executor or introduce task-executor somewhere downstream you are fine.
\ No newline at end of file
diff --git a/cook-books/file-processing/src/main/java/org/springframework/integration/samples/fileprocessing/FileProcessor.java b/cook-books/file-processing/src/main/java/org/springframework/integration/samples/fileprocessing/FileProcessor.java
new file mode 100644
index 00000000..65bcbccb
--- /dev/null
+++ b/cook-books/file-processing/src/main/java/org/springframework/integration/samples/fileprocessing/FileProcessor.java
@@ -0,0 +1,24 @@
+/**
+ *
+ */
+package org.springframework.integration.samples.fileprocessing;
+
+import java.io.File;
+import java.util.Random;
+
+import org.apache.log4j.Logger;
+
+/**
+ * @author ozhurakousky
+ *
+ */
+public class FileProcessor {
+ private Random random = new Random();
+ private Logger logger = Logger.getLogger(FileProcessor.class);
+
+ public File process(File file) throws Exception{
+ Thread.sleep(random.nextInt(10)*500);
+ logger.info("Processing File: " + file);
+ return file;
+ }
+}
diff --git a/cook-books/file-processing/src/main/resources/META-INF/spring/integration/concurrentFileProcessing-config.xml b/cook-books/file-processing/src/main/resources/META-INF/spring/integration/concurrentFileProcessing-config.xml
new file mode 100644
index 00000000..f713cee7
--- /dev/null
+++ b/cook-books/file-processing/src/main/resources/META-INF/spring/integration/concurrentFileProcessing-config.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cook-books/file-processing/src/main/resources/META-INF/spring/integration/sequentialFileProcessing-config.xml b/cook-books/file-processing/src/main/resources/META-INF/spring/integration/sequentialFileProcessing-config.xml
new file mode 100644
index 00000000..fa30e74d
--- /dev/null
+++ b/cook-books/file-processing/src/main/resources/META-INF/spring/integration/sequentialFileProcessing-config.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cook-books/file-processing/src/test/java/org/springframework/integration/samples/fileprocessing/FileProcessingTest.java b/cook-books/file-processing/src/test/java/org/springframework/integration/samples/fileprocessing/FileProcessingTest.java
new file mode 100644
index 00000000..bddf2123
--- /dev/null
+++ b/cook-books/file-processing/src/test/java/org/springframework/integration/samples/fileprocessing/FileProcessingTest.java
@@ -0,0 +1,72 @@
+/**
+ *
+ */
+package org.springframework.integration.samples.fileprocessing;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+
+import org.apache.log4j.Logger;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.integration.core.PollableChannel;
+
+/**
+ * @author Oleg Zhurakousky
+ *
+ */
+public class FileProcessingTest {
+ private int fileCount = 5;
+ private Logger logger = Logger.getLogger(FileProcessingTest.class);
+
+ @Before
+ public void createDirectory(){
+ File directory = new File("input");
+ if (directory.exists()){
+ directory.delete();
+ }
+ directory.mkdir();
+ }
+
+ @Test
+ public void testSequentialFileProcessing() throws Exception {
+ logger.info("\n\n#### Starting Sequential processing test ####");
+ logger.info("Populating directory with files");
+ for (int i = 0; i < fileCount; i++) {
+ File file = new File("input/file_" + i + ".txt");
+ BufferedWriter out = new BufferedWriter(new FileWriter(file));
+ out.write("hello " + i);
+ out.close();
+ }
+ logger.info("Populated directory with files");
+ Thread.sleep(2000);
+ logger.info("Starting Spring Integration Sequential File processing");
+ ApplicationContext ac = new ClassPathXmlApplicationContext("META-INF/spring/integration/sequentialFileProcessing-config.xml");
+ PollableChannel filesOutChannel = ac.getBean("filesOutChannel", PollableChannel.class);
+ for (int i = 0; i < fileCount; i++) {
+ logger.info("Finished processing " + filesOutChannel.receive(10000).getPayload());
+ }
+ }
+ @Test
+ public void testConcurrentFileProcessing() throws Exception {
+ logger.info("\n\n#### Starting Concurrent processing test #### ");
+ logger.info("Populating directory with files");
+ for (int i = 0; i < fileCount; i++) {
+ File file = new File("input/file_" + i + ".txt");
+ BufferedWriter out = new BufferedWriter(new FileWriter(file));
+ out.write("hello " + i);
+ out.close();
+ }
+ logger.info("Populated directory with files");
+ Thread.sleep(2000);
+ logger.info("Starting Spring Integration Sequential File processing");
+ ApplicationContext ac = new ClassPathXmlApplicationContext("/META-INF/spring/integration/concurrentFileProcessing-config.xml");
+ PollableChannel filesOutChannel = ac.getBean("filesOutChannel", PollableChannel.class);
+ for (int i = 0; i < fileCount; i++) {
+ logger.info("Finished processing " + filesOutChannel.receive(10000).getPayload());
+ }
+ }
+}
diff --git a/cook-books/file-processing/src/test/resources/log4j.xml b/cook-books/file-processing/src/test/resources/log4j.xml
new file mode 100644
index 00000000..c89960fb
--- /dev/null
+++ b/cook-books/file-processing/src/test/resources/log4j.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/getting-started/file/.project b/getting-started/file/.project
index 16845f4e..8055c5c7 100644
--- a/getting-started/file/.project
+++ b/getting-started/file/.project
@@ -9,14 +9,20 @@
org.eclipse.jdt.core.javabuilder
-
+
org.maven.ide.eclipse.maven2Builder
+
+ org.springframework.ide.eclipse.core.springbuilder
+
+
+
+ org.springframework.ide.eclipse.core.springnature
org.maven.ide.eclipse.maven2Nature
org.eclipse.jdt.core.javanature
diff --git a/getting-started/file/.settings/com.springsource.sts.config.flow.prefs b/getting-started/file/.settings/com.springsource.sts.config.flow.prefs
new file mode 100644
index 00000000..b55096be
--- /dev/null
+++ b/getting-started/file/.settings/com.springsource.sts.config.flow.prefs
@@ -0,0 +1,5 @@
+#Fri Sep 17 19:47:07 EDT 2010
+//com.springsource.sts.config.flow.coordinates\:http\://www.springframework.org/schema/integration\:/file/src/main/resources/META-INF/spring/integration/concurrentFileProcessing-config.xml=\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+//com.springsource.sts.config.flow.coordinates\:http\://www.springframework.org/schema/integration\:/file/src/main/resources/META-INF/spring/integration/fileCopyDemo-file.xml=\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+//com.springsource.sts.config.flow.coordinates\:http\://www.springframework.org/schema/integration\:/file/src/main/resources/META-INF/spring/integration/sequentialFileProcessing-config.xml=\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+eclipse.preferences.version=1
diff --git a/getting-started/file/.settings/org.springframework.ide.eclipse.core.prefs b/getting-started/file/.settings/org.springframework.ide.eclipse.core.prefs
new file mode 100644
index 00000000..2075695c
--- /dev/null
+++ b/getting-started/file/.settings/org.springframework.ide.eclipse.core.prefs
@@ -0,0 +1,68 @@
+#Fri Sep 17 19:03:25 EDT 2010
+eclipse.preferences.version=1
+org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true
+org.springframework.ide.eclipse.core.builders.enable.beanmetadatabuilder=true
+org.springframework.ide.eclipse.core.builders.enable.osgibundleupdater=false
+org.springframework.ide.eclipse.core.enable.project.preferences=true
+org.springframework.ide.eclipse.core.validator.enable.com.springsource.server.ide.manifest.core.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.server.quickfix.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.core.springvalidator=false
+org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.applicationSymbolicNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.applicationVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleActivationPolicyRule-com.springsource.server.ide.manifest.core.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleActivatorRule-com.springsource.server.ide.manifest.core.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleManifestVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleSymbolicNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.exportPackageRule-com.springsource.server.ide.manifest.core.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.importRule-com.springsource.server.ide.manifest.core.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.parsingProblemsRule-com.springsource.server.ide.manifest.core.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.requireBundleRule-com.springsource.server.ide.manifest.core.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.AvoidDriverManagerDataSource-com.springsource.sts.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ImportElementsAtTopRulee-com.springsource.sts.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ParentBeanSpecifiesAbstractClassRule-com.springsource.sts.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.RefElementRule-com.springsource.sts.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.TooManyBeansInFileRule-com.springsource.sts.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UnnecessaryValueElementRule-com.springsource.sts.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UseBeanInheritance-com.springsource.sts.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.legacyxmlusage.jndiobjectfactory-com.springsource.sts.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importBundleVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importLibraryVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importPackageVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.requireBundleVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.autowire.autowire-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.toolAnnotation-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.core.springClasspath-org.springframework.ide.eclipse.core.springvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=false
diff --git a/getting-started/file/.springBeans b/getting-started/file/.springBeans
new file mode 100644
index 00000000..15608f30
--- /dev/null
+++ b/getting-started/file/.springBeans
@@ -0,0 +1,13 @@
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
diff --git a/getting-started/file/input/file_0.txt b/getting-started/file/input/file_0.txt
new file mode 100644
index 00000000..a3f6e274
--- /dev/null
+++ b/getting-started/file/input/file_0.txt
@@ -0,0 +1 @@
+hello 0
\ No newline at end of file
diff --git a/getting-started/file/input/file_1.txt b/getting-started/file/input/file_1.txt
new file mode 100644
index 00000000..a4f3ad55
--- /dev/null
+++ b/getting-started/file/input/file_1.txt
@@ -0,0 +1 @@
+hello 1
\ No newline at end of file
diff --git a/getting-started/file/input/file_2.txt b/getting-started/file/input/file_2.txt
new file mode 100644
index 00000000..b20684db
--- /dev/null
+++ b/getting-started/file/input/file_2.txt
@@ -0,0 +1 @@
+hello 2
\ No newline at end of file
diff --git a/getting-started/file/input/file_3.txt b/getting-started/file/input/file_3.txt
new file mode 100644
index 00000000..7059d70f
--- /dev/null
+++ b/getting-started/file/input/file_3.txt
@@ -0,0 +1 @@
+hello 3
\ No newline at end of file
diff --git a/getting-started/file/input/file_4.txt b/getting-started/file/input/file_4.txt
new file mode 100644
index 00000000..cd1c078e
--- /dev/null
+++ b/getting-started/file/input/file_4.txt
@@ -0,0 +1 @@
+hello 4
\ No newline at end of file