[jboss-svn-commits] JBL Code SVN: r15056 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: audit and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Sep 12 12:26:15 EDT 2007
Author: tirelli
Date: 2007-09-12 12:26:15 -0400 (Wed, 12 Sep 2007)
New Revision: 15056
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/EventManager.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/WorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
Log:
JBRULES-1185: adding support to RuleBase events. Unit test added
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/EventManager.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/EventManager.java 2007-09-12 16:25:00 UTC (rev 15055)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/EventManager.java 2007-09-12 16:26:15 UTC (rev 15056)
@@ -20,11 +20,8 @@
import java.util.List;
import org.drools.event.AgendaEventListener;
-import org.drools.event.AgendaEventSupport;
import org.drools.event.RuleFlowEventListener;
-import org.drools.event.RuleFlowEventSupport;
import org.drools.event.WorkingMemoryEventListener;
-import org.drools.event.WorkingMemoryEventSupport;
/**
* The EventManager class is implemented by classes wishing to add,remove and get the various Drools EventListeners.
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java 2007-09-12 16:25:00 UTC (rev 15055)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java 2007-09-12 16:26:15 UTC (rev 15056)
@@ -21,7 +21,6 @@
import java.io.Serializable;
import org.drools.rule.Package;
-import org.drools.ruleflow.common.core.Process;
/**
* Active collection of <code>Rule</code>s.
@@ -36,7 +35,8 @@
*/
public interface RuleBase
extends
- Serializable {
+ Serializable,
+ RuleBaseEventManager {
public static final int RETEOO = 1;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/WorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/WorkingMemory.java 2007-09-12 16:25:00 UTC (rev 15055)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/WorkingMemory.java 2007-09-12 16:26:15 UTC (rev 15056)
@@ -16,17 +16,9 @@
* limitations under the License.
*/
-import java.io.Serializable;
import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import org.drools.event.AgendaEventListener;
-import org.drools.event.RuleFlowEventListener;
-import org.drools.event.WorkingMemoryEventListener;
-import org.drools.rule.Rule;
import org.drools.ruleflow.common.instance.ProcessInstance;
-import org.drools.spi.Activation;
import org.drools.spi.AgendaFilter;
import org.drools.spi.AgendaGroup;
import org.drools.spi.AsyncExceptionHandler;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java 2007-09-12 16:25:00 UTC (rev 15055)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java 2007-09-12 16:26:15 UTC (rev 15056)
@@ -23,8 +23,8 @@
import java.util.List;
import org.drools.EventManager;
-import org.drools.WorkingMemory;
import org.drools.audit.event.LogEvent;
+
import com.thoughtworks.xstream.XStream;
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2007-09-12 16:25:00 UTC (rev 15055)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2007-09-12 16:26:15 UTC (rev 15056)
@@ -25,7 +25,6 @@
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -41,6 +40,8 @@
import org.drools.RuleBaseConfiguration;
import org.drools.RuleIntegrationException;
import org.drools.StatefulSession;
+import org.drools.event.RuleBaseEventListener;
+import org.drools.event.RuleBaseEventSupport;
import org.drools.rule.CompositePackageClassLoader;
import org.drools.rule.InvalidPatternException;
import org.drools.rule.MapBackedClassLoader;
@@ -88,6 +89,8 @@
protected Map globals;
private ReloadPackageCompilationData reloadPackageCompilationData = null;
+
+ private RuleBaseEventSupport eventSupport = new RuleBaseEventSupport();
/**
* WeakHashMap to keep references of WorkingMemories but allow them to be
@@ -160,6 +163,7 @@
out.writeObject( this.factHandleFactory );
out.writeObject( this.globals );
out.writeObject( this.config );
+ out.writeObject( this.eventSupport );
for ( int i = 0, length = objects.length; i < length; i++ ) {
out.writeObject( objects[i] );
@@ -210,6 +214,7 @@
this.globals = (Map) childStream.readObject();
this.config = (RuleBaseConfiguration) childStream.readObject();
+ this.eventSupport = (RuleBaseEventSupport) childStream.readObject();
this.statefulSessions = new ObjectHashSet();
@@ -306,6 +311,8 @@
wms[lastAquiredLock].getLock().lock();
}
+ this.eventSupport.fireBeforePackageAdded( newPkg );
+
if ( pkg != null ) {
mergePackage( pkg,
newPkg );
@@ -334,7 +341,7 @@
final Rule[] rules = newPkg.getRules();
for ( int i = 0; i < rules.length; ++i ) {
- addRule( rules[i] );
+ addRule( newPkg, rules[i] );
}
//and now the rule flows
@@ -349,6 +356,8 @@
this.packageClassLoader.addClassLoader( newPkg.getPackageCompilationData().getClassLoader() );
+ this.eventSupport.fireAfterPackageAdded( newPkg );
+
} finally {
// Iterate each workingMemory and attempt to fire any rules, that were activated as a result
// of the new rule addition. Unlock after fireAllRules();
@@ -427,13 +436,18 @@
}
}
}
-
- protected synchronized void addRule(final Rule rule) throws InvalidPatternException {
+
+ private synchronized void addRule( final Package pkg, final Rule rule ) throws InvalidPatternException {
+ this.eventSupport.fireBeforeRuleAdded( pkg, rule );
if ( !rule.isValid() ) {
throw new IllegalArgumentException( "The rule called " + rule.getName() + " is not valid. Check for compile errors reported." );
}
+ addRule( rule );
+ this.eventSupport.fireAfterRuleAdded( pkg, rule );
}
+ protected abstract void addRule(final Rule rule) throws InvalidPatternException;
+
public synchronized void removePackage(final String packageName) {
synchronized ( this.pkgs ) {
final Package pkg = (Package) this.pkgs.get( packageName );
@@ -453,11 +467,13 @@
for ( lastAquiredLock = 0; lastAquiredLock < wms.length; lastAquiredLock++ ) {
wms[lastAquiredLock].getLock().lock();
}
+
+ this.eventSupport.fireBeforePackageRemoved( pkg );
final Rule[] rules = pkg.getRules();
for ( int i = 0; i < rules.length; ++i ) {
- removeRule( rules[i] );
+ removeRule( pkg, rules[i] );
}
this.packageClassLoader.removeClassLoader( pkg.getPackageCompilationData().getClassLoader() );
@@ -486,6 +502,9 @@
}
// removing the package itself from the list
this.pkgs.remove( pkg.getName() );
+
+ this.eventSupport.fireAfterPackageRemoved( pkg );
+
} finally {
// Iterate each workingMemory and attempt to fire any rules, that were activated as a result
// of the new rule addition. Unlock after fireAllRules();
@@ -527,7 +546,7 @@
wms[lastAquiredLock].getLock().lock();
}
- removeRule( rule );
+ removeRule( pkg, rule );
compilationData = pkg.removeRule( rule );
if ( this.reloadPackageCompilationData == null ) {
this.reloadPackageCompilationData = new ReloadPackageCompilationData();
@@ -545,6 +564,12 @@
}
}
}
+
+ private void removeRule( final Package pkg, final Rule rule ) {
+ this.eventSupport.fireBeforeRuleRemoved( pkg, rule );
+ removeRule( rule );
+ this.eventSupport.fireAfterRuleRemoved( pkg, rule );
+ }
protected abstract void removeRule(Rule rule);
@@ -656,7 +681,23 @@
}
}
+ public void addEventListener(final RuleBaseEventListener listener) {
+ // since the event support is thread-safe, no need for locks... right?
+ this.eventSupport.addEventListener( listener );
+ }
+
+ public void removeEventListener(final RuleBaseEventListener listener) {
+ // since the event support is thread-safe, no need for locks... right?
+ this.eventSupport.removeEventListener( listener );
+ }
+
+ public List getRuleBaseEventListeners() {
+ // since the event support is thread-safe, no need for locks... right?
+ return this.eventSupport.getEventListeners();
+ }
+
public static class ReloadPackageCompilationData implements RuleBaseAction {
+ private static final long serialVersionUID = 1L;
private Set set;
public void addPackageCompilationData(PackageCompilationData packageCompilationData) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-09-12 16:25:00 UTC (rev 15055)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-09-12 16:26:15 UTC (rev 15056)
@@ -41,7 +41,6 @@
import org.drools.WorkingMemory;
import org.drools.RuleBaseConfiguration.AssertBehaviour;
import org.drools.RuleBaseConfiguration.LogicalOverride;
-import org.drools.base.DroolsQuery;
import org.drools.base.MapGlobalResolver;
import org.drools.base.ShadowProxy;
import org.drools.event.AgendaEventListener;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2007-09-12 16:25:00 UTC (rev 15055)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2007-09-12 16:26:15 UTC (rev 15056)
@@ -262,8 +262,6 @@
}
protected synchronized void addRule(final Rule rule) throws InvalidPatternException {
- super.addRule( rule );
-
// This adds the rule. ReteBuilder has a reference to the WorkingMemories and will propagate any existing facts.
this.reteooBuilder.addRule( rule );
}
More information about the jboss-svn-commits
mailing list