@Override public DefaultSessionResult<I> collect(SessionContext<I> context) { Multimap<String, ConditionFailure> conditionFailures = ArrayListMultimap.create(); //unpack condition errors for (RuleOutput output : context.getStorage().getAllOutputsWithConditionFailures().values()) { conditionFailures.putAll(output.getRuleName(), output.getConditionFailures()); } return new DefaultSessionResult<>(context.getInput(), conditionFailures, context.getStorage().mapTags(TagState.LEAF)); }
@Test public void ruleWithConditionFailureExecution() throws RuleDefinitionException, RuleExecutionException { RuleDefinition ruleDefinition = Rules.define(RuleG.class); String inputStr = "hallo"; RuleInput input = new RuleInput(Tags.tag("A", inputStr)); RuleOutput output = ruleDefinition.execute(input, Collections.<String, Object> emptyMap()); assertThat(output.getRuleName(), equalTo(ruleDefinition.getName())); assertThat(output.getConditionFailures(), hasSize(1)); assertThat(output.getTags(), empty()); } }