diff --git a/xtraplatform-features/src/main/java/de/ii/xtraplatform/features/domain/transform/FeatureEventBuffer.java b/xtraplatform-features/src/main/java/de/ii/xtraplatform/features/domain/transform/FeatureEventBuffer.java index 61e1f8fa5..7c0273113 100644 --- a/xtraplatform-features/src/main/java/de/ii/xtraplatform/features/domain/transform/FeatureEventBuffer.java +++ b/xtraplatform-features/src/main/java/de/ii/xtraplatform/features/domain/transform/FeatureEventBuffer.java @@ -17,6 +17,7 @@ import de.ii.xtraplatform.features.domain.SchemaMappingBase; import de.ii.xtraplatform.geometries.domain.GeometryType; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; @@ -34,7 +35,7 @@ public class FeatureEventBuffer< private final FeatureTokenEmitter2 bufferIn; private final FeatureTokenReader bufferOut; - private final Vector events; + private final int[] events; private final Vector> enclosings; private final Map mappings; private boolean doBuffer; @@ -48,7 +49,6 @@ public FeatureEventBuffer( this.buffer = new ArrayList<>(); this.bufferIn = (FeatureTokenEmitter2) (this::append); this.bufferOut = new FeatureTokenReader<>(downstream, context); - this.events = new Vector<>(); this.enclosings = new Vector<>(); this.mappings = mappings; @@ -63,7 +63,7 @@ public FeatureEventBuffer( .orElseThrow() * 2 + 2; - events.setSize(maxEvents); + this.events = new int[maxEvents]; enclosings.setSize(maxEvents); } @@ -89,7 +89,7 @@ public void next(int pos, List enclosing) { * @return first index for event position in buffer */ private int start(int pos) { - return events.get(pos * 2); + return events[pos * 2]; } /** @@ -97,7 +97,7 @@ private int start(int pos) { * @return length for event position in buffer */ private int length(int pos) { - return events.get((pos * 2) + 1); + return events[(pos * 2) + 1]; } /** @@ -132,12 +132,12 @@ private void plus(int pos, int delta) { private void plus(int pos, int delta, boolean propagate) { // increase length of pos int lenPos = (pos * 2) + 1; - events.set(lenPos, events.get(lenPos) + delta); + events[lenPos] += delta; // increase start of following pos if (propagate) { - for (int i = (pos + 1) * 2; i < events.size(); i += 2) { - events.set(i, events.get(i) + delta); + for (int i = (pos + 1) * 2; i < events.length; i += 2) { + events[i] += delta; } } } @@ -167,7 +167,7 @@ void append(Object token) { } void reset(String type) { - Collections.fill(events, 0); + Arrays.fill(events, 0); if (!Objects.equals(lastType, type)) { Collections.fill(enclosings, List.of());