@Test @SuppressWarnings("unchecked") public void testProcessVarargs() throws Exception { List<Object> data = Collections.singletonList(new Object()); List<ItemWriter<? super Object>> writers = new ArrayList<>(); ItemWriter<? super Object> writer1 = mock(ItemWriter.class); writers.add(writer1); ItemWriter<? super Object> writer2 = mock(ItemWriter.class); writers.add(writer2); CompositeItemWriter<Object> itemWriter = new CompositeItemWriterBuilder<>().delegates(writer1, writer2).build(); itemWriter.write(data); for (ItemWriter<? super Object> writer : writers) { verify(writer).write(data); } }
/** * Regular usage scenario. All injected processors should be called. */ @Test public void testProcess() throws Exception { final int NUMBER_OF_WRITERS = 10; List<Object> data = Collections.singletonList(new Object()); List<ItemWriter<? super Object>> writers = new ArrayList<>(); for (int i = 0; i < NUMBER_OF_WRITERS; i++) { @SuppressWarnings("unchecked") ItemWriter<? super Object> writer = mock(ItemWriter.class); writer.write(data); writers.add(writer); } itemWriter.setDelegates(writers); itemWriter.write(data); }
@Test @SuppressWarnings("unchecked") public void testProcess() throws Exception { final int NUMBER_OF_WRITERS = 10; List<Object> data = Collections.singletonList(new Object()); List<ItemWriter<? super Object>> writers = new ArrayList<>(); for (int i = 0; i < NUMBER_OF_WRITERS; i++) { ItemWriter<? super Object> writer = mock(ItemWriter.class); writers.add(writer); } CompositeItemWriter<Object> itemWriter = new CompositeItemWriterBuilder<>().delegates(writers).build(); itemWriter.write(data); for (ItemWriter<? super Object> writer : writers) { verify(writer).write(data); } }
private void doTestItemStream(boolean expectOpen) throws Exception { @SuppressWarnings("unchecked") ItemStreamWriter<? super Object> writer = mock(ItemStreamWriter.class); List<Object> data = Collections.singletonList(new Object()); ExecutionContext executionContext = new ExecutionContext(); if (expectOpen) { writer.open(executionContext); } writer.write(data); List<ItemWriter<? super Object>> writers = new ArrayList<>(); writers.add(writer); itemWriter.setDelegates(writers); if (expectOpen) { itemWriter.open(executionContext); } itemWriter.write(data); }
@SuppressWarnings("unchecked") private void ignoreItemStream(boolean ignoreItemStream) throws Exception { ItemStreamWriter<? super Object> writer = mock(ItemStreamWriter.class); List<Object> data = Collections.singletonList(new Object()); ExecutionContext executionContext = new ExecutionContext(); List<ItemWriter<? super Object>> writers = new ArrayList<>(); writers.add(writer); CompositeItemWriter<Object> itemWriter = new CompositeItemWriterBuilder<>().delegates(writers) .ignoreItemStream(ignoreItemStream).build(); itemWriter.open(executionContext); int openCount = 0; if (!ignoreItemStream) { openCount = 1; } // If user has set ignoreItemStream to true, then it is expected that they opened the delegate writer. verify(writer, times(openCount)).open(executionContext); itemWriter.write(data); }