33
33
import java .util .Iterator ;
34
34
import java .util .Map ;
35
35
import java .util .Objects ;
36
+ import java .util .Optional ;
36
37
import java .util .WeakHashMap ;
37
38
import java .util .function .BiConsumer ;
38
39
import java .util .function .Consumer ;
@@ -178,7 +179,7 @@ private static TriggerStates initStates(final Txn txn) {
178
179
return new TriggerStates ();
179
180
}
180
181
181
- public record TransactionCleanUp (Txn txn , Consumer <Txn > consumer ) implements TxnListener {
182
+ public record TransactionCleanUp (Txn txn , Consumer <Txn > consumer ) implements TxnListener {
182
183
@ Override
183
184
public void commit () {
184
185
consumer .accept (txn );
@@ -195,33 +196,37 @@ public TriggerStates() {
195
196
super (new ArrayDeque <>());
196
197
}
197
198
199
+ Optional <Deque <TriggerState >> states () {
200
+ return Optional .ofNullable (get ());
201
+ }
202
+
198
203
public Iterator <TriggerState > descendingIterator () {
199
- return get ().descendingIterator ( );
204
+ return states ().map ( Deque :: descendingIterator ). orElseGet ( Collections :: emptyIterator );
200
205
}
201
206
202
207
public boolean isEmpty () {
203
- return get ().isEmpty ( );
208
+ return states ().map ( Deque :: isEmpty ). orElse ( true );
204
209
}
205
210
206
211
public int size () {
207
- return get ().size ( );
212
+ return states ().map ( Deque :: size ). orElse ( 0 );
208
213
}
209
214
210
215
public Iterator <TriggerState > iterator () {
211
- return get ().iterator ( );
216
+ return states ().map ( Deque :: iterator ). orElseGet ( Collections :: emptyIterator );
212
217
}
213
218
214
219
public TriggerState peekFirst () {
215
- return get ().peekFirst ( );
220
+ return states ().map ( Deque :: peekFirst ). orElse ( null );
216
221
}
217
222
218
223
public void addFirst (TriggerState newState ) {
219
- get ().addFirst (newState );
224
+ states ().ifPresent ( states -> states . addFirst (newState ) );
220
225
}
221
226
}
222
227
223
228
public record TriggerState (Trigger trigger , TriggerPhase triggerPhase , TriggerEvent triggerEvent , XmldbURI src ,
224
- @ Nullable XmldbURI dst , boolean possiblyCyclic ) {
229
+ @ Nullable XmldbURI dst , boolean possiblyCyclic ) {
225
230
226
231
@ Override
227
232
public String toString () {
0 commit comments