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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jun 16 05:09:48 EDT 2008


Author: beve
Date: 2008-06-16 05:09:48 -0400 (Mon, 16 Jun 2008)
New Revision: 20513

Added:
   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/services/rules/RuleServicePropertiesNames.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/
   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/services/routing/cbr/CBRConfigTreeBuilder.java
Removed:
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/ListenerTagNames.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/routing/cbr/BusinessProcessorUnitTest.java
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/DroolsRuleBaseHelper.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceBuilderException.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/actions/BusinessRulesProcessor.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/test/resources/log4j.xml
Log:
Refactoring 


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-16 07:48:08 UTC (rev 20512)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouter.java	2008-06-16 09:09:48 UTC (rev 20513)
@@ -27,14 +27,12 @@
 import java.util.Map;
 
 import org.apache.log4j.Logger;
-import org.jboss.internal.soa.esb.services.rules.DroolsRuleService;
+import org.jboss.internal.soa.esb.services.rules.RuleServiceCallHelper;
 import org.jboss.internal.soa.esb.services.rules.RuleServiceException;
-import org.jboss.internal.soa.esb.services.rules.RuleServiceFactory;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.services.routing.MessageRouterException;
 import org.jboss.soa.esb.services.routing.cbr.ContentBasedRouter;
-import org.jboss.soa.esb.services.rules.RuleService;
 
 /**
  * The Implementation of a rule based Content Router. Here we use JBossRules.
@@ -147,33 +145,19 @@
 	{
 		try
 		{
-    		RuleService ruleService = RuleServiceFactory.getRuleService( DroolsRuleService.class.getName() );
-    		ruleService.setConfigTree( configTree );
-    		
-    		boolean stateful = Boolean.valueOf( configTree.getAttribute( "stateful" ) );
-    		boolean dispose = Boolean.valueOf( configTree.getAttribute( "dispose", "true" ) );
     		Map<String,Object> globals = new HashMap<String,Object>();
     		List<String> destinations = new ArrayList<String>();
     		globals.put( "destinations", destinations );
-    		
-			Message routeMessage;
-    		if ( DroolsRuleService.isDecisionTable( ruleSet ) )
-    		{
-    			if ( stateful )
-    				routeMessage = ruleService.executeStatefulRulesFromDecisionTable( ruleSet, ruleReload, dispose, message, globals, objectList );
-    			else
-        			routeMessage = ruleService.executeStatelessRulesFromDecisionTable( ruleSet, ruleReload, message, globals, objectList );
-    		}
-    		else
-    		{
-    			if ( stateful )
-    				routeMessage = ruleService.executeStatefulRules( ruleSet, ruleLanguage, ruleReload, dispose, message, globals, objectList );
-    			else
-        			routeMessage = ruleService.executeStatelessRules( ruleSet, ruleLanguage, ruleReload, message, globals, objectList );
-    		}
-			
-			routeMessage.getBody().add( "destinations", destinations );
-			return destinations;
+    		RuleServiceCallHelper helper = RuleServiceCallHelper.INSTANCE;
+    		helper.executeStateFulRulesService( 
+    				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/DroolsRuleBaseHelper.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelper.java	2008-06-16 07:48:08 UTC (rev 20512)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelper.java	2008-06-16 09:09:48 UTC (rev 20513)
@@ -42,7 +42,7 @@
 import org.jboss.soa.esb.util.ClassUtil;
 
 /**
- * A helper class, it returns rulebases based on various methods of creating them
+ * A helper class, it returns rulebases based on various methods of creating them.
  * 
  * @author jdelong at redhat.com
  * @author <a href="mailto:dbevenius at redhat.com">Daniel Bevenius</a>

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceBuilderException.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceBuilderException.java	2008-06-16 07:48:08 UTC (rev 20512)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceBuilderException.java	2008-06-16 09:09:48 UTC (rev 20513)
@@ -24,7 +24,8 @@
 import org.drools.compiler.PackageBuilderErrors;
 
 /**
- * 
+ * RuleServiceBuilderException adds {@link PackageBuilderErrors}.
+ * <p/>
  * @author <a href="mailto:dbevenius at redhat.com">Daniel Bevenius</a>
  *
  */

Added: 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	                        (rev 0)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceCallHelper.java	2008-06-16 09:09:48 UTC (rev 20513)
@@ -0,0 +1,79 @@
+/*
+ * 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.
+ */
+package org.jboss.internal.soa.esb.services.rules;
+
+import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.*;
+
+import java.util.List;
+import java.util.Map;
+
+import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.services.rules.RuleService;
+
+/**
+ * RuleServiceCallHelper is a simple helper class for calling
+ * methods on a {@link RuleService} implementation.
+ * </p>
+ * 
+ * @author <a href="mailto:dbevenius at redhat.com">Daniel Bevenius</a>
+ *
+ */
+public enum RuleServiceCallHelper
+{
+	INSTANCE;
+	
+	public void executeStateFulRulesService( 
+			
+			final String ruleSet,
+			final String ruleLanguage,
+			final boolean ruleReload,
+			final Message message, 
+			final List<Object> objectList,
+			final Map<String, Object> globals,
+			final ConfigTree configTree ) throws RuleServiceException 
+	{
+		final String ruleServiceImpl = configTree.getAttribute( IMPL_CLASS.getTagName(), "org.jboss.internal.soa.esb.services.rules.DroolsRuleService" );
+		RuleService ruleService = RuleServiceFactory.getRuleService( ruleServiceImpl );
+		ruleService.setConfigTree( configTree );
+		
+		boolean stateful = Boolean.valueOf( configTree.getAttribute( STATEFUL.getTagName()) );
+		
+		boolean dispose = Boolean.valueOf( (String) message.getProperties().getProperty( DISPOSE.getTagName(), "true" ) );
+    		
+		if ( DroolsRuleService.isDecisionTable( ruleSet ) )
+		{
+			if ( stateful )
+				ruleService.executeStatefulRulesFromDecisionTable( ruleSet, ruleReload, dispose, message, globals, objectList );
+			else
+    			ruleService.executeStatelessRulesFromDecisionTable( ruleSet, ruleReload, message, globals, objectList );
+		}
+		else
+		{
+			if ( stateful )
+				ruleService.executeStatefulRules( ruleSet, ruleLanguage, ruleReload, dispose, message, globals, objectList );
+			else
+    			ruleService.executeStatelessRules( ruleSet, ruleLanguage, ruleReload, message, globals, objectList );
+		}
+	}
+
+}

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/actions/BusinessRulesProcessor.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/actions/BusinessRulesProcessor.java	2008-06-16 07:48:08 UTC (rev 20512)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/actions/BusinessRulesProcessor.java	2008-06-16 09:09:48 UTC (rev 20513)
@@ -31,16 +31,14 @@
 import java.util.List;
 import java.util.Map;
 
-import org.jboss.internal.soa.esb.services.rules.DroolsRuleService;
+import org.jboss.internal.soa.esb.services.rules.RuleServiceCallHelper;
 import org.jboss.internal.soa.esb.services.rules.RuleServiceException;
-import org.jboss.internal.soa.esb.services.rules.RuleServiceFactory;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.message.mapping.ObjectMappingException;
 import org.jboss.soa.esb.services.registry.RegistryException;
 import org.jboss.soa.esb.services.routing.MessageRouterException;
-import org.jboss.soa.esb.services.rules.RuleService;
 
 /**
  * BusinessRulesProcessor
@@ -72,13 +70,13 @@
             List<Object> objectList = _mapper.createObjectList(message, _messagePathList);
             executeRulesService( message, objectList );
         } 
-        catch (ObjectMappingException ome) 
+        catch (final ObjectMappingException e) 
         {
-            throw new ActionProcessingException(ome.getMessage(), ome);
+            throw new ActionProcessingException( e.getMessage(), e);
         } 
-        catch (MessageRouterException mre) 
+        catch (final RuleServiceException e) 
         {
-            throw new ActionProcessingException(mre.getMessage(), mre);
+            throw new ActionProcessingException( e.getMessage(), e);
         }
 		return message;
 	}
@@ -87,41 +85,15 @@
 	 * 
 	 * @param message
 	 * @param objectList
+	 * @throws RuleServiceException 
 	 * @throws MessageRouterException
 	 */
-	private void executeRulesService( final Message message, final List<Object> objectList) throws MessageRouterException
+	void executeRulesService( final Message message, final List<Object> objectList) throws RuleServiceException 
 	{
-		try
-		{
-    		RuleService ruleService = RuleServiceFactory.getRuleService( DroolsRuleService.class.getName() );
-    		ruleService.setConfigTree( configTree );
-    		
-    		boolean stateful = Boolean.valueOf( configTree.getAttribute( "stateful" ) );
-    		boolean dispose = Boolean.valueOf( configTree.getAttribute( "dispose", "true" ) );
-    		
-    		Map<String,Object> globals = new HashMap<String,Object>();
-    		globals.put( "message", message );
-    		
-    		if ( DroolsRuleService.isDecisionTable( _ruleSet ) )
-    		{
-    			if ( stateful )
-    				ruleService.executeStatefulRulesFromDecisionTable( _ruleSet, _ruleReload, dispose, message, globals, objectList );
-    			else
-        			ruleService.executeStatelessRulesFromDecisionTable( _ruleSet, _ruleReload, message, globals, objectList );
-    		}
-    		else
-    		{
-    			if ( stateful )
-    				ruleService.executeStatefulRules( _ruleSet, _ruleLanguage, _ruleReload, dispose, message, globals, objectList );
-    			else
-        			ruleService.executeStatelessRules( _ruleSet, _ruleLanguage, _ruleReload, message, globals, objectList );
-    		}
-			
-		} 
-		catch (final RuleServiceException e)
-		{
-			throw new MessageRouterException(e.getMessage(), e);
-		}
+		Map<String,Object> globals = new HashMap<String,Object>();
+		globals.put( "message", message );
+		RuleServiceCallHelper helper = RuleServiceCallHelper.INSTANCE;
+		helper.executeStateFulRulesService(  _ruleSet,  _ruleLanguage,  _ruleReload,  message,  objectList,  globals,  configTree )  ;
 	}
     
 }

Deleted: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/ListenerTagNames.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/ListenerTagNames.java	2008-06-16 07:48:08 UTC (rev 20512)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/ListenerTagNames.java	2008-06-16 09:09:48 UTC (rev 20513)
@@ -1,50 +0,0 @@
-/*
- * 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.
- */
-/**
- * Contains tag names as they can be used in the configuration.
- * 
- */
-package org.jboss.soa.esb.services.rules;
-
-/**
- * Add several tag names for the RuleService.
- * These could be added to org.jboss.soa.esb.listeners.ListenerTagNames;
- *
- * @author jdelong at redhat.com
- *
- */
-
-public class ListenerTagNames {
-
-	/** RuleSet reference (Filename) */
-
-	// tag names, need to be moved to ListernTagNames in the org.jboss.soa.esb.listeners.ListenerTagNames;
-	public static final String RS_CLASS = "rsClass";
-	public static final String RULE_SET_TAG = "ruleSet";
-	public static final String RULE_LANGUAGE_TAG = "ruleLanguage";
-	public static final String RULE_RELOAD_TAG = "ruleReload";
-	public static final String DECISION_TABLE_TAG = "decisionTable";
-	public static final String RULE_AGENT_PROPERTIES_TAG = "ruleAgentProperties";
-	public static final String DISPOSE_TAG = "dispose";
-	public static final String CONTINUE_TAG = "continue";
-	public static final String STATEFUL_TAG = "stateful";
-}

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-16 07:48:08 UTC (rev 20512)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleService.java	2008-06-16 09:09:48 UTC (rev 20513)
@@ -37,6 +37,7 @@
  * 
  */
 public interface RuleService {
+	
 	public void setConfigTree(ConfigTree configTree);
 
 	/**

Added: 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	                        (rev 0)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleServicePropertiesNames.java	2008-06-16 09:09:48 UTC (rev 20513)
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+/**
+ * Contains tag names as they can be used in the configuration.
+ * 
+ */
+package org.jboss.soa.esb.services.rules;
+
+public enum RuleServicePropertiesNames {
+
+	IMPL_CLASS ( "rulsServiceImplClass" ),
+	RULE_SET ( "ruleSet" ),
+	RULE_LANGUAGE ("ruleLanguage"),
+	RULE_RELOAD ( "ruleReload" ),
+	DECISION_TABLE ( "decisionTable" ),
+	RULE_AGENT_PROPERTIES ( "ruleAgentProperties" ),
+	DISPOSE ( "dispose" ),
+	CONTINUE ( "continue" ),
+	STATEFUL ( "stateful") ;
+	
+	private final String tagName;
+
+	private RuleServicePropertiesNames( final String tagName )
+	{
+		this.tagName = tagName;
+	}
+	
+	public String getTagName()
+	{
+		return tagName;
+	}
+	
+}

Deleted: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/routing/cbr/BusinessProcessorUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/routing/cbr/BusinessProcessorUnitTest.java	2008-06-16 07:48:08 UTC (rev 20512)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/routing/cbr/BusinessProcessorUnitTest.java	2008-06-16 09:09:48 UTC (rev 20513)
@@ -1,82 +0,0 @@
-/*
- * 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.
- */
-package org.jboss.internal.soa.esb.services.routing.cbr;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.JUnit4TestAdapter;
-
-import org.jboss.soa.esb.helpers.ConfigTree;
-import org.jboss.soa.esb.message.Message;
-import org.jboss.soa.esb.message.format.MessageFactory;
-import org.jboss.soa.esb.message.format.MessageType;
-import org.jboss.soa.esb.message.mapping.ObjectMapper;
-import org.jboss.soa.esb.message.mapping.ObjectMappingException;
-import org.jboss.soa.esb.services.routing.MessageRouterException;
-import org.junit.Test;
-
-/**
- * 
- * @author kurt.stam at redhat.com
- *
- */
-public class BusinessProcessorUnitTest
-{
-	@Test
-	public void discount() throws ObjectMappingException
-	{
-        //new messages
-		Message message = MessageFactory.getInstance().getMessage(MessageType.JAVA_SERIALIZED);
-		Order order = new Order();
-        order.setQuantity(20);
-        order.setUnitPrice(new BigDecimal("20.0"));
-		message.getBody().add("Order", order);
-//      extract the order from the message, so the drl can process it
-        List<String> messagePathList = new ArrayList<String>();
-        messagePathList.add("body.Order");
-        ObjectMapper mapper = new ObjectMapper();
-        List<Object> objectList = mapper.createObjectList(message, messagePathList);
-        //Now send to the rules engine
-		JBossRulesRouter jbossRulesRouter = new JBossRulesRouter();
-		jbossRulesRouter.setConfigTree( new ConfigTree("dummy") );
-        try {
-    		jbossRulesRouter.route("JBossESBPricingRules.drl", false, message, objectList);
-            assertEquals(order.getDiscount(),10.0);
-            assertEquals("10%",message.getBody().get("DiscountObject"));
-           
-        } catch (MessageRouterException mre) {
-            System.out.println("Exception was thrown.");
-            mre.printStackTrace();
-            assertTrue(false);
-        }
-	}
-	
-	public static junit.framework.Test suite() {
-		return new JUnit4TestAdapter(BusinessProcessorUnitTest.class);
-	}
-
-}

Added: 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	                        (rev 0)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/BusinessRulesProcessorUnitTest.java	2008-06-16 09:09:48 UTC (rev 20513)
@@ -0,0 +1,99 @@
+/*
+ * 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.
+ */
+package org.jboss.soa.esb.actions;
+
+import static org.junit.Assert.assertEquals;
+
+import java.math.BigDecimal;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+
+import junit.framework.JUnit4TestAdapter;
+
+import org.jboss.internal.soa.esb.services.registry.MockRegistry;
+import org.jboss.internal.soa.esb.services.routing.cbr.Order;
+import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.message.format.MessageType;
+import org.jboss.soa.esb.message.mapping.ObjectMappingException;
+import org.jboss.soa.esb.services.registry.RegistryException;
+import org.jboss.soa.esb.services.routing.MessageRouterException;
+import org.jboss.soa.esb.services.routing.cbr.CBRConfigTreeBuilder;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * 
+ * @author <a href="mailto:dbevenius at redhat.com">Daniel Bevenius</a>
+ *
+ */
+public class BusinessRulesProcessorUnitTest
+{
+	private Order order;
+	private ArrayList<String> messagePathList;
+	
+	@Test
+	public void processDiscount() throws ObjectMappingException, ConfigurationException, RegistryException, MessageRouterException, ActionProcessingException
+	{
+		Message message = createMessageWithOrder( order );
+		
+        ConfigTree configTree = new CBRConfigTreeBuilder( "JBossESBPricingRules.drl", "true" ).messagePaths(messagePathList).build();
+        
+		BusinessRulesProcessor processor = new BusinessRulesProcessor( configTree );
+		processor.process( message );
+		
+        assertEquals( "Rules should have updated discount to 10.0", 10.0, order.getDiscount() );
+        assertEquals( "10%" ,message.getBody().get("DiscountObject"));
+	}
+	
+	public static junit.framework.Test suite() {
+		return new JUnit4TestAdapter(BusinessRulesProcessorUnitTest.class);
+	}
+	
+	@Before
+	public void setup()
+	{
+		order = new Order();
+        order.setQuantity(20);
+        order.setUnitPrice( new BigDecimal("20.0") );
+        
+        messagePathList = new ArrayList<String>();
+        messagePathList.add("body.Order");
+	}
+	
+	@BeforeClass
+	public static void setupMockRegistry() throws URISyntaxException
+	{
+        MockRegistry.install();
+	}
+	
+	private Message createMessageWithOrder( final Order order )
+	{
+		Message message = MessageFactory.getInstance().getMessage(MessageType.JAVA_SERIALIZED);
+		message.getBody().add("Order", order);
+		return message;
+	}
+	
+}

Added: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/services/routing/cbr/CBRConfigTreeBuilder.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/services/routing/cbr/CBRConfigTreeBuilder.java	                        (rev 0)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/services/routing/cbr/CBRConfigTreeBuilder.java	2008-06-16 09:09:48 UTC (rev 20513)
@@ -0,0 +1,75 @@
+/*
+ * 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.
+ */
+package org.jboss.soa.esb.services.routing.cbr;
+
+import java.util.List;
+
+import org.jboss.soa.esb.actions.ContentBasedWiretap;
+import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.listeners.ListenerTagNames;
+
+/**
+ * Builder for CBR ConfigTree instances.
+ * </p>
+ * 
+ * @author <a href="mailto:dbevenius at redhat.com">Daniel Bevenius</a>
+ *
+ */
+public class CBRConfigTreeBuilder
+{
+	//	mandatory
+	private String ruleFile;
+	private String reload;
+ 		
+	//	optional 
+	private List<String> messagePathList;
+		
+	public CBRConfigTreeBuilder( final String ruleFile, final String reload )
+	{
+		this.ruleFile = ruleFile;
+		this.reload = reload;
+	}
+		
+	public CBRConfigTreeBuilder messagePaths( List<String> messagePathList )
+	{
+		this.messagePathList = messagePathList;
+		return this;
+	}
+		
+	public ConfigTree build()
+	{
+        ConfigTree configTree = new ConfigTree("cbr-config");
+        configTree.setAttribute( ListenerTagNames.RULE_SET_TAG, ruleFile );
+        configTree.setAttribute( ListenerTagNames.RULE_RELOAD_TAG, reload );
+            
+        if ( messagePathList != null )
+        {
+        	for (String messagePath : messagePathList)
+			{
+        		ConfigTree objectPath = new ConfigTree( ContentBasedWiretap.OBJECT_PATH_TAG, configTree );
+        		objectPath.setAttribute( ContentBasedWiretap.OBJECT_PATH, messagePath );
+			}
+        }
+            
+        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-16 07:48:08 UTC (rev 20512)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/resources/log4j.xml	2008-06-16 09:09:48 UTC (rev 20513)
@@ -43,9 +43,12 @@
    <category name="org.jboss">
       <priority value="WARN"/>
    </category>
-   <category name="org.jboss.soa.esb">
-      <priority value="ERROR"/>
+   <category name="org.jboss.soa.esb.actions">
+      <priority value="debug"/>
    </category>
+   <category name="org.jboss.internal.soa.esb">
+      <priority value="INFO"/>
+   </category>
    <category name="org.jboss.internal.soa.esb.services.rules">
       <priority value="DEBUG"/>
    </category>
@@ -55,6 +58,12 @@
    <category name="org.jboss.soa.esb.services.jbpm">
       <priority value="DEBUG"/>
    </category>
+   
+   <category name="com.jboss.soa.esb.routing.cbr">
+      <priority value="DEBUG"/>
+   </category>
+   
+   
    <!-- ======================= -->
    <!-- Setup the Root category -->
    <!-- ======================= -->




More information about the jboss-svn-commits mailing list