Skip to content

Commit 0466ee6

Browse files
committed
Added state to the TriggerLifeCycleEvent
1 parent afb5dc4 commit 0466ee6

File tree

7 files changed

+33
-14
lines changed

7 files changed

+33
-14
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
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

core/src/main/java/org/sterl/spring/persistent_tasks/api/PersistentTask.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import 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
*
@@ -12,7 +14,7 @@
1214
*/
1315
@FunctionalInterface
1416
public 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;

core/src/main/java/org/sterl/spring/persistent_tasks/trigger/component/EditTriggerComponent.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff 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
});

core/src/main/java/org/sterl/spring/persistent_tasks/trigger/component/StateSerializer.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
import java.io.ObjectOutputStream;
88
import java.io.Serializable;
99

10+
import lombok.extern.slf4j.Slf4j;
11+
12+
@Slf4j
1013
public 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
}

core/src/main/java/org/sterl/spring/persistent_tasks/trigger/event/TriggerCanceledEvent.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,5 @@
44

55
import 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
}

core/src/main/java/org/sterl/spring/persistent_tasks/trigger/event/TriggerLifeCycleEvent.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,20 @@
22

33
import 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;
58
import 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
*/
1013
public interface TriggerLifeCycleEvent {
14+
default TriggerKey key() {
15+
return trigger().getKey();
16+
}
17+
@NonNull
1118
TriggerEntity trigger();
19+
@Nullable
1220
Serializable state();
1321
}

core/src/main/java/org/sterl/spring/persistent_tasks/trigger/model/TriggerEntity.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)