/** * */ package org.springmodules.jsr94.factory; import java.util.ArrayList; import java.util.List; import javax.rules.RuleRuntime; import javax.rules.StatefulRuleSession; import javax.rules.StatelessRuleSession; import org.springmodules.jsr94.rulesource.DefaultRuleSource; /** * Abstract test on DefaultRuleSource. Tests rule session creation and execution. * * @author janm * @see org.springmodules.jsr94.factory.TestRuntimeAndAdministratorDefaultRuleSource * @see org.springmodules.jsr94.factory.TestProviderDefaultRuleSource */ public abstract class AbstractDefaultRuleSourceTests extends AbstractRuleServiceProviderTests { protected static final String BIND_URI = "test"; protected static final String RULES_RESOURCE = "org/springmodules/jsr94/test.drl"; /** * Gets the DefaultRuleSource instance * * @return The default RuleSource * @throws Exception If something goes wrong */ protected abstract void setProperties(DefaultRuleSource ruleSource) throws Exception; /** * Test session creation & execution * * @throws Exception If anything goes wrong */ public void testStatelessExecution() throws Exception { // create the source DefaultRuleSource source = new DefaultRuleSource(); setProperties(source); source.afterPropertiesSet(); // get the stateless session StatelessRuleSession session = (StatelessRuleSession) source.createSession(BIND_URI, null, RuleRuntime.STATELESS_SESSION_TYPE); // execute it List facts = new ArrayList(); facts.add("Gecko"); facts = session.executeRules(facts); assertTrue("Facts does not contain Gecko", facts.contains("Gecko")); assertTrue("Facts does not contain a:Gecko", facts.contains("a:Gecko")); session.release(); } /** * Test session creation & execution * @throws Exception If anything goes wrong */ public void testStatefulExecution() throws Exception { // create the source DefaultRuleSource source = new DefaultRuleSource(); setProperties(source); source.afterPropertiesSet(); // get the stateless session StatefulRuleSession session = (StatefulRuleSession) source.createSession(BIND_URI, null, RuleRuntime.STATEFUL_SESSION_TYPE); // execute it List facts = new ArrayList(); facts.add("Gecko"); session.addObjects(facts); session.executeRules(); facts = session.getObjects(); assertTrue("Facts does not contain Gecko", facts.contains("Gecko")); assertTrue("Facts does not contain a:Gecko", facts.contains("a:Gecko")); session.release(); } }