[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