6
6
public class BufferedTokenizer {
7
7
8
8
private final DataSplitter dataSplitter ;
9
+ private final Iterable <String > iterable ;
9
10
private Integer sizeLimit ;
10
11
11
12
static abstract class IteratorDecorator <T > implements Iterator <T > {
@@ -99,6 +100,7 @@ public BufferedTokenizer() {
99
100
100
101
public BufferedTokenizer (String separator ) {
101
102
this .dataSplitter = new DataSplitter (separator );
103
+ this .iterable = setupIterable ();
102
104
}
103
105
104
106
public BufferedTokenizer (String separator , int sizeLimit ) {
@@ -108,17 +110,22 @@ public BufferedTokenizer(String separator, int sizeLimit) {
108
110
109
111
this .dataSplitter = new DataSplitter (separator );
110
112
this .sizeLimit = sizeLimit ;
113
+ this .iterable = setupIterable ();
111
114
}
112
115
113
116
public Iterable <String > extract (String data ) {
114
117
dataSplitter .append (data );
115
118
119
+ return iterable ;
120
+ }
121
+
122
+ private Iterable <String > setupIterable () {
116
123
return new Iterable <String >() {
117
124
@ Override
118
125
public Iterator <String > iterator () {
119
126
Iterator <String > returnedIterator = dataSplitter ;
120
127
if (sizeLimit != null ) {
121
- returnedIterator = new ValueLimitIteratorDecorator (returnedIterator , sizeLimit );
128
+ returnedIterator = new ValueLimitIteratorDecorator (returnedIterator , sizeLimit );
122
129
}
123
130
return returnedIterator ;
124
131
}
0 commit comments