EMMA Coverage Report (generated Fri Aug 21 15:59:46 BST 2009)
[all classes][org.springframework.batch.core.step.item]

COVERAGE SUMMARY FOR SOURCE FILE [OffsetItemReader.java]

nameclass, %method, %block, %line, %
OffsetItemReader.java0%   (0/1)0%   (0/6)0%   (0/50)0%   (0/14)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class OffsetItemReader0%   (0/1)0%   (0/6)0%   (0/50)0%   (0/14)
<static initializer> 0%   (0/1)0%   (0/11)0%   (0/2)
OffsetItemReader (ItemReader): void 0%   (0/1)0%   (0/6)0%   (0/3)
close (): void 0%   (0/1)0%   (0/1)0%   (0/1)
open (ExecutionContext): void 0%   (0/1)0%   (0/7)0%   (0/2)
read (): Object 0%   (0/1)0%   (0/19)0%   (0/4)
update (ExecutionContext): void 0%   (0/1)0%   (0/6)0%   (0/2)

1package org.springframework.batch.core.step.item;
2 
3import org.springframework.batch.item.ExecutionContext;
4import org.springframework.batch.item.ItemReader;
5import org.springframework.batch.item.ItemStream;
6import org.springframework.batch.item.ItemStreamException;
7import org.springframework.batch.item.ParseException;
8import org.springframework.batch.item.UnexpectedInputException;
9 
10/**
11 * Convenience wrapper for an ItemReader that keeps track of how many items
12 * were successfully processed.
13 */
14class OffsetItemReader<T> implements ItemReader<T>, ItemStream {
15 
16        private static final String OFFSET_KEY = FaultTolerantStepFactoryBean.class.getName()+".OFFSET_KEY";
17        private final ItemReader<? extends T> itemReader;
18        private int offset;
19 
20        /**
21         * @param itemReader
22         */
23        public OffsetItemReader(ItemReader<? extends T> itemReader) {
24                this.itemReader = itemReader;
25        }
26 
27        public T read() throws Exception, UnexpectedInputException, ParseException {
28                for (int i=0; i<offset; i++) {
29                        // Discard items that are already processed 
30                        itemReader.read();
31                }
32                offset = 0;
33                return itemReader.read();
34        }
35 
36        /**
37         * {@inheritDoc}
38         */
39        public void close() throws ItemStreamException {
40        }
41 
42        /**
43         * {@inheritDoc}
44         */
45        public void open(ExecutionContext executionContext) throws ItemStreamException {
46                offset = executionContext.getInt(OFFSET_KEY, 0);
47        }
48 
49        /**
50         * {@inheritDoc}
51         */
52        public void update(ExecutionContext executionContext) throws ItemStreamException {
53                 executionContext.putInt(OFFSET_KEY, offset);
54        }
55 
56}

[all classes][org.springframework.batch.core.step.item]
EMMA 2.0.5312 (C) Vladimir Roubtsov