[jboss-svn-commits] JBL Code SVN: r20632 - in labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src: main/java/org/jboss/internal/soa/esb/services/rules and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jun 19 01:40:35 EDT 2008


Author: beve
Date: 2008-06-19 01:40:35 -0400 (Thu, 19 Jun 2008)
New Revision: 20632

Modified:
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouter.java
   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/RuleServiceCallHelper.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/actions/ContentBasedWiretap.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleService.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleServicePropertiesNames.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouterUnitTest.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelperUnitTest.java
   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/soa/esb/actions/BusinessRulesProcessorUnitTest.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/CBRConfigTreeBuilder.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/resources/log4j.xml
Log:
Refactoring updates.


Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouter.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouter.java	2008-06-19 05:35:52 UTC (rev 20631)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouter.java	2008-06-19 05:40:35 UTC (rev 20632)
@@ -112,7 +112,7 @@
 			final String ruleSet, 
 			final String ruleLanguage,
 			final boolean ruleReload, 
-			final Message message, 
+			Message message, 
 			final List<Object> objectList ) throws MessageRouterException
 	{
 		try
@@ -120,7 +120,7 @@
     		Map<String,Object> globals = new HashMap<String,Object>();
     		List<String> destinations = new ArrayList<String>();
     		globals.put( "destinations", destinations );
-    		RuleServiceCallHelper.executeRulesService( ruleSet, ruleLanguage, ruleReload, message, objectList, globals, configTree );
+    		message = RuleServiceCallHelper.executeRulesService( ruleSet, ruleLanguage, ruleReload, message, objectList, globals, configTree );
     		return destinations;
 		} 
 		catch (final RuleServiceException e)

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-19 05:35:52 UTC (rev 20631)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java	2008-06-19 05:40:35 UTC (rev 20632)
@@ -23,8 +23,6 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -56,10 +54,6 @@
  */
 public class DroolsRuleService implements RuleService {
 	
-	private static List<String> decisionTableSuffixes = Collections.unmodifiableList( Arrays.asList( new String[] { ".xls", ".csv" } ) );
-	private static List<String> ruleAgentSuffixes = Collections.unmodifiableList( Arrays.asList( new String[] { ".properties" } ) );
-	private static List<String> ruleFileSuffixes = Collections.unmodifiableList( Arrays.asList( new String[] { ".drl" } ) );
-
 	/**
 	 * The lifecycle resource factory for RuleBases.
 	 */
@@ -442,38 +436,6 @@
 		}
 	}
 	
-	public boolean acceptsDecisionTable( final String fileName )
-	{
-		return decisionTableSuffixes.contains( getSuffix( fileName ) );
-	}
-	
-	
-	public boolean acceptsRuleAgent( final String fileName )
-	{
-		return ruleAgentSuffixes.contains( getSuffix( fileName ) );
-	}
-	
-	public boolean acceptsRuleFile( final String fileName )
-	{
-		return ruleFileSuffixes.contains( getSuffix( fileName ) );
-	}
-	
-
-	public List<String> getSupportedDecsionTableSuffixes()
-	{
-		return decisionTableSuffixes;
-	}
-
-	public List<String> getSupportedRuleAgentSuffixes()
-	{
-		return ruleAgentSuffixes;
-	}
-
-	public List<String> getSupportedRuleFileSuffixes()
-	{
-		return ruleFileSuffixes;
-	}
-	
 	/**
 	 * Determine if file based rules need reloading and return the rulebase
 	 * 
@@ -729,6 +691,17 @@
 		}
 	}
 	
+	private void insertObjectsIntoWorkingMemory(final List<Object> objectList, final WorkingMemory workingMemory)
+	{
+		if (objectList != null) 
+		{
+			for (Object object : objectList) 
+			{
+				workingMemory.insert(object);
+			}
+		}
+	}
+	
 	/**
 	 * The lifecycle resource factory for rule sets.
 	 * 
@@ -820,24 +793,6 @@
 		}
 	}
 	
-	private void insertObjectsIntoWorkingMemory(final List<Object> objectList, final WorkingMemory workingMemory)
-	{
-		if (objectList != null) 
-		{
-			for (Object object : objectList) 
-			{
-				workingMemory.insert(object);
-			}
-		}
-	}
 	
 	
-	
-	private String getSuffix ( final String fileName )
-	{
-		if ( fileName == null )
-			throw new NullPointerException("[fileName] argument was null");
-		
-		return fileName.substring( fileName.lastIndexOf( '.' ) );
-	}
 }

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceCallHelper.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceCallHelper.java	2008-06-19 05:35:52 UTC (rev 20631)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceCallHelper.java	2008-06-19 05:40:35 UTC (rev 20632)
@@ -21,15 +21,16 @@
  */
 package org.jboss.internal.soa.esb.services.rules;
 
+import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.CONTINUE;
+import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.DECISION_TABLE;
+import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.RULE_AGENT_PROPERTIES;
 import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.DISPOSE;
 import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.IMPL_CLASS;
 import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.STATEFUL;
-import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.CONTINUE;
-
 import java.util.List;
 import java.util.Map;
-
 import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.listeners.ListenerTagNames;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.services.rules.RuleService;
 
@@ -49,19 +50,38 @@
 	}
 	
 	/**
+	 * This helper method delegates to the configured RuleService implementation.
+	 * <p/>
+	 * If the message object instance has a property 'continue' set to true, this method
+	 * will invoke {@link RuleService#continueStatefulRulesExecution(String, boolean, Message, Map, List)}.
+	 * This will continue an existing stateful session.
+	 * <br>
+	 * <br>
+	 * Otherwise this method will delete one of the stateless or stateful methods in RuleService 
+	 * depending on the configuration property 'stateful' is true or false. Default is stateless.
 	 * 
-	 * @param ruleSet
-	 * @param ruleLanguage
-	 * @param ruleReload
-	 * @param message
-	 * @param objectList
-	 * @param globals
-	 * @param configTree
-	 * @return
+	 * @param ruleSet -
+	 *            String reference to a file which contains a ruleSet.
+	 * @param ruleLanguage -
+	 *            String reference to a file which contains a custom rule
+	 *            language definition
+	 * @param ruleReload -
+	 *            if set to true, a ruleSet update should result in reloading the ruleSet.
+	 * @param message -
+	 *            Message that is updated with the results.
+	 * @param objectList - 
+	 * 			  a list with additional objects (typically pulled from the message) to be inserted into 
+	 *            working memory 
+	 * @param globals -
+	 *            Map of globals variables that should be set in the working memory
+	 * @param configTree -
+	 * 			  configuration instance to access properties from jboss-esb.xml
+	 * @return Message	-
+	 * 			  the ESB Message object which might have been updated.
 	 * @throws RuleServiceException
 	 */
 	public static Message executeRulesService( 
-			final String ruleSet,
+			String ruleSet,
 			final String ruleLanguage,
 			final boolean ruleReload,
 			Message message, 
@@ -73,91 +93,55 @@
 		final RuleService ruleService = RuleServiceFactory.getRuleService( ruleServiceImpl );
 		ruleService.setConfigTree( configTree );
 		
+		final String decisionTable = configTree.getAttribute( DECISION_TABLE.getTagName() );
+		final String ruleAgent = configTree.getAttribute( RULE_AGENT_PROPERTIES.getTagName() );
+		
 		final Boolean continueStateful = (Boolean) message.getProperties().getProperty( CONTINUE.getTagName(), Boolean.FALSE );
 		if ( continueStateful )
 		{
-			return ruleService.continueStatefulRulesExecution( ruleSet, getDisposeProperty( message ), message, globals, objectList );
+			//	ruleSet can be a rule file, decisiontable or a ruleAgent properties file for continueStatefulRules
+			if ( ruleSet == null )
+				ruleSet = decisionTable != null ? decisionTable : ruleAgent;  
+			
+			message = ruleService.continueStatefulRulesExecution( ruleSet, getDisposeProperty( message ), message, globals, objectList );
 		}
-		
-		final boolean stateful = Boolean.valueOf( configTree.getAttribute( STATEFUL.getTagName()) );
-		
-		if ( stateful )
-		{
-			return executeStatefulRules( ruleService, ruleSet, ruleLanguage, ruleReload, message, globals, objectList );
-		}
 		else
 		{
-			return executeStatelessRules( ruleService, ruleSet, ruleLanguage, ruleReload, message, globals, objectList );
+    		final boolean stateful = Boolean.valueOf( configTree.getAttribute( STATEFUL.getTagName()) );
+		
+    		if ( stateful )
+    		{
+    			if ( ruleSet != null )
+        			message = ruleService.executeStatefulRules( ruleSet, ruleLanguage, ruleReload, message, globals, objectList );
+    			else if ( decisionTable != null )
+        			message =  ruleService.executeStatefulRulesFromDecisionTable( decisionTable, ruleReload, message, globals, objectList );
+    			else if ( ruleAgent != null )
+        			message = ruleService.executeStatefulRulesFromRuleAgent( ruleAgent, message, globals, objectList );
+    			else
+    				throwRuleServiceException();
+    		}
+    		else
+    		{
+    			if ( ruleSet != null )
+        			message = ruleService.executeStatelessRules( ruleSet, ruleLanguage, ruleReload, message, globals, objectList );
+    			else if ( decisionTable != null )
+        			message = ruleService.executeStatelessRulesFromDecisionTable( decisionTable, ruleReload, message, globals, objectList );
+    			else if ( ruleAgent != null )
+        			message = ruleService.executeStatelessRulesFromRuleAgent( ruleAgent, message, globals, objectList );
+    			else
+    				throwRuleServiceException();
+    		}
 		}
+		return message;
 	}
 	
 	//	private static methods
 	
-	private static Message executeStatefulRules(
-			RuleService ruleService,
-			final String ruleSet, 
-			final String dsl,
-			final boolean ruleReload, 
-			Message message,
-			final Map<String,Object> globals,
-			final List<Object> objectList) throws RuleServiceException 
+	private static void throwRuleServiceException() throws RuleServiceException
 	{
-		if ( ruleService.acceptsDecisionTable( ruleSet ) )
-		{
-			message = ruleService.executeStatefulRulesFromDecisionTable( ruleSet, ruleReload, message, globals, objectList );
-		}
-		else if ( ruleService.acceptsRuleAgent( ruleSet ) )
-		{
-			message = ruleService.executeStatefulRulesFromRuleAgent( ruleSet, message, globals, objectList );
-		}
-		else if ( ruleService.acceptsRuleFile( ruleSet ) )
-		{
-			message = ruleService.executeStatefulRules( ruleSet, dsl, ruleReload, message, globals, objectList );
-		}
-		return message;
+		throw new RuleServiceException( "One of '" + ListenerTagNames.RULE_SET_TAG + "', '" + DECISION_TABLE.getTagName() + "', or ' " + RULE_AGENT_PROPERTIES.getTagName() + "'must be specified as properties in jboss-esb.xml");
 	}
 	
-	private static Message executeStatelessRules(
-			RuleService ruleService,
-			final String ruleSet, 
-			final String dsl,
-			final boolean ruleReload, 
-			Message message,
-			final Map<String,Object> globals,
-			final List<Object> objectList) throws RuleServiceException 
-	{
-		if ( ruleService.acceptsDecisionTable( ruleSet ) )
-		{
-			message = ruleService.executeStatelessRulesFromDecisionTable( ruleSet, ruleReload, message, globals, objectList );
-		}
-		else if ( ruleService.acceptsRuleAgent( ruleSet ) )
-		{
-			message = ruleService.executeStatelessRulesFromRuleAgent( ruleSet, message, globals, objectList );
-		}
-		else if ( ruleService.acceptsRuleFile( ruleSet ) )
-		{
-			message = ruleService.executeStatelessRules( ruleSet, dsl, ruleReload, message, globals, objectList );
-		}
-		else
-		{
-			throwRuleExceptionWithSupportedSuffixes( ruleService, ruleSet );
-		}
-		
-		return message;
-	}
-	
-	private static void throwRuleExceptionWithSupportedSuffixes( final RuleService ruleService , final String fileName ) throws RuleServiceException
-	{
-		String lineSeparator = System.getProperty( "line.separator" );
-		throw new RuleServiceException( 
-				"The RuleService does not recognize the type of file : [" + fileName + "]." +
-				"The RuleService accepts the following decision table type(s): " + ruleService.getSupportedDecsionTableSuffixes() +
-				lineSeparator +
-				", and these rule agent type(s) " + ruleService.getSupportedRuleAgentSuffixes() +
-				lineSeparator +
-				", and these rule file types(s) : " + ruleService.getSupportedRuleFileSuffixes());
-	}
-
 	private static boolean getDisposeProperty( final Message message ) throws RuleServiceException
 	{
 		Object dispose = message.getProperties().getProperty( DISPOSE.getTagName() );

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/actions/ContentBasedWiretap.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/actions/ContentBasedWiretap.java	2008-06-19 05:35:52 UTC (rev 20631)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/actions/ContentBasedWiretap.java	2008-06-19 05:40:35 UTC (rev 20632)
@@ -203,25 +203,19 @@
      * @throws ConfigurationException
      */
     protected void checkMyParms() throws ConfigurationException {
-        if (_config.getAttribute(ListenerTagNames.RULE_SET_TAG) == null) {
-            _logger.error("Required attribute " + ListenerTagNames.RULE_SET_TAG
-                    + " not found in " + _config.getName() + ".");
+        _ruleSet = _config.getAttribute(ListenerTagNames.RULE_SET_TAG);
+        /* now longer a required attribute
+        if (_ruleSet == null) {
             throw new ConfigurationException("Required attribute "
                     + ListenerTagNames.RULE_SET_TAG + " not found.");
-        } else {
-            _ruleSet = _config.getAttribute(ListenerTagNames.RULE_SET_TAG);
-            if (_ruleSet == null) {
-                throw new ConfigurationException("Required attribute "
-                        + ListenerTagNames.RULE_SET_TAG + " not found.");
-            }
-            _ruleLanguage = _config
-                    .getAttribute(ListenerTagNames.RULE_LANGUAGE_TAG);
-            String ruleReload = _config
-                    .getAttribute(ListenerTagNames.RULE_RELOAD_TAG);
-            if (ruleReload != null && "true".equals(ruleReload)) {
-                _ruleReload = true;
-            }
         }
+        */
+        _ruleLanguage = _config.getAttribute(ListenerTagNames.RULE_LANGUAGE_TAG);
+        String ruleReload = _config.getAttribute(ListenerTagNames.RULE_RELOAD_TAG);
+        if (ruleReload != null && "true".equals(ruleReload)) {
+            _ruleReload = true;
+        }
+            
         if (_config.getAttribute(ListenerTagNames.CBR_CLASS) != null) {
             _cbrClass = _config.getAttribute(ListenerTagNames.CBR_CLASS);
         } else {

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleService.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleService.java	2008-06-19 05:35:52 UTC (rev 20631)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleService.java	2008-06-19 05:40:35 UTC (rev 20632)
@@ -191,6 +191,8 @@
 	 *            if set to true, working memory will be disposed after the rules are fired
 	 * @param message -
 	 *            Message that is updated with the results.
+	 * @param globals -
+	 *            Map of globals variables that should be set in the working memory
 	 * @param objectList - a list with additional objects (typically pulled from the message) to be inserted into 
 	 *            working memory 
 	 * 
@@ -203,48 +205,4 @@
 			Map<String,Object> globals, 
 			List<Object> objectList) throws RuleServiceException;
 	
-	/**
-	 * Determines whether this RuleService can process file of passed in type.
-	 * 
-	 * @param fileName - rule file to be processed
-	 * @return true	if this RuleService can process files of the passed in type
-	 */
-	public boolean acceptsDecisionTable( String fileName );
-	
-	/**
-	 * Get the supported decision tables suffixes
-	 * 
-	 * @return List<String> containing all the supported suffixes by this RuleService
-	 */
-	public List<String> getSupportedDecsionTableSuffixes();
-	
-	/**
-	 * Determines whether this RuleService can process file of passed in type.
-	 * 
-	 * @param fileName - rule file to be processed
-	 * @return true	if this RuleService can process files of the passed in type
-	 */
-	public boolean acceptsRuleAgent( String fileName );
-	
-	/**
-	 * Get the supported rule agent suffixes
-	 * 
-	 * @return List<String> containing all the supported suffixes by this RuleService
-	 */
-	public List<String> getSupportedRuleAgentSuffixes();
-	
-	/**
-	 * Determines whether this RuleService can process file of passed in type.
-	 * 
-	 * @param fileName - rule file to be processed
-	 * @return true	if this RuleService can process files of the passed in type
-	 */
-	public boolean acceptsRuleFile( String fileName );
-	
-	/**
-	 * Get the supported rule agent suffixes
-	 * 
-	 * @return List<String> containing all the supported suffixes by this RuleService
-	 */
-	public List<String> getSupportedRuleFileSuffixes();
 }

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleServicePropertiesNames.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleServicePropertiesNames.java	2008-06-19 05:35:52 UTC (rev 20631)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleServicePropertiesNames.java	2008-06-19 05:40:35 UTC (rev 20632)
@@ -31,9 +31,6 @@
 public enum RuleServicePropertiesNames {
 
 	IMPL_CLASS ( "rulsServiceImplClass" ),
-	RULE_SET ( "ruleSet" ), 
-	RULE_LANGUAGE ("ruleLanguage"),
-	RULE_RELOAD ( "ruleReload" ),
 	DECISION_TABLE ( "decisionTable" ),
 	RULE_AGENT_PROPERTIES ( "ruleAgentProperties" ),
 	DISPOSE ( "dispose" ),

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouterUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouterUnitTest.java	2008-06-19 05:35:52 UTC (rev 20631)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouterUnitTest.java	2008-06-19 05:40:35 UTC (rev 20632)
@@ -1,6 +1,6 @@
 /*
  * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
  * by the @authors tag. See the copyright.txt in the distribution for a
  * full listing of individual contributors.
  *
@@ -32,6 +32,7 @@
 
 import junit.framework.JUnit4TestAdapter;
 
+import org.jboss.soa.esb.actions.CBRConfigTreeBuilder;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.message.format.MessageFactory;
@@ -46,6 +47,7 @@
 import org.junit.Test;
 
 /**
+ * Tests for {@link JBossRulesRouter}.
  * 
  * @author kurt.stam at redhat.com
  * @author <a href="mailto:dbevenius at redhat.com">Daniel Bevenius</a>
@@ -60,7 +62,9 @@
 	public void routeSerializedMessage() throws MessageRouterException
 	{
 		Message message = createMessage( MessageType.JAVA_SERIALIZED );
-			
+		ConfigTree configTree = new CBRConfigTreeBuilder( true ).ruleFile( "JBossESBRules.drl").build();
+		jbrRouter.setConfigTree( configTree );
+		
 		List<String> destinationServices = jbrRouter.route("JBossESBRules.drl",false,message,null);
 		assertNotNull(destinationServices);
 		assertTrue(destinationServices.size()>0);
@@ -72,7 +76,10 @@
 	{
 		Message message = createMessage( MessageType.JAVA_SERIALIZED );
 			
-		List<String> destinationServices = jbrRouter.route( "RuleBaseHelper.xls", false, message, null);
+		ConfigTree configTree = new CBRConfigTreeBuilder( true ).decisionTable( "RuleBaseHelper.xls").build();
+		jbrRouter.setConfigTree( configTree );
+		
+		List<String> destinationServices = jbrRouter.route( null, false, message, null);
 			
 		assertNotNull( destinationServices );
 		assertTrue( "One destination should have been added by Drools", destinationServices.size() == 1 );
@@ -84,11 +91,10 @@
 	{
 		Message message = createMessage( MessageType.JAVA_SERIALIZED );
 			
-		ConfigTree config = new ConfigTree("statefulConfig");
-		config.setAttribute( "stateful", "true" );
-		jbrRouter.setConfigTree( config );
+		ConfigTree configTree = new CBRConfigTreeBuilder( true ).decisionTable( "RuleBaseHelper.xls").stateful( true ).build();
+		jbrRouter.setConfigTree( configTree );
 			
-		List<String> destinationServices = jbrRouter.route( "RuleBaseHelper.xls", false, message, null);
+		List<String> destinationServices = jbrRouter.route( null, false, message, null);
 		
 		assertNotNull( destinationServices );
 		assertTrue( "One destination should have been added by Drools", destinationServices.size() == 1 );
@@ -99,6 +105,8 @@
 	public void routeXMLMessage() throws MessageRouterException
 	{
 		Message message = createMessage( MessageType.JBOSS_XML);
+		ConfigTree configTree = new CBRConfigTreeBuilder( true ).ruleFile( "JBossESBRules.drl").build();
+		jbrRouter.setConfigTree( configTree );
 		List<String> destinationServices = jbrRouter.route("JBossESBRules.drl",false,message,null);
 		assertEquals(destinationServices.iterator().next(),"xml-destination");
 	}
@@ -108,6 +116,8 @@
 	{
 		Message message = createMessage( MessageType.JBOSS_XML);
 		message.getBody().add(("<jbossesb>TEST BODY</jbossesb>").getBytes());
+		ConfigTree configTree = new CBRConfigTreeBuilder( true ).ruleFile( "JBossESBRules.drl").build();
+		jbrRouter.setConfigTree( configTree );
 			
 		List<String> destinationServices = jbrRouter.route("JBossESBRules-XPath.drl","XPathLanguage.dsl",false,message,null);
 		assertEquals(destinationServices.iterator().next(),"XML_XPath_Destination");
@@ -119,6 +129,9 @@
 		Message message = createMessage( MessageType.JBOSS_XML );
 		message.getBody().add(("<Dave>rocks</Dave>").getBytes());
 		
+		ConfigTree configTree = new CBRConfigTreeBuilder( true ).ruleFile( "JBossESBRules.drl").build();
+		jbrRouter.setConfigTree( configTree );
+		
 		List<String> destinationServices = jbrRouter.route("JBossESBRules-XPath.drl","XPathLanguage.dsl",false,message,null);
 		assertEquals(destinationServices.iterator().next(),"XML_XPath_Dave_Destination");
 	}
@@ -128,6 +141,9 @@
 	{
 		Message message = createMessage( MessageType.JBOSS_XML );
 		message.getBody().add(("<price>1.55</price>").getBytes());
+		
+		ConfigTree configTree = new CBRConfigTreeBuilder( true ).ruleFile( "JBossESBRules.drl").build();
+		jbrRouter.setConfigTree( configTree );
 			
 		List<String> destinationServices = jbrRouter.route("JBossESBRules-XPath.drl","XPathLanguage.dsl",false,message,null);
 		assertEquals(destinationServices.iterator().next(),"XML_XPath_GreaterThan_Destination");
@@ -141,6 +157,8 @@
 			Message message = MessageFactory.getInstance().getMessage( MessageType.JBOSS_XML );
 			//set the body inside the Message
 			message.getBody().add(("<price>0.55</price>").getBytes());
+    		ConfigTree configTree = new CBRConfigTreeBuilder( true ).ruleFile( "JBossESBRules.drl").build();
+    		jbrRouter.setConfigTree( configTree );
 			
 			List<String> destinationServices = jbrRouter.route("JBossESBRules-XPath.drl","XPathLanguage.dsl",false,message,null);
 			assertEquals(destinationServices.iterator().next(),"XML_XPath_LessThan_Destination");
@@ -149,6 +167,28 @@
 		}
 	}
 	
+	@Test ( expected = MessageRouterException.class )
+	public void shouldThrowIfNoRuleSetIsSupplied() throws MessageRouterException
+	{
+		//add new messages
+		Message message = MessageFactory.getInstance().getMessage( MessageType.JBOSS_XML );
+		ConfigTree configTree = new ConfigTree("bad-config");
+		jbrRouter.setConfigTree( configTree );
+			
+		jbrRouter.route( null ,"XPathLanguage.dsl",false,message,null);
+	}
+	
+	@Test ( expected = MessageRouterException.class )
+	public void shouldThrowIfRuleServiceImplIsInvalid() throws MessageRouterException
+	{
+		//add new messages
+		Message message = MessageFactory.getInstance().getMessage( MessageType.JBOSS_XML );
+		ConfigTree configTree = new CBRConfigTreeBuilder( true ).ruleServiceImpl( "bad.Class" ).ruleFile( "JBossESBRules.drl").build();
+		jbrRouter.setConfigTree( configTree );
+			
+		jbrRouter.route( null, "XPathLanguage.dsl", false, message, null);
+	}
+	
 	//	Moved into this class from BusinessProcessRoutingUnitTest
 	//	as that class also used JBossRulesRouter as you can see below
 	@Test
@@ -167,7 +207,8 @@
         List<Object> objectList = mapper.createObjectList(message, messagePathList);
         //Now send to the rules engine
 		JBossRulesRouter jbossRulesRouter = new JBossRulesRouter();
-		jbossRulesRouter.setConfigTree( new ConfigTree("dummy") );
+		ConfigTree configTree = new CBRConfigTreeBuilder( true ).ruleFile( "JBossESBPricingRoutingRules.drl").build();
+		jbossRulesRouter.setConfigTree( configTree );
         try {
     		List<String> destinations = jbossRulesRouter.route("JBossESBPricingRoutingRules.drl", false, message, objectList);
             assertEquals(order.getDiscount(),10.0);
@@ -184,7 +225,7 @@
 	}
     
 	//	Moved into this class from BusinessProcessRoutingUnitTest
-	//	as that class also used JBossRulesRouter as you can see below
+	//	as that class also used JBossRulesRouter as you can see befinal low
     @Test
     public void nodiscount() throws ObjectMappingException
     {
@@ -201,7 +242,8 @@
         List<Object> objectList = mapper.createObjectList(message, messagePathList);
         //Now send to the rules engine
         JBossRulesRouter jbossRulesRouter = new JBossRulesRouter();
-		jbossRulesRouter.setConfigTree( new ConfigTree("dummy") );
+		ConfigTree configTree = new CBRConfigTreeBuilder( true ).ruleFile( "JBossESBPricingRoutingRules.drl").build();
+		jbossRulesRouter.setConfigTree( configTree );
         try {
             List<String> destinations = jbossRulesRouter.route("JBossESBPricingRoutingRules.drl", false, message, objectList);
             assertEquals(order.getDiscount(),0.0);

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelperUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelperUnitTest.java	2008-06-19 05:35:52 UTC (rev 20631)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelperUnitTest.java	2008-06-19 05:40:35 UTC (rev 20632)
@@ -1,34 +1,32 @@
 /*
- * JBoss, Home of Professional Open Source Copyright 2006, JBoss Inc., and
- * individual contributors as indicated by the @authors tag. See the
- * copyright.txt in the distribution for a full listing of individual
- * contributors.
- * 
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- * 
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- * 
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.jboss.internal.soa.esb.services.rules;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
-
 import java.io.IOException;
 
 import junit.framework.JUnit4TestAdapter;
-
 import org.drools.RuleBase;
 import org.drools.compiler.DroolsParserException;
 import org.junit.Test;
@@ -45,12 +43,6 @@
 	// instance under test
 	private DroolsRuleBaseHelper helper = DroolsRuleBaseHelper.getInstance();
 	
-	// rule file shared by multiple tests methods
-	private final static String RULE_FILE = "RuleBaseHelper.drl";
-	
-	// decision table file shared by multiple test methods
-	private final static String DECISION_TABLE_FILE = "RuleBaseHelper.xls";
-	
 	private final static String NULL_DSL_FILE = null;
 	private final static String NULL_RULE_FILE = null;
 	private final static String NULL_DECISION_TABLE_FILE = null;
@@ -64,7 +56,7 @@
 	@Test
 	public void createRuleBaseFromRuleFiles() throws DroolsParserException, IOException, RuleServiceException
 	{
-		RuleBase ruleBase = helper.createRuleBaseFromRuleFiles( RULE_FILE, NULL_DSL_FILE );
+		RuleBase ruleBase = helper.createRuleBaseFromRuleFiles( "RuleBaseHelper.drl", NULL_DSL_FILE );
 		
 		assertNotNull( ruleBase );
 		assertTrue( ruleBase.getPackages().length > 0 );
@@ -80,7 +72,7 @@
 	@Test
 	public void createRuleBaseFromDecisionTable() throws DroolsParserException, IOException, RuleServiceException
 	{
-		RuleBase ruleBase = helper.createRuleBaseFromDecisionTable( DECISION_TABLE_FILE );
+		RuleBase ruleBase = helper.createRuleBaseFromDecisionTable( "RuleBaseHelper.xls" );
 		assertNotNull( ruleBase );
 		assertEquals( "org.jboss.internal.soa.esb.rules", ruleBase.getPackages()[0].getName());
 	}
@@ -95,18 +87,25 @@
 	@Test
 	public void getRuleFileAsString() throws IOException, RuleServiceException
 	{
-		String rulesAsString = helper.getRulesAsString( RULE_FILE, NULL_DSL_FILE );
+		String rulesAsString = helper.getRulesAsString( "RuleBaseHelper.drl", NULL_DSL_FILE );
 		assertNotNull( rulesAsString );
 	}
 	
 	@Test
 	public void getSpreadSheetRules() throws IOException, RuleServiceException
 	{
-		String spreadSheetAsString = helper.getSpreadsheetRules( DECISION_TABLE_FILE );
+		String spreadSheetAsString = helper.getSpreadsheetRules( "RuleBaseHelper.xls" );
 		assertNotNull( spreadSheetAsString );
 	}
 	
+	/* 
+	   This test is currently disabled as the file property that exists in RuleBaseHelper.properties
+	   accesses a file on the local file system. This causes problems with the integration build as
+	   the working dir is not the same and when run from eclipse or ant in this modules directory.
+	   The issue here could be fixed by using the dir property in base-build.xml, but that caused
+	   the other modules to fail. Leaving this for now as v5.0 will clean this up./Daniel
 	@Test
+	*/
 	public void loadRuleBaseFromRuleAgent() throws Exception
 	{
 		RuleBase ruleBase = helper.loadRuleBaseFromRuleAgent( "RuleBaseHelper.properties" );

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-19 05:35:52 UTC (rev 20631)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java	2008-06-19 05:40:35 UTC (rev 20632)
@@ -23,8 +23,6 @@
 package org.jboss.internal.soa.esb.services.rules;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.math.BigDecimal;
@@ -55,10 +53,6 @@
  */
 public class DroolsRuleServiceUnitTest
 {
-	private static final String DRL_FILE = "JBossESBRules.drl";
-
-	private static final String DESTINATIONS = "destinations";
-
 	private DroolsRuleService ruleService = new DroolsRuleService();
 	
 	private RuleBase ruleBase;
@@ -81,7 +75,7 @@
 	public void executeStatefulRulesDrl() throws RuleServiceException
 	{
 		Map<String,Object> globals = getGlobalsWithDestAndMessage();
-		message = ruleService.executeStatefulRules( DRL_FILE, null, true, message, globals, null );
+		message = ruleService.executeStatefulRules( "JBossESBRules.drl", null, true, message, globals, null );
 		ArrayList<String> destinations = getDistinations( globals );
 		assertTrue( destinations.size() == 1 );
 	}
@@ -123,7 +117,14 @@
         
 	}
 	
+	/* 
+	   This test is currently disabled as the file property that exists in RuleBaseHelper.properties
+	   accesses a file on the local file system. This causes problems with the integration build as
+	   the working dir is not the same and when run from eclipse or ant in this modules directory.
+	   The issue here could be fixed by using the dir property in base-build.xml, but that caused
+	   the other modules to fail. Leaving this for now as v5.0 will clean this up./Daniel
 	@Test
+    */
 	public void executeStatefulRulesFromRuleAgent() throws RuleServiceException
 	{
 		Map<String,Object> globals = getGlobalsWithDest();
@@ -138,82 +139,12 @@
 		assertTrue( "Should have added a second destination to the existing global", destinations.size() == 2 );
 	}
 	
-	@Test
-	public void getSupportedDecsionTableSuffixes()
-	{
-		List<String> suffixes = ruleService.getSupportedDecsionTableSuffixes();
-		assertNotNull ( suffixes );
-		assertEquals ( 2 , suffixes.size() );
-		try
-		{
-    		suffixes.add( ".xxx" );
-		}
-		catch (Exception e )
-		{
-			assertTrue( e instanceof UnsupportedOperationException );
-		}
-	}
-	
-	@Test
-	public void getSupportedRuleAgentSuffixes()
-	{
-		List<String> suffixes = ruleService.getSupportedRuleAgentSuffixes();
-		assertNotNull ( suffixes );
-		assertEquals ( 1 , suffixes.size() );
-		try
-		{
-    		suffixes.add( ".xxx" );
-		}
-		catch (Exception e )
-		{
-			assertTrue( e instanceof UnsupportedOperationException );
-		}
-	}
-	
-	@Test
-	public void getSupportedRuleFileSuffixes()
-	{
-		List<String> suffixes = ruleService.getSupportedRuleFileSuffixes();
-		assertNotNull ( suffixes );
-		assertEquals ( 1 , suffixes.size() );
-		try
-		{
-    		suffixes.add( ".xxx" );
-		}
-		catch (Exception e )
-		{
-			assertTrue( e instanceof UnsupportedOperationException );
-		}
-	}
-	
-	@Test
-	public void acceptsDecisionTable( )
-	{
-		assertTrue ( ruleService.acceptsDecisionTable( "Helper.xls" ) );
-		assertTrue ( ruleService.acceptsDecisionTable( "Helper.csv" ) );
-		assertFalse ( ruleService.acceptsDecisionTable( "Helper.cvs" ) );
-	}
-	
-	@Test
-	public void acceptsRuleAgentTable( )
-	{
-		assertTrue ( ruleService.acceptsRuleAgent( "Helper.properties" ) );
-		assertFalse ( ruleService.acceptsRuleAgent( "Helper.csv" ) );
-	}
-	
-	@Test
-	public void acceptsRuleFileTable( )
-	{
-		assertTrue ( ruleService.acceptsRuleFile( "Helper.drl" ) );
-		assertFalse ( ruleService.acceptsRuleFile( "Helper.csv" ) );
-	}
-	
 	//	Test setup methods
 	
 	@Before
 	public void setup() throws RuleServiceException
 	{
-		ruleBase = ruleService.getRuleBaseForFileBasedRules( DRL_FILE, null, true );
+		ruleBase = ruleService.getRuleBaseForFileBasedRules( "JBossESBRules.drl", null, true );
 		message = MessageFactory.getInstance().getMessage();
 		
 		order = new Order();
@@ -235,14 +166,14 @@
 	@SuppressWarnings("unchecked")
 	private ArrayList<String> getDistinations( final Map<String,Object> globals )
 	{
-		return (ArrayList<String>) globals.get( DESTINATIONS );
+		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("destinations", destinations );
 		globals.put("message", message );
 		return globals;
 	}
@@ -251,7 +182,7 @@
 	{
 		Map<String,Object> globals = new HashMap<String,Object>();
 		ArrayList<String> destinations =  new ArrayList<String>();
-		globals.put(DESTINATIONS, destinations );
+		globals.put("destinations", destinations );
 		return globals;
 	}
 	

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/BusinessRulesProcessorUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/BusinessRulesProcessorUnitTest.java	2008-06-19 05:35:52 UTC (rev 20631)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/BusinessRulesProcessorUnitTest.java	2008-06-19 05:40:35 UTC (rev 20632)
@@ -45,6 +45,7 @@
 import org.junit.Test;
 
 /**
+ * Unit test for {@link BusinessRulesProcessor}
  * 
  * @author <a href="mailto:dbevenius at redhat.com">Daniel Bevenius</a>
  *
@@ -58,7 +59,7 @@
 	public void processDiscount() throws ObjectMappingException, ConfigurationException, RegistryException, MessageRouterException, ActionProcessingException
 	{
 		Message message = createMessageWithOrder( order );
-        ConfigTree configTree = new CBRConfigTreeBuilder( "JBossESBPricingRulesStateful.drl", "true" ).messagePaths(messagePathList).build();
+        ConfigTree configTree = new CBRConfigTreeBuilder( true ).ruleFile( "JBossESBPricingRulesStateful.drl" ).messagePaths(messagePathList).build();
 		BusinessRulesProcessor processor = new BusinessRulesProcessor( configTree );
 		
 		processor.process( message );
@@ -71,7 +72,7 @@
 	public void processDiscountStateful() throws ObjectMappingException, ConfigurationException, RegistryException, MessageRouterException, ActionProcessingException
 	{
 		Message message = createMessageWithOrder( order );
-        ConfigTree configTree = new CBRConfigTreeBuilder( "JBossESBPricingRulesStateful.drl", "true" ).messagePaths(messagePathList).stateful( true ).build();
+        ConfigTree configTree = new CBRConfigTreeBuilder( true ).ruleFile( "JBossESBPricingRulesStateful.drl" ).stateful( true ).messagePaths(messagePathList).build();
 		BusinessRulesProcessor processor = new BusinessRulesProcessor( configTree );
 		
 		// process message
@@ -94,7 +95,7 @@
 	public void shouldThrowIfDisposePropertyIsNotSet() throws ObjectMappingException, ConfigurationException, RegistryException, MessageRouterException, ActionProcessingException
 	{
 		Message message = createMessageWithOrder( order );
-        ConfigTree configTree = new CBRConfigTreeBuilder( "JBossESBPricingRulesStateful.drl", "true" ).messagePaths(messagePathList).stateful( true ).build();
+        ConfigTree configTree = new CBRConfigTreeBuilder( true ).ruleFile( "JBossESBPricingRulesStateful.drl" ).messagePaths(messagePathList).stateful( true ).build();
 		BusinessRulesProcessor processor = new BusinessRulesProcessor( configTree );
 		
 		// process message
@@ -107,16 +108,6 @@
 		processor.process( message );
 	}
 	
-	@Test ( expected = ActionProcessingException.class )
-	public void throwIfFileTypeIsNotValid() throws ActionProcessingException, ConfigurationException, RegistryException, MessageRouterException
-	{
-		Message message = createMessageWithOrder( order );
-        ConfigTree configTree = new CBRConfigTreeBuilder( "test.bla", "true" ).messagePaths(messagePathList).build();
-		BusinessRulesProcessor processor = new BusinessRulesProcessor( configTree );
-		
-		processor.process( message );
-	}
-	
 	public static junit.framework.Test suite() 
 	{
 		return new JUnit4TestAdapter(BusinessRulesProcessorUnitTest.class);

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/CBRConfigTreeBuilder.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/CBRConfigTreeBuilder.java	2008-06-19 05:35:52 UTC (rev 20631)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/CBRConfigTreeBuilder.java	2008-06-19 05:40:35 UTC (rev 20632)
@@ -1,23 +1,23 @@
 /*
- * JBoss, Home of Professional Open Source Copyright 2006, JBoss Inc., and
- * individual contributors as indicated by the @authors tag. See the
- * copyright.txt in the distribution for a full listing of individual
- * contributors.
- * 
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- * 
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- * 
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.jboss.soa.esb.actions;
 
@@ -38,19 +38,39 @@
 public class CBRConfigTreeBuilder
 {
 	//	mandatory
-	private String ruleFile;
-	private String reload;
+	private boolean reload;
  		
 	//	optional 
+	private String ruleFile;
 	private List<String> messagePathList;
 	private boolean stateful;
+	private String decisionTable;
+	private String ruleAgent;
+	private String ruleServiceImpl;
 	
 		
-	public CBRConfigTreeBuilder( final String ruleFile, final String reload )
+	public CBRConfigTreeBuilder( final boolean reload )
 	{
-		this.ruleFile = ruleFile;
 		this.reload = reload;
 	}
+	
+	public CBRConfigTreeBuilder ruleFile( final String ruleFile )
+	{
+		this.ruleFile = ruleFile;
+		return this;
+	}
+	
+	public CBRConfigTreeBuilder decisionTable( final String decisionTable )
+	{
+		this.decisionTable = decisionTable;
+		return this;
+	}
+	
+	public CBRConfigTreeBuilder ruleAgent( final String ruleAgent )
+	{
+		this.ruleAgent = ruleAgent;
+		return this;
+	}
 		
 	public CBRConfigTreeBuilder messagePaths( List<String> messagePathList )
 	{
@@ -58,6 +78,12 @@
 		return this;
 	}
 	
+	public CBRConfigTreeBuilder ruleServiceImpl( String ruleServiceImpl )
+	{
+		this.ruleServiceImpl = ruleServiceImpl;
+		return this;
+	}
+	
 	public CBRConfigTreeBuilder stateful( final boolean stateful )
 	{
 		this.stateful = stateful;
@@ -67,8 +93,18 @@
 	public ConfigTree build()
 	{
         ConfigTree configTree = new ConfigTree("cbr-config");
-        configTree.setAttribute( ListenerTagNames.RULE_SET_TAG, ruleFile );
-        configTree.setAttribute( ListenerTagNames.RULE_RELOAD_TAG, reload );
+        
+        configTree.setAttribute( ListenerTagNames.RULE_RELOAD_TAG, Boolean.toString( reload ) );
+        
+        if ( ruleFile != null )
+            configTree.setAttribute( ListenerTagNames.RULE_SET_TAG, ruleFile );
+        else if ( decisionTable != null )
+            configTree.setAttribute( RuleServicePropertiesNames.DECISION_TABLE.getTagName(), decisionTable );
+        else if ( ruleAgent != null )
+            configTree.setAttribute( RuleServicePropertiesNames.RULE_AGENT_PROPERTIES.getTagName(), ruleAgent );
+        else
+        	throw new IllegalStateException("One of ruleFile, decisionTable or ruleAgent must be set");
+        
             
         if ( messagePathList != null )
         {
@@ -78,9 +114,13 @@
         		objectPath.setAttribute( ContentBasedWiretap.OBJECT_PATH, messagePath );
 			}
         }
+        
         if ( stateful )
             configTree.setAttribute( RuleServicePropertiesNames.STATEFUL.getTagName(), Boolean.toString( stateful ) );
-            
+        
+        if ( ruleServiceImpl != null )
+            configTree.setAttribute( RuleServicePropertiesNames.IMPL_CLASS.getTagName(), ruleServiceImpl );
+        
         return configTree;
 	}
 }

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/resources/log4j.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/resources/log4j.xml	2008-06-19 05:35:52 UTC (rev 20631)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/resources/log4j.xml	2008-06-19 05:40:35 UTC (rev 20632)
@@ -44,13 +44,13 @@
       <priority value="WARN"/>
    </category>
    <category name="org.jboss.soa.esb.actions">
-      <priority value="debug"/>
+      <priority value="ERROR"/>
    </category>
    <category name="org.jboss.internal.soa.esb">
-      <priority value="INFO"/>
+      <priority value="ERROR"/>
    </category>
    <category name="org.jboss.internal.soa.esb.services.rules">
-      <priority value="DEBUG"/>
+      <priority value="ERROR"/>
    </category>
    <category name="org.apache">
       <priority value="ERROR"/>




More information about the jboss-svn-commits mailing list