}
@Test
public void executeStatefulRulesContinueSession() throws RuleServiceException, ObjectMappingException
{
Message message = createMessageWithOrder( order );
Map<String,Object> globals = getGlobalsWithMessage( message );
ArrayList<String> messagePathList = new ArrayList<String>();
messagePathList.add("body.Order");
messagePathList.add("body.Counter");
// process message
List<Object> objectList = new ObjectMapper().createObjectList(message, messagePathList);
RuleInfo ruleInfo = new RuleInfoBuilder("JBossESBPricingRulesStateful.drl").reload(true).globals(globals).defaultFacts(objectList).build();
StatefulRuleInfoImpl statefulRuleInfo = new StatefulRuleInfoImpl(ruleInfo, false, true);
message = ruleService.executeStatefulRules( statefulRuleInfo, message );
assertEquals( 20.0, order.getDiscount(), 0 );
assertEquals( "20%" ,message.getBody().get("DiscountObject"));
// process message again with a counter instance
objectList = new ObjectMapper().createObjectList(message, messagePathList);
ruleInfo = new RuleInfoBuilder("JBossESBPricingRulesStateful.drl").reload(true).globals(globals).defaultFacts(objectList).build();
statefulRuleInfo = new StatefulRuleInfoImpl(ruleInfo, false, true);
message = ruleService.continueStatefulRulesExecution( statefulRuleInfo, message );
Counter counter = (Counter) message.getBody().get("Counter");
assertEquals( 2 , counter.getCounter() );
}