1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.forgerock.selfservice.json;
17
18 import java.util.HashMap;
19 import java.util.Map;
20
21 import org.forgerock.json.JsonValue;
22 import org.forgerock.selfservice.core.AnonymousProcessService;
23 import org.forgerock.selfservice.core.ProcessStore;
24 import org.forgerock.selfservice.core.ProgressStageProvider;
25 import org.forgerock.selfservice.core.config.ProcessInstanceConfig;
26 import org.forgerock.selfservice.core.config.StageConfig;
27 import org.forgerock.selfservice.core.snapshot.SnapshotTokenHandlerFactory;
28 import org.forgerock.util.Reject;
29
30
31
32
33
34
35 public final class JsonAnonymousProcessServiceBuilder {
36
37 private ClassLoader classLoader = getClass().getClassLoader();
38 private Map<String, Class<? extends StageConfig>> stageConfigMappings = new HashMap<>();
39 private JsonValue jsonConfig;
40 private ProgressStageProvider progressStageProvider;
41 private SnapshotTokenHandlerFactory tokenHandlerFactory;
42 private ProcessStore processStore;
43
44 private JsonAnonymousProcessServiceBuilder() {
45
46 }
47
48
49
50
51
52
53 public static JsonAnonymousProcessServiceBuilder newBuilder() {
54 return new JsonAnonymousProcessServiceBuilder();
55 }
56
57
58
59
60
61
62
63 public JsonAnonymousProcessServiceBuilder withClassLoader(ClassLoader classLoader) {
64 this.classLoader = classLoader;
65 return this;
66 }
67
68
69
70
71
72
73
74
75 public JsonAnonymousProcessServiceBuilder withStageConfigMapping(String name, Class<? extends StageConfig> type) {
76 this.stageConfigMappings.put(name, type);
77 return this;
78 }
79
80
81
82
83
84
85
86 public JsonAnonymousProcessServiceBuilder withJsonConfig(JsonValue jsonConfig) {
87 this.jsonConfig = jsonConfig;
88 return this;
89 }
90
91
92
93
94
95
96
97 public JsonAnonymousProcessServiceBuilder withProgressStageProvider(ProgressStageProvider progressStageProvider) {
98 this.progressStageProvider = progressStageProvider;
99 return this;
100 }
101
102
103
104
105
106
107
108 public JsonAnonymousProcessServiceBuilder withTokenHandlerFactory(SnapshotTokenHandlerFactory tokenHandlerFactory) {
109 this.tokenHandlerFactory = tokenHandlerFactory;
110 return this;
111 }
112
113
114
115
116
117
118
119 public JsonAnonymousProcessServiceBuilder withProcessStore(ProcessStore processStore) {
120 this.processStore = processStore;
121 return this;
122 }
123
124
125
126
127
128
129 public AnonymousProcessService build() {
130 Reject.ifNull(classLoader, jsonConfig, progressStageProvider, tokenHandlerFactory, processStore);
131 ProcessInstanceConfig config = new JsonConfig(classLoader, stageConfigMappings)
132 .buildProcessInstanceConfig(jsonConfig);
133 Reject.ifNull(config.getStageConfigs(), config.getSnapshotTokenConfig(), config.getStorageType());
134 Reject.ifTrue(config.getStageConfigs().isEmpty());
135 return new AnonymousProcessService(config, progressStageProvider, tokenHandlerFactory, processStore,
136 classLoader);
137 }
138 }