Skip to content

Commit

Permalink
Added state for keeping already prompted values
Browse files Browse the repository at this point in the history
  • Loading branch information
Vitalii Shevchuk committed Jul 17, 2020
1 parent c9737fe commit b60a890
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,7 @@ private void bindInput(Input input, Map<String, ? extends Value> context,
missingInputs.add(createMissingInput(input, value));
return;
}
}

if (input.isRequired() && isEmpty(value)) {
} else if (input.isRequired() && isEmpty(value)) {
missingInputs.add(input);
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ public class RunEnvironment implements Serializable {
//prompt args for current step
private Map<String, Prompt> promptArguments;

//Map holding already prompted values
private Map<String, Value> promptedValues;

public RunEnvironment(Set<SystemProperty> systemProperties) {
Validate.notNull(systemProperties, "system properties cannot be null");
Expand All @@ -73,6 +75,7 @@ public RunEnvironment(Set<SystemProperty> systemProperties) {
serializableDataMap = new HashMap<>();
this.systemProperties = systemProperties;
promptArguments = new HashMap<>();
promptedValues = new HashMap<>();
}

public RunEnvironment() {
Expand Down Expand Up @@ -111,6 +114,16 @@ public Map<String, Prompt> removePromptArguments() {
return promptArguments;
}

public void keepPromptedValues(Map<String, Value> promptedValues) {
this.promptedValues.putAll(promptedValues);
}

public Map<String, Value> removePromptedValues() {
Map<String, Value> promptedValues = this.promptedValues;
this.promptedValues = new HashMap<>();
return promptedValues;
}

public Map<String, Value> getCallArguments() {
return callArguments;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ public void startExecutable(@Param(ScoreLangConstants.EXECUTABLE_INPUTS_KEY) Lis
@Param(USE_EMPTY_VALUES_FOR_PROMPTS_KEY) Boolean useEmptyValuesForPrompts) {
try {
Map<String, Value> callArguments = runEnv.removeCallArguments();
Map<String, Prompt> prompts = runEnv.removePromptArguments();

if (userInputs != null) {
callArguments.putAll(userInputs);
Expand All @@ -116,8 +115,11 @@ public void startExecutable(@Param(ScoreLangConstants.EXECUTABLE_INPUTS_KEY) Lis
}
}

Map<String, ? extends Value> promptedArguments =
missingInputHandler.applyPromptInputValues(systemContext, executableInputs);
//restore what was already prompted and add newly prompted values
Map<String, Value> promptedValues = runEnv.removePromptedValues();
promptedValues.putAll(missingInputHandler.applyPromptInputValues(systemContext, executableInputs));

Map<String, Prompt> promptArguments = runEnv.removePromptArguments();

LanguageEventData.StepType stepType = LanguageEventData.convertExecutableType(executableType);
sendStartBindingInputsEvent(
Expand All @@ -134,11 +136,11 @@ public void startExecutable(@Param(ScoreLangConstants.EXECUTABLE_INPUTS_KEY) Lis
Map<String, Value> boundInputValues = inputsBinding.bindInputs(
executableInputs,
callArguments,
promptedArguments,
promptedValues,
runEnv.getSystemProperties(),
missingInputs,
isTrue(useEmptyValuesForPrompts),
prompts);
promptArguments);

//if there are any missing required input after binding
// try to resolve it using provided missing input handler
Expand All @@ -153,9 +155,11 @@ public void startExecutable(@Param(ScoreLangConstants.EXECUTABLE_INPUTS_KEY) Lis
isTrue(useEmptyValuesForPrompts));

if (!canContinue) {
//we must keep the state unchanged
//we must keep the state unchanged}
runEnv.putCallArguments(callArguments);
runEnv.putPromptArguments(prompts);
runEnv.putPromptArguments(promptArguments);
//keep what was already prompted
runEnv.keepPromptedValues(promptedValues);
return;
}
}
Expand Down

0 comments on commit b60a890

Please sign in to comment.