@Override public void write(Variable variable, JsonWriter jsonWriter) { DataType type = variable.getType(); Object value = variable.getDefaultValue(); if (type==null && value!=null) { type = mappings.getTypeByValue(value); variable.setType(type); } super.write(variable, jsonWriter); }
@Override public Variable read(Object jsonValue, JsonReader jsonReader) { Variable variable = super.read(jsonValue, jsonReader); DataType type = variable.getType(); Object jsonVariableValue = variable.getDefaultValue(); if (jsonVariableValue!=null && type!=null) { Object objectVariableValue = jsonReader.readObject(jsonVariableValue, type.getValueType()); variable.setDefaultValue(objectVariableValue); } return variable; } }
public void parse(Variable variable, ScopeImpl parentImpl, WorkflowParser parser) { this.id = variable.getId(); this.variable = variable; if (id==null || "".equals(id)) { parser.addError("Variable has no id"); } else if (id.contains(".")) { parser.addError("Variable '%s' has a dot in the name", id); } else if (parser.variableIds.contains(id)) { parser.addError("Duplicate variable id '%s'", id); } else { parser.variableIds.add(id); } this.parent = parentImpl; DataTypeService dataTypeService = parser.getConfiguration(DataTypeService.class); DataType typeApi = variable.getType(); if (typeApi!=null) { this.type = dataTypeService.createDataType(typeApi); } else { parser.addWarning("Variable '%s' does not have a type", id); this.type = new AnyTypeImpl(); } this.defaultValue = variable.getDefaultValue(); }
assertEquals(Boolean.TRUE, workflow.getVariables().get(0).getDefaultValue()); assertEquals("Blue pill", workflow.getVariables().get(1).getDefaultValue()); assertEquals(now, workflow.getVariables().get(2).getDefaultValue()); assertEquals("alice@example.org", workflow.getVariables().get(3).getDefaultValue()); assertEquals(Lists.of(40, 41, 42), workflow.getVariables().get(6).getDefaultValue()); assertEquals(defaultMoneyValue, workflow.getVariables().get(7).getDefaultValue()); assertEquals(Double.class, workflow.getVariables().get(8).getDefaultValue().getClass()); assertEquals(42.5, workflow.getVariables().get(8).getDefaultValue()); assertEquals("hello", workflow.getVariables().get(9).getDefaultValue()); LocalDateTime defaultValue11 = (LocalDateTime) workflow.getVariables().get(10).getDefaultValue(); assertEquals(now.withTime(0, 0, 0, 0), defaultValue11.withTime(0, 0, 0, 0)); LocalDateTime defaultValue12 = (LocalDateTime) workflow.getVariables().get(11).getDefaultValue(); assertEquals(now.withDate(1, 1, 1), defaultValue12.withDate(1, 1, 1));