1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package de.kaiserpfalzedv.commons.rest.workflow;
19
20 import java.util.Optional;
21
22 import de.kaiserpfalzedv.commons.api.workflow.WorkflowInfo;
23 import de.kaiserpfalzedv.commons.core.workflow.WorkflowInfoImpl;
24 import jakarta.enterprise.inject.Produces;
25 import jakarta.inject.Singleton;
26 import jakarta.validation.constraints.NotNull;
27
28
29
30
31
32
33
34 @Singleton
35 public class WorkflowProvider {
36 private final ThreadLocal<WorkflowInfo> workflowRepository = new WorkflowInfoThreadLocal();
37
38 @Produces
39 public Optional<WorkflowInfo> getWorkflowInfo() {
40 return Optional.ofNullable(workflowRepository.get());
41 }
42
43 public void registerWorkflowInfo(@NotNull final WorkflowInfo context) {
44 workflowRepository.set(context);
45 }
46
47 public void unregisterWorkflowInfo() {
48 workflowRepository.remove();
49 }
50
51
52
53
54 private static class WorkflowInfoThreadLocal extends ThreadLocal<WorkflowInfo> {
55 @Override
56 public WorkflowInfoImpl initialValue() {
57 return WorkflowInfoImpl.builder().build();
58 }
59 }
60 }