Skip to content

Commit 728a894

Browse files
committed
Fixes gone reference handling
1 parent 8cb7783 commit 728a894

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

exist-core/src/main/java/org/exist/collections/triggers/TriggerStatePerThread.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.util.Iterator;
3434
import java.util.Map;
3535
import java.util.Objects;
36+
import java.util.Optional;
3637
import java.util.WeakHashMap;
3738
import java.util.function.BiConsumer;
3839
import java.util.function.Consumer;
@@ -178,7 +179,7 @@ private static TriggerStates initStates(final Txn txn) {
178179
return new TriggerStates();
179180
}
180181

181-
public record TransactionCleanUp(Txn txn, Consumer<Txn> consumer) implements TxnListener {
182+
public record TransactionCleanUp(Txn txn, Consumer<Txn> consumer) implements TxnListener {
182183
@Override
183184
public void commit() {
184185
consumer.accept(txn);
@@ -195,33 +196,37 @@ public TriggerStates() {
195196
super(new ArrayDeque<>());
196197
}
197198

199+
Optional<Deque<TriggerState>> states() {
200+
return Optional.ofNullable(get());
201+
}
202+
198203
public Iterator<TriggerState> descendingIterator() {
199-
return get().descendingIterator();
204+
return states().map(Deque::descendingIterator).orElseGet(Collections::emptyIterator);
200205
}
201206

202207
public boolean isEmpty() {
203-
return get().isEmpty();
208+
return states().map(Deque::isEmpty).orElse(true);
204209
}
205210

206211
public int size() {
207-
return get().size();
212+
return states().map(Deque::size).orElse(0);
208213
}
209214

210215
public Iterator<TriggerState> iterator() {
211-
return get().iterator();
216+
return states().map(Deque::iterator).orElseGet(Collections::emptyIterator);
212217
}
213218

214219
public TriggerState peekFirst() {
215-
return get().peekFirst();
220+
return states().map(Deque::peekFirst).orElse(null);
216221
}
217222

218223
public void addFirst(TriggerState newState) {
219-
get().addFirst(newState);
224+
states().ifPresent(states -> states.addFirst(newState));
220225
}
221226
}
222227

223228
public record TriggerState(Trigger trigger, TriggerPhase triggerPhase, TriggerEvent triggerEvent, XmldbURI src,
224-
@Nullable XmldbURI dst, boolean possiblyCyclic) {
229+
@Nullable XmldbURI dst, boolean possiblyCyclic) {
225230

226231
@Override
227232
public String toString() {

0 commit comments

Comments
 (0)