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); }