[jboss-svn-commits] JBL Code SVN: r21399 - labs/jbossesb/branches/JBESB_4_4_GA_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Aug 7 15:00:11 EDT 2008
Author: tfennelly
Date: 2008-08-07 15:00:11 -0400 (Thu, 07 Aug 2008)
New Revision: 21399
Modified:
labs/jbossesb/branches/JBESB_4_4_GA_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java
Log:
https://jira.jboss.org/jira/browse/JBESB-1907
Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java 2008-08-07 18:46:13 UTC (rev 21398)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleService.java 2008-08-07 19:00:11 UTC (rev 21399)
@@ -460,30 +460,32 @@
boolean isRulesChanged = false;
final Map<String, String> ruleSets = lifecycleRuleSets.getLifecycleResource();
- if ( ruleReload )
- {
- String currentRuleSet = ruleSets.get( ruleSet );
- newRuleSet = rbHelper.getRulesAsString( ruleSet, dsl );
- if ( currentRuleSet == null || !currentRuleSet.equals(newRuleSet) )
- {
- isRulesChanged = true;
- }
- }
- final Map<String, RuleBase> ruleBases = lifecycleRuleBases.getLifecycleResource();
- RuleBase ruleBase = ruleBases.get( ruleSet );
- if ( ruleBase == null || isRulesChanged )
- {
- ruleBase = rbHelper.createRuleBaseFromRuleFiles(ruleSet, dsl);
- if (ruleBase != null)
- ruleBases.put(ruleSet, ruleBase);
- if (newRuleSet == null)
- newRuleSet = rbHelper.getRulesAsString(ruleSet, dsl);
- if (ruleSet != null)
- ruleSets.put(ruleSet, newRuleSet);
- }
- return ruleBase;
+ synchronized (ruleSets) {
+ if ( ruleReload )
+ {
+ String currentRuleSet = ruleSets.get( ruleSet );
+ newRuleSet = rbHelper.getRulesAsString( ruleSet, dsl );
+ if ( currentRuleSet == null || !currentRuleSet.equals(newRuleSet) )
+ {
+ isRulesChanged = true;
+ }
+ }
+ final Map<String, RuleBase> ruleBases = lifecycleRuleBases.getLifecycleResource();
+ RuleBase ruleBase = ruleBases.get( ruleSet );
+ if ( ruleBase == null || isRulesChanged )
+ {
+ ruleBase = rbHelper.createRuleBaseFromRuleFiles(ruleSet, dsl);
+ if (ruleBase != null)
+ ruleBases.put(ruleSet, ruleBase);
+ if (newRuleSet == null)
+ newRuleSet = rbHelper.getRulesAsString(ruleSet, dsl);
+ if (ruleSet != null)
+ ruleSets.put(ruleSet, newRuleSet);
+ }
+ return ruleBase;
+ }
}
catch (final LifecycleResourceException e)
{
@@ -525,14 +527,18 @@
final long startTime = System.nanoTime();
try
{
- RuleBase ruleBase = getCachedRuleBases().get( decisionTable );
- if ( ruleReload || ruleBase == null )
- {
- ruleBase = DroolsRuleBaseHelper.getInstance().createRuleBaseFromDecisionTable(decisionTable);
- getCachedRuleBases().put( decisionTable, ruleBase );
- }
- return ruleBase;
- }
+ Map<String, RuleBase> ruleBases = getCachedRuleBases();
+
+ synchronized (ruleBases) {
+ RuleBase ruleBase = ruleBases.get( decisionTable );
+ if ( ruleReload || ruleBase == null )
+ {
+ ruleBase = DroolsRuleBaseHelper.getInstance().createRuleBaseFromDecisionTable(decisionTable);
+ ruleBases.put( decisionTable, ruleBase );
+ }
+ return ruleBase;
+ }
+ }
catch (final IOException e)
{
updateJBRulesCounter( startTime, decisionTable, JBRulesCounter.RULES_FAILED );
@@ -588,7 +594,7 @@
/**
* Execute rules using using the Stateful API
*
- * @param rulebase -
+ * @param rulebase -
* the rulebase to use
* @param dispose -
* if true the working memory will be dereferenced.
@@ -663,9 +669,10 @@
if ( globals != null )
{
Set<Entry<String, Object>> entrySet = globals.entrySet();
- for ( Entry<String, Object> entry : entrySet )
+ for ( Entry<String, Object> entry : entrySet ) {
statelessSession.setGlobal( entry.getKey(), entry.getValue() );
- }
+ }
+ }
}
/*
More information about the jboss-svn-commits
mailing list