From e4c58060c3f3e8bce40c0f2289ad703060cefaf4 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Fri, 17 Sep 2010 21:06:09 -0400 Subject: [PATCH] INT-1380, added file-processing sample --- cook-books/file-processing/.classpath | 10 +++ cook-books/file-processing/.gitignore | 2 + cook-books/file-processing/.project | 29 ++++++++ .../com.springsource.sts.config.flow.prefs | 4 ++ .../.settings/org.eclipse.jdt.core.prefs | 13 ++++ .../.settings/org.maven.ide.eclipse.prefs | 9 +++ cook-books/file-processing/.springBeans | 13 ++++ cook-books/file-processing/pom.xml | 61 ++++++++++++++++ cook-books/file-processing/readme.txt | 51 +++++++++++++ .../samples/fileprocessing/FileProcessor.java | 24 +++++++ .../concurrentFileProcessing-config.xml | 27 +++++++ .../sequentialFileProcessing-config.xml | 26 +++++++ .../fileprocessing/FileProcessingTest.java | 72 +++++++++++++++++++ .../src/test/resources/log4j.xml | 32 +++++++++ getting-started/file/.project | 8 ++- .../com.springsource.sts.config.flow.prefs | 5 ++ ...org.springframework.ide.eclipse.core.prefs | 68 ++++++++++++++++++ getting-started/file/.springBeans | 13 ++++ getting-started/file/input/file_0.txt | 1 + getting-started/file/input/file_1.txt | 1 + getting-started/file/input/file_2.txt | 1 + getting-started/file/input/file_3.txt | 1 + getting-started/file/input/file_4.txt | 1 + 23 files changed, 471 insertions(+), 1 deletion(-) create mode 100644 cook-books/file-processing/.classpath create mode 100644 cook-books/file-processing/.gitignore create mode 100644 cook-books/file-processing/.project create mode 100644 cook-books/file-processing/.settings/com.springsource.sts.config.flow.prefs create mode 100644 cook-books/file-processing/.settings/org.eclipse.jdt.core.prefs create mode 100644 cook-books/file-processing/.settings/org.maven.ide.eclipse.prefs create mode 100644 cook-books/file-processing/.springBeans create mode 100644 cook-books/file-processing/pom.xml create mode 100644 cook-books/file-processing/readme.txt create mode 100644 cook-books/file-processing/src/main/java/org/springframework/integration/samples/fileprocessing/FileProcessor.java create mode 100644 cook-books/file-processing/src/main/resources/META-INF/spring/integration/concurrentFileProcessing-config.xml create mode 100644 cook-books/file-processing/src/main/resources/META-INF/spring/integration/sequentialFileProcessing-config.xml create mode 100644 cook-books/file-processing/src/test/java/org/springframework/integration/samples/fileprocessing/FileProcessingTest.java create mode 100644 cook-books/file-processing/src/test/resources/log4j.xml create mode 100644 getting-started/file/.settings/com.springsource.sts.config.flow.prefs create mode 100644 getting-started/file/.settings/org.springframework.ide.eclipse.core.prefs create mode 100644 getting-started/file/.springBeans create mode 100644 getting-started/file/input/file_0.txt create mode 100644 getting-started/file/input/file_1.txt create mode 100644 getting-started/file/input/file_2.txt create mode 100644 getting-started/file/input/file_3.txt create mode 100644 getting-started/file/input/file_4.txt 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