[jboss-svn-commits] JBL Code SVN: r20460 - in labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src: test/java/org/jboss/internal/soa/esb/services/rules and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jun 13 06:58:21 EDT 2008


Author: beve
Date: 2008-06-13 06:58:21 -0400 (Fri, 13 Jun 2008)
New Revision: 20460

Modified:
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java
Log:
Added check for existing StatefulSession


Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java	2008-06-13 10:55:27 UTC (rev 20459)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java	2008-06-13 10:58:21 UTC (rev 20460)
@@ -598,7 +598,13 @@
 			final List<Object> objectList) 
 	{
 
-		StatefulSession statefulSession = ruleBase.newStatefulSession();
+		StatefulSession[] statefulSessions = ruleBase.getStatefulSessions();
+		StatefulSession statefulSession;
+		//	do you have a pre-existing session then us it
+		if ( statefulSessions != null && statefulSessions.length > 0 )
+			statefulSession = statefulSessions[0];
+		else
+			statefulSession = ruleBase.newStatefulSession();
 
 		if ( globals != null )
 		{

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java	2008-06-13 10:55:27 UTC (rev 20459)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java	2008-06-13 10:58:21 UTC (rev 20460)
@@ -44,6 +44,8 @@
  */
 public class DroolsRuleServiceUnitTest
 {
+	private static final String DESTINATIONS = "destinations";
+
 	private DroolsRuleService ruleService = new DroolsRuleService();
 	
 	private RuleBase ruleBase;
@@ -52,27 +54,37 @@
 	@Test
 	public void executeStatefulRules() throws RuleServiceException
 	{
-		Map<String,Object> globals = new HashMap<String,Object>();
-		
-		ArrayList<String> destinations =  new ArrayList<String>();
-		globals.put("destinations", destinations );
-		globals.put("message", message );
-		
+		Map<String,Object> globals = getGlobalsWithDestAndMessage();
 		message = ruleService.executeStatefulRules( ruleBase, true, message , globals, null );
+		ArrayList<String> destinations = getDistinations( globals );
 		assertTrue( destinations.size() == 1 );
 	}
 	
 	@Test
 	public void executeStatelessRules()
 	{
-		Map<String,Object> globals = new HashMap<String,Object>();
-		ArrayList<String> destinations =  new ArrayList<String>();
-		globals.put("destinations", destinations );
-		globals.put("message", message );
+		Map<String,Object> globals = getGlobalsWithDestAndMessage();
 		message = ruleService.executeStatelessRules( ruleBase, message , globals, null );
+		ArrayList<String> destinations = getDistinations( globals );
 		assertTrue( destinations.size() == 1 );
 	}
 	
+	@Test
+	public void executeStatelessRulesContinueSession()
+	{
+		Map<String,Object> globals = getGlobalsWithDestAndMessage();
+		message = ruleService.executeStatefulRules( ruleBase, true, message , globals, null );
+		
+		ArrayList<String> destinations = getDistinations( globals );
+		assertTrue( destinations.size() == 1 );
+		
+		//	execute a second time. This should reuse the same session
+		message = ruleService.executeStatefulRules( ruleBase, true, message , globals, null );
+		assertTrue( "Should have added a second destination to the existing global", destinations.size() == 2 );
+	}
+	
+	//	Test setup methods
+	
 	@Before
 	public void setup() throws RuleServiceException
 	{
@@ -84,4 +96,21 @@
 	{
 		return new JUnit4TestAdapter( DroolsRuleServiceUnitTest.class );
 	}
+	
+	//	private methods
+	
+	@SuppressWarnings("unchecked")
+	private ArrayList<String> getDistinations( final Map<String,Object> globals )
+	{
+		return (ArrayList<String>) globals.get( DESTINATIONS );
+	}
+	
+	private Map<String,Object> getGlobalsWithDestAndMessage()
+	{
+		Map<String,Object> globals = new HashMap<String,Object>();
+		ArrayList<String> destinations =  new ArrayList<String>();
+		globals.put(DESTINATIONS, destinations );
+		globals.put("message", message );
+		return globals;
+	}
 }




More information about the jboss-svn-commits mailing list