Skip to content

Commit 8a61e3c

Browse files
authored
update switch state required and remove writing empty arrays to json/yaml (#201)
Signed-off-by: Tihomir Surdilovic <[email protected]>
1 parent 55bdeb8 commit 8a61e3c

File tree

3 files changed

+67
-3
lines changed

3 files changed

+67
-3
lines changed

api/src/main/java/io/serverlessworkflow/api/mapper/BaseObjectMapper.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
*/
1616
package io.serverlessworkflow.api.mapper;
1717

18+
import com.fasterxml.jackson.annotation.JsonInclude;
1819
import com.fasterxml.jackson.core.JsonFactory;
1920
import com.fasterxml.jackson.databind.ObjectMapper;
2021
import com.fasterxml.jackson.databind.SerializationFeature;
2122
import io.serverlessworkflow.api.interfaces.WorkflowPropertySource;
23+
import java.util.Map;
2224

2325
public class BaseObjectMapper extends ObjectMapper {
2426

@@ -31,6 +33,11 @@ public BaseObjectMapper(JsonFactory factory, WorkflowPropertySource workflowProp
3133

3234
configure(SerializationFeature.INDENT_OUTPUT, true);
3335
registerModule(workflowModule);
36+
configure(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS, false);
37+
configOverride(Map.class)
38+
.setInclude(
39+
JsonInclude.Value.construct(
40+
JsonInclude.Include.NON_NULL, JsonInclude.Include.NON_NULL));
3441
}
3542

3643
public WorkflowModule getWorkflowModule() {

api/src/main/resources/schema/switchconditions/datacondition.json

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,18 @@
2323
"description": "Workflow end definition"
2424
}
2525
},
26-
"required": [
27-
"condition",
28-
"transition"
26+
"oneOf": [
27+
{
28+
"required": [
29+
"condition",
30+
"transition"
31+
]
32+
},
33+
{
34+
"required": [
35+
"condition",
36+
"end"
37+
]
38+
}
2939
]
3040
}

api/src/test/java/io/serverlessworkflow/api/test/WorkflowToMarkupTest.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import io.serverlessworkflow.api.Workflow;
2424
import io.serverlessworkflow.api.auth.AuthDefinition;
2525
import io.serverlessworkflow.api.auth.BasicAuthDefinition;
26+
import io.serverlessworkflow.api.defaultdef.DefaultConditionDefinition;
2627
import io.serverlessworkflow.api.end.End;
2728
import io.serverlessworkflow.api.events.EventDefinition;
2829
import io.serverlessworkflow.api.functions.FunctionDefinition;
@@ -31,6 +32,10 @@
3132
import io.serverlessworkflow.api.schedule.Schedule;
3233
import io.serverlessworkflow.api.start.Start;
3334
import io.serverlessworkflow.api.states.SleepState;
35+
import io.serverlessworkflow.api.states.SwitchState;
36+
import io.serverlessworkflow.api.switchconditions.DataCondition;
37+
import io.serverlessworkflow.api.switchconditions.EventCondition;
38+
import io.serverlessworkflow.api.transitions.Transition;
3439
import io.serverlessworkflow.api.workflow.Auth;
3540
import io.serverlessworkflow.api.workflow.Constants;
3641
import io.serverlessworkflow.api.workflow.Events;
@@ -189,4 +194,46 @@ public void testAuth() {
189194
assertEquals(
190195
"testPassword", workflow.getAuth().getAuthDefs().get(0).getBasicauth().getPassword());
191196
}
197+
198+
@Test
199+
public void testSwitchConditionWithTransition() {
200+
Workflow workflow =
201+
new Workflow()
202+
.withId("test-workflow")
203+
.withName("test-workflow-name")
204+
.withVersion("1.0")
205+
.withSpecVersion("0.8")
206+
.withStates(
207+
Arrays.asList(
208+
new SwitchState()
209+
.withDataConditions(
210+
Arrays.asList(
211+
new DataCondition()
212+
.withCondition("test-condition")
213+
.withTransition(
214+
new Transition().withNextState("test-next-state"))))
215+
.withDefaultCondition(
216+
new DefaultConditionDefinition()
217+
.withTransition(new Transition("test-next-state-default")))));
218+
assertNotNull(Workflow.toJson(workflow));
219+
assertNotNull(Workflow.toYaml(workflow));
220+
}
221+
222+
@Test
223+
public void testSwitchConditionWithEnd() {
224+
Workflow workflow =
225+
new Workflow()
226+
.withId("test-workflow")
227+
.withName("test-workflow-name")
228+
.withVersion("1.0")
229+
.withSpecVersion("0.8")
230+
.withStates(
231+
Arrays.asList(
232+
new SwitchState()
233+
.withEventConditions(Arrays.asList(new EventCondition().withEnd(new End())))
234+
.withDefaultCondition(
235+
new DefaultConditionDefinition().withEnd(new End()))));
236+
assertNotNull(Workflow.toJson(workflow));
237+
assertNotNull(Workflow.toYaml(workflow));
238+
}
192239
}

0 commit comments

Comments
 (0)