File tree Expand file tree Collapse file tree 7 files changed +33
-14
lines changed
core/src/main/java/org/sterl/spring/persistent_tasks Expand file tree Collapse file tree 7 files changed +33
-14
lines changed Original file line number Diff line number Diff line change 11# Changelog
22
3+ ## v1.4.1 - (2025-01-02)
4+
5+ - Added state to the TriggerLifeCycleEvent
6+ - @Transactional annotation is taken from the method first
7+
38## v1.4.0 - (2025-01-02)
49
510- @Transactional Annotation support
Original file line number Diff line number Diff line change 22
33import java .io .Serializable ;
44
5+ import org .springframework .lang .Nullable ;
6+
57/**
68 * A Spring persistent task whose state is saved in a {@link Trigger}.
79 *
1214 */
1315@ FunctionalInterface
1416public interface PersistentTask <T extends Serializable > {
15- void accept (T state );
17+ void accept (@ Nullable T state );
1618
1719 default RetryStrategy retryStrategy () {
1820 return RetryStrategy .THREE_RETRIES ;
Original file line number Diff line number Diff line change @@ -81,7 +81,8 @@ public Optional<TriggerEntity> cancelTask(TriggerKey id) {
8181 .findByKey (id ) //
8282 .map (t -> {
8383 t .cancel ();
84- publisher .publishEvent (new TriggerCanceledEvent (t ));
84+ publisher .publishEvent (new TriggerCanceledEvent (t ,
85+ stateSerializer .deserializeOrNull (t .getData ().getState ())));
8586 triggerRepository .delete (t );
8687 return t ;
8788 });
Original file line number Diff line number Diff line change 77import java .io .ObjectOutputStream ;
88import java .io .Serializable ;
99
10+ import lombok .extern .slf4j .Slf4j ;
11+
12+ @ Slf4j
1013public class StateSerializer {
1114
1215 public byte [] serialize (final Serializable obj ) {
@@ -36,4 +39,13 @@ public Serializable deserialize(byte[] bytes) {
3639 throw new RuntimeException ("Failed to deserialize state of length " + bytes .length , ex );
3740 }
3841 }
42+
43+ public Serializable deserializeOrNull (byte [] bytes ) {
44+ try {
45+ return deserialize (bytes );
46+ } catch (Exception e ) {
47+ log .error ("Failed to deserialize bytes" , e );
48+ return null ;
49+ }
50+ }
3951}
Original file line number Diff line number Diff line change 44
55import org .sterl .spring .persistent_tasks .trigger .model .TriggerEntity ;
66
7- public record TriggerCanceledEvent (TriggerEntity trigger ) implements TriggerLifeCycleEvent {
8-
9- /**
10- * No state on a cancel event
11- */
12- public Serializable state () {
13- return null ;
14- }
7+ public record TriggerCanceledEvent (TriggerEntity trigger , Serializable state ) implements TriggerLifeCycleEvent {
158}
Original file line number Diff line number Diff line change 22
33import java .io .Serializable ;
44
5+ import org .springframework .lang .NonNull ;
6+ import org .springframework .lang .Nullable ;
7+ import org .sterl .spring .persistent_tasks .api .TriggerKey ;
58import org .sterl .spring .persistent_tasks .trigger .model .TriggerEntity ;
69
710/**
811 * Tag any events which are fired in case something changes on a trigger
912 */
1013public interface TriggerLifeCycleEvent {
14+ default TriggerKey key () {
15+ return trigger ().getKey ();
16+ }
17+ @ NonNull
1118 TriggerEntity trigger ();
19+ @ Nullable
1220 Serializable state ();
1321}
Original file line number Diff line number Diff line change @@ -55,14 +55,12 @@ public class TriggerEntity implements HasTriggerData {
5555 private OffsetDateTime lastPing ;
5656
5757 public TriggerEntity (TriggerKey key ) {
58- if (this .data == null )
59- this .data = new TriggerData ();
58+ if (this .data == null ) this .data = new TriggerData ();
6059 this .data .setKey (key );
6160 }
6261
6362 public TriggerKey getKey () {
64- if (data == null )
65- return null ;
63+ if (data == null ) return null ;
6664 return data .getKey ();
6765 }
6866
You can’t perform that action at this time.
0 commit comments