@Test public void testTransactionalRestartWithFooter() throws Exception { delegate.setFooterCallback(new FlatFileFooterCallback() { @Override public void writeFooter(Writer writer) throws IOException { writer.write("f"); } }); super.setUp(delegate); tested.open(executionContext); ResourcelessTransactionManager transactionManager = new ResourcelessTransactionManager(); new TransactionTemplate(transactionManager).execute(new WriterCallback(Arrays.asList("1", "2", "3"))); File part1 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(1)); assertTrue(part1.exists()); assertEquals("123f", readFile(part1)); new TransactionTemplate(transactionManager).execute(new WriterCallback(Arrays.asList("4"))); File part2 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(2)); assertTrue(part2.exists()); assertEquals("4", readFile(part2)); tested.update(executionContext); tested.close(); tested.open(executionContext); new TransactionTemplate(transactionManager).execute(new WriterCallback(Arrays.asList("5"))); assertEquals("45f", readFile(part2)); }
@Test public void testTransactionalMultiResourceWriteScenarioWithFooter() throws Exception { delegate.setFooterCallback(new FlatFileFooterCallback() { @Override public void writeFooter(Writer writer) throws IOException { writer.write("f"); } }); super.setUp(delegate); tested.open(executionContext); ResourcelessTransactionManager transactionManager = new ResourcelessTransactionManager(); new TransactionTemplate(transactionManager).execute(new WriterCallback(Arrays.asList("1", "2", "3"))); File part1 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(1)); assertTrue(part1.exists()); new TransactionTemplate(transactionManager).execute(new WriterCallback(Arrays.asList("4"))); File part2 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(2)); assertTrue(part2.exists()); tested.close(); assertEquals("123f", readFile(part1)); assertEquals("4f", readFile(part2)); }
@Test public void testBasicMultiResourceWriteScenario() throws Exception { super.setUp(delegate); tested.open(executionContext); tested.write(Arrays.asList("1", "2", "3")); File part1 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(1)); assertTrue(part1.exists()); assertEquals("123", readFile(part1)); tested.write(Arrays.asList("4")); File part2 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(2)); assertTrue(part2.exists()); assertEquals("4", readFile(part2)); tested.write(Arrays.asList("5")); assertEquals("45", readFile(part2)); tested.write(Arrays.asList("6", "7", "8", "9")); File part3 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(3)); assertTrue(part3.exists()); assertEquals("6789", readFile(part3)); }
@Test public void testRestart() throws Exception { super.setUp(delegate); tested.open(executionContext); tested.write(Arrays.asList("1", "2", "3")); File part1 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(1)); assertTrue(part1.exists()); assertEquals("123", readFile(part1)); tested.write(Arrays.asList("4")); File part2 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(2)); assertTrue(part2.exists()); assertEquals("4", readFile(part2)); tested.update(executionContext); tested.close(); tested.open(executionContext); tested.write(Arrays.asList("5")); assertEquals("45", readFile(part2)); tested.write(Arrays.asList("6", "7", "8", "9")); File part3 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(3)); assertTrue(part3.exists()); assertEquals("6789", readFile(part3)); }
@Test public void testMultiResourceWriteScenarioWithFooter() throws Exception { delegate.setFooterCallback(new FlatFileFooterCallback() { @Override public void writeFooter(Writer writer) throws IOException { writer.write("f"); } }); super.setUp(delegate); tested.open(executionContext); tested.write(Arrays.asList("1", "2", "3")); File part1 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(1)); assertTrue(part1.exists()); tested.write(Arrays.asList("4")); File part2 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(2)); assertTrue(part2.exists()); tested.close(); assertEquals("123f", readFile(part1)); assertEquals("4f", readFile(part2)); }
@Test public void testBasicDefaultSuffixCreator() throws Exception { SimpleResourceSuffixCreator simpleResourceSuffixCreator = new SimpleResourceSuffixCreator(); this.writer = new MultiResourceItemWriterBuilder<String>().delegate(this.delegate) .resource(new FileSystemResource(this.file)).itemCountLimitPerResource(2).saveState(true).name("foo") .build(); this.writer.open(this.executionContext); this.writer.write(Arrays.asList("1", "2", "3")); File part1 = new File(this.file.getAbsolutePath() + simpleResourceSuffixCreator.getSuffix(1)); assertTrue(part1.exists()); assertEquals("123", readFile(part1)); this.writer.write(Arrays.asList("4")); File part2 = new File(this.file.getAbsolutePath() + simpleResourceSuffixCreator.getSuffix(2)); assertTrue(part2.exists()); assertEquals("4", readFile(part2)); }
@Test public void multiResourceWritingWithRestart() throws Exception { super.setUp(delegate); tested.open(executionContext); tested.write(Arrays.asList("1", "2", "3")); File part1 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(1)); assertTrue(part1.exists()); tested.write(Arrays.asList("4")); File part2 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(2)); assertTrue(part2.exists()); tested.update(executionContext); tested.close(); assertEquals(xmlDocStart + "<prefix:4/>" + xmlDocEnd, readFile(part2)); assertEquals(xmlDocStart + "<prefix:1/><prefix:2/><prefix:3/>" + xmlDocEnd, readFile(part1)); tested.open(executionContext); tested.write(Arrays.asList("5")); tested.write(Arrays.asList("6", "7", "8", "9")); File part3 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(3)); assertTrue(part3.exists()); tested.close(); assertEquals(xmlDocStart + "<prefix:4/><prefix:5/>" + xmlDocEnd, readFile(part2)); assertEquals(xmlDocStart + "<prefix:6/><prefix:7/><prefix:8/><prefix:9/>" + xmlDocEnd, readFile(part3)); }
@Test public void testRestartWithFooter() throws Exception { delegate.setFooterCallback(new FlatFileFooterCallback() { @Override public void writeFooter(Writer writer) throws IOException { writer.write("f"); } }); super.setUp(delegate); tested.open(executionContext); tested.write(Arrays.asList("1", "2", "3")); File part1 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(1)); assertTrue(part1.exists()); assertEquals("123f", readFile(part1)); tested.write(Arrays.asList("4")); File part2 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(2)); assertTrue(part2.exists()); assertEquals("4", readFile(part2)); tested.update(executionContext); tested.close(); tested.open(executionContext); tested.write(Arrays.asList("5")); assertEquals("45f", readFile(part2)); tested.write(Arrays.asList("6", "7", "8", "9")); File part3 = new File(file.getAbsolutePath() + suffixCreator.getSuffix(3)); assertTrue(part3.exists()); assertEquals("6789f", readFile(part3)); }
@Test public void testRestart() throws Exception { this.writer = new MultiResourceItemWriterBuilder<String>().delegate(this.delegate) .resource(new FileSystemResource(this.file)).resourceSuffixCreator(this.suffixCreator) .itemCountLimitPerResource(2).saveState(true).name("foo").build(); this.writer.write(Arrays.asList("1", "2", "3")); File part1 = new File(this.file.getAbsolutePath() + this.suffixCreator.getSuffix(1)); assertTrue(part1.exists()); assertEquals("123", readFile(part1)); this.writer.write(Arrays.asList("4")); File part2 = new File(this.file.getAbsolutePath() + this.suffixCreator.getSuffix(2)); assertTrue(part2.exists()); assertEquals("4", readFile(part2)); this.writer.update(this.executionContext); this.writer.close(); this.writer.open(this.executionContext); this.writer.write(Arrays.asList("5")); assertEquals("45", readFile(part2)); this.writer.write(Arrays.asList("6", "7", "8", "9")); File part3 = new File(this.file.getAbsolutePath() + this.suffixCreator.getSuffix(3)); assertTrue(part3.exists()); assertEquals("6789", readFile(part3)); }
@Test public void testBasicMultiResourceWriteScenario() throws Exception { this.writer = new MultiResourceItemWriterBuilder<String>().delegate(this.delegate) .resource(new FileSystemResource(this.file)).resourceSuffixCreator(this.suffixCreator) .itemCountLimitPerResource(2).saveState(true).name("foo").build(); this.writer.open(this.executionContext); this.writer.write(Arrays.asList("1", "2", "3")); File part1 = new File(this.file.getAbsolutePath() + this.suffixCreator.getSuffix(1)); assertTrue(part1.exists()); assertEquals("123", readFile(part1)); this.writer.write(Arrays.asList("4")); File part2 = new File(this.file.getAbsolutePath() + this.suffixCreator.getSuffix(2)); assertTrue(part2.exists()); assertEquals("4", readFile(part2)); this.writer.write(Arrays.asList("5")); assertEquals("45", readFile(part2)); this.writer.write(Arrays.asList("6", "7", "8", "9")); File part3 = new File(this.file.getAbsolutePath() + this.suffixCreator.getSuffix(3)); assertTrue(part3.exists()); assertEquals("6789", readFile(part3)); }
@Test public void testRestartNoSaveState() throws Exception { this.writer = new MultiResourceItemWriterBuilder<String>().delegate(this.delegate) .resource(new FileSystemResource(this.file)).resourceSuffixCreator(this.suffixCreator) .itemCountLimitPerResource(2).saveState(false).name("foo").build(); this.writer.write(Arrays.asList("1", "2", "3")); File part1 = new File(this.file.getAbsolutePath() + this.suffixCreator.getSuffix(1)); assertTrue(part1.exists()); assertEquals("123", readFile(part1)); this.writer.write(Arrays.asList("4")); File part2 = new File(this.file.getAbsolutePath() + this.suffixCreator.getSuffix(2)); assertTrue(part2.exists()); assertEquals("4", readFile(part2)); this.writer.update(this.executionContext); this.writer.close(); this.writer.open(this.executionContext); this.writer.write(Arrays.asList("5")); assertEquals("4", readFile(part2)); this.writer.write(Arrays.asList("6", "7", "8", "9")); File part3 = new File(this.file.getAbsolutePath() + this.suffixCreator.getSuffix(1)); assertTrue(part3.exists()); assertEquals("56789", readFile(part3)); }
@Test public void testUpdateAfterDelegateClose() throws Exception { super.setUp(delegate); tested.open(executionContext); tested.update(executionContext); assertEquals(0, executionContext.getInt(tested.getExecutionContextKey("resource.item.count"))); assertEquals(1, executionContext.getInt(tested.getExecutionContextKey("resource.index"))); tested.write(Arrays.asList("1", "2", "3")); tested.update(executionContext); assertEquals(0, executionContext.getInt(tested.getExecutionContextKey("resource.item.count"))); assertEquals(2, executionContext.getInt(tested.getExecutionContextKey("resource.index"))); }