Skip to content

Commit e5c1686

Browse files
committed
Moved creation of iterable upfront in the constructor to be executed just one time
1 parent dec76fe commit e5c1686

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

logstash-core/src/main/java/org/logstash/common/BufferedTokenizer.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
public class BufferedTokenizer {
77

88
private final DataSplitter dataSplitter;
9+
private final Iterable<String> iterable;
910
private Integer sizeLimit;
1011

1112
static abstract class IteratorDecorator<T> implements Iterator<T> {
@@ -99,6 +100,7 @@ public BufferedTokenizer() {
99100

100101
public BufferedTokenizer(String separator) {
101102
this.dataSplitter = new DataSplitter(separator);
103+
this.iterable = setupIterable();
102104
}
103105

104106
public BufferedTokenizer(String separator, int sizeLimit) {
@@ -108,17 +110,22 @@ public BufferedTokenizer(String separator, int sizeLimit) {
108110

109111
this.dataSplitter = new DataSplitter(separator);
110112
this.sizeLimit = sizeLimit;
113+
this.iterable = setupIterable();
111114
}
112115

113116
public Iterable<String> extract(String data) {
114117
dataSplitter.append(data);
115118

119+
return iterable;
120+
}
121+
122+
private Iterable<String> setupIterable() {
116123
return new Iterable<String>() {
117124
@Override
118125
public Iterator<String> iterator() {
119126
Iterator<String> returnedIterator = dataSplitter;
120127
if (sizeLimit != null) {
121-
returnedIterator = new ValueLimitIteratorDecorator(returnedIterator, sizeLimit);
128+
returnedIterator = new ValueLimitIteratorDecorator(returnedIterator, sizeLimit);
122129
}
123130
return returnedIterator;
124131
}

0 commit comments

Comments
 (0)