[jboss-svn-commits] JBL Code SVN: r15055 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/event and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Sep 12 12:25:01 EDT 2007


Author: tirelli
Date: 2007-09-12 12:25:00 -0400 (Wed, 12 Sep 2007)
New Revision: 15055

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseEventManager.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterPackageAddedEvent.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterPackageRemovedEvent.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterRuleAddedEvent.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterRuleRemovedEvent.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforePackageAddedEvent.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforePackageRemovedEvent.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforeRuleAddedEvent.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforeRuleRemovedEvent.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/RuleBaseEvent.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/RuleBaseEventListener.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/RuleBaseEventSupport.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/event/RuleBaseEventListenerTest.java
Log:
JBRULES-1185: adding support to RuleBase events. Unit test added

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseEventManager.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseEventManager.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseEventManager.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,54 @@
+package org.drools;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.drools.event.RuleBaseEventListener;
+
+/**
+ * The RuleBaseEventManager class is implemented by classes wishing to add,remove and get the various RuleBase EventListeners.
+ *
+ */
+public interface RuleBaseEventManager
+    extends
+    Serializable {
+    /**
+     * Add an event listener.
+     * 
+     * @param listener
+     *            The listener to add.
+     */
+    public void addEventListener(RuleBaseEventListener listener);
+
+    /**
+     * Remove an event listener.
+     * 
+     * @param listener
+     *            The listener to remove.
+     */
+    public void removeEventListener(RuleBaseEventListener listener);
+
+    /**
+     * Returns all event listeners.
+     * 
+     * @return listeners The listeners.
+     */
+    public List getRuleBaseEventListeners();
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterPackageAddedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterPackageAddedEvent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterPackageAddedEvent.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,32 @@
+package org.drools.event;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.rule.Package;
+
+public class AfterPackageAddedEvent extends RuleBaseEvent {
+
+    private static final long serialVersionUID = 400L;
+
+    public AfterPackageAddedEvent(final Package pkg) {
+        super( pkg, null );
+    }
+
+    public String toString() {
+        return "[AfterPackageAdded: package=" + getPackage() + "]";
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterPackageRemovedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterPackageRemovedEvent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterPackageRemovedEvent.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,32 @@
+package org.drools.event;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.rule.Package;
+
+public class AfterPackageRemovedEvent extends RuleBaseEvent {
+
+    private static final long serialVersionUID = 400L;
+
+    public AfterPackageRemovedEvent(final Package pkg) {
+        super( pkg, null );
+    }
+
+    public String toString() {
+        return "[AfterPackageRemoved: package=" + getPackage() + "]";
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterRuleAddedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterRuleAddedEvent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterRuleAddedEvent.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,37 @@
+package org.drools.event;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.rule.Package;
+import org.drools.rule.Rule;
+
+public class AfterRuleAddedEvent extends RuleBaseEvent {
+
+    private static final long serialVersionUID = 400L;
+
+    public AfterRuleAddedEvent(final Package pkg, final Rule rule) {
+        super( pkg, rule );
+    }
+    
+    public Object getSource() {
+        return super.getRule();
+    }
+    
+    public String toString() {
+        return "[AfterRuleAdded: package=" + getPackage() + " rule=" + getRule() + "]";
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterRuleRemovedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterRuleRemovedEvent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/AfterRuleRemovedEvent.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,37 @@
+package org.drools.event;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.rule.Package;
+import org.drools.rule.Rule;
+
+public class AfterRuleRemovedEvent extends RuleBaseEvent {
+
+    private static final long serialVersionUID = 400L;
+
+    public AfterRuleRemovedEvent(final Package pkg, final Rule rule) {
+        super( pkg, rule );
+    }
+    
+    public Object getSource() {
+        return super.getRule();
+    }
+    
+    public String toString() {
+        return "[AfterRuleRemoved: package=" + getPackage() + " rule=" + getRule() + "]";
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforePackageAddedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforePackageAddedEvent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforePackageAddedEvent.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,32 @@
+package org.drools.event;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.rule.Package;
+
+public class BeforePackageAddedEvent extends RuleBaseEvent {
+
+    private static final long serialVersionUID = 400L;
+
+    public BeforePackageAddedEvent(final Package pkg) {
+        super( pkg, null );
+    }
+
+    public String toString() {
+        return "[BeforePackageAdded: package=" + getPackage() + "]";
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforePackageRemovedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforePackageRemovedEvent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforePackageRemovedEvent.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,32 @@
+package org.drools.event;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.rule.Package;
+
+public class BeforePackageRemovedEvent extends RuleBaseEvent {
+
+    private static final long serialVersionUID = 400L;
+
+    public BeforePackageRemovedEvent(final Package pkg) {
+        super( pkg, null );
+    }
+
+    public String toString() {
+        return "[BeforePackageRemoved: package=" + getPackage() + "]";
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforeRuleAddedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforeRuleAddedEvent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforeRuleAddedEvent.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,37 @@
+package org.drools.event;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.rule.Package;
+import org.drools.rule.Rule;
+
+public class BeforeRuleAddedEvent extends RuleBaseEvent {
+
+    private static final long serialVersionUID = 400L;
+
+    public BeforeRuleAddedEvent(final Package pkg, final Rule rule) {
+        super( pkg, rule );
+    }
+    
+    public Object getSource() {
+        return super.getRule();
+    }
+    
+    public String toString() {
+        return "[BeforeRuleAdded: package=" + getPackage() + " rule=" + getRule() + "]";
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforeRuleRemovedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforeRuleRemovedEvent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/BeforeRuleRemovedEvent.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,37 @@
+package org.drools.event;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.rule.Package;
+import org.drools.rule.Rule;
+
+public class BeforeRuleRemovedEvent extends RuleBaseEvent {
+
+    private static final long serialVersionUID = 400L;
+
+    public BeforeRuleRemovedEvent(final Package pkg, final Rule rule) {
+        super( pkg, rule );
+    }
+    
+    public Object getSource() {
+        return super.getRule();
+    }
+    
+    public String toString() {
+        return "[BeforeRuleRemoved: package=" + getPackage() + " rule=" + getRule() + "]";
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/RuleBaseEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/RuleBaseEvent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/RuleBaseEvent.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,43 @@
+package org.drools.event;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.EventObject;
+import org.drools.rule.Package;
+import org.drools.rule.Rule;
+
+public class RuleBaseEvent extends EventObject {
+
+    private static final long serialVersionUID = 400L;
+    private final Package pkg;
+    private final Rule rule;
+
+    public RuleBaseEvent(final Package pkg, final Rule rule) {
+        super( pkg );
+        this.pkg = pkg;
+        this.rule = rule;
+    }
+
+    public Package getPackage() {
+        return this.pkg;
+    }
+    
+    public Rule getRule() {
+        return this.rule;
+    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/RuleBaseEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/RuleBaseEventListener.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/RuleBaseEventListener.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,57 @@
+package org.drools.event;
+
+import java.util.EventListener;
+
+public interface RuleBaseEventListener
+    extends
+    EventListener {
+
+    /**
+     * Method called before a new package is added to the rule base
+     * @param event
+     */
+    void beforePackageAdded(BeforePackageAddedEvent event);
+
+    /**
+     * Method called after a new package is added to the rule base
+     * @param event
+     */
+    void afterPackageAdded(AfterPackageAddedEvent event);
+
+    /**
+     * Method called before a package is removed from the rule base
+     * @param event
+     */
+    void beforePackageRemoved(BeforePackageRemovedEvent event);
+
+    /**
+     * Method called after a package is removed from the rule base
+     * @param event
+     */
+    void afterPackageRemoved(AfterPackageRemovedEvent event);
+
+    /**
+     * Method called before a new rule is added to the rule base
+     * @param event
+     */
+    void beforeRuleAdded(BeforeRuleAddedEvent event);
+
+    /**
+     * Method called after a new rule is added to the rule base
+     * @param event
+     */
+    void afterRuleAdded(AfterRuleAddedEvent event);
+
+    /**
+     * Method called before a rule is removed from the rule base
+     * @param event
+     */
+    void beforeRuleRemoved(BeforeRuleRemovedEvent event);
+
+    /**
+     * Method called after a rule is removed from the rule base
+     * @param event
+     */
+    void afterRuleRemoved(AfterRuleRemovedEvent event);
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/RuleBaseEventSupport.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/RuleBaseEventSupport.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/RuleBaseEventSupport.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,168 @@
+package org.drools.event;
+
+/*
+ * Copyright 2007 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.drools.rule.Package;
+import org.drools.rule.Rule;
+
+/**
+ * 
+ * @author etirelli
+ */
+public class RuleBaseEventSupport
+    implements
+    Serializable {
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 400L;
+    private final List        listeners        = Collections.synchronizedList( new ArrayList() );
+
+    public RuleBaseEventSupport() {
+    }
+
+    public void addEventListener(final RuleBaseEventListener listener) {
+        if ( !this.listeners.contains( listener ) ) {
+            this.listeners.add( listener );
+        }
+    }
+
+    public void removeEventListener(final RuleBaseEventListener listener) {
+        this.listeners.remove( listener );
+    }
+
+    public List getEventListeners() {
+        return Collections.unmodifiableList( this.listeners );
+    }
+
+    public int size() {
+        return this.listeners.size();
+    }
+
+    public boolean isEmpty() {
+        return this.listeners.isEmpty();
+    }
+
+    public void fireBeforePackageAdded(Package newPkg) {
+        if ( this.listeners.isEmpty() ) {
+            return;
+        }
+
+        final BeforePackageAddedEvent event = new BeforePackageAddedEvent( newPkg );
+
+        for ( int i = 0, size = this.listeners.size(); i < size; i++ ) {
+            ((RuleBaseEventListener) this.listeners.get( i )).beforePackageAdded( event );
+        }
+    }
+
+    public void fireAfterPackageAdded(Package newPkg) {
+        if ( this.listeners.isEmpty() ) {
+            return;
+        }
+
+        final AfterPackageAddedEvent event = new AfterPackageAddedEvent( newPkg );
+
+        for ( int i = 0, size = this.listeners.size(); i < size; i++ ) {
+            ((RuleBaseEventListener) this.listeners.get( i )).afterPackageAdded( event );
+        }
+    }
+
+    public void fireBeforePackageRemoved(Package pkg) {
+        if ( this.listeners.isEmpty() ) {
+            return;
+        }
+
+        final BeforePackageRemovedEvent event = new BeforePackageRemovedEvent( pkg );
+
+        for ( int i = 0, size = this.listeners.size(); i < size; i++ ) {
+            ((RuleBaseEventListener) this.listeners.get( i )).beforePackageRemoved( event );
+        }
+    }
+
+    public void fireAfterPackageRemoved(Package pkg) {
+        if ( this.listeners.isEmpty() ) {
+            return;
+        }
+
+        final AfterPackageRemovedEvent event = new AfterPackageRemovedEvent( pkg );
+
+        for ( int i = 0, size = this.listeners.size(); i < size; i++ ) {
+            ((RuleBaseEventListener) this.listeners.get( i )).afterPackageRemoved( event );
+        }
+    }
+
+    public void fireBeforeRuleAdded(Package newPkg,
+                                    Rule rule) {
+        if ( this.listeners.isEmpty() ) {
+            return;
+        }
+
+        final BeforeRuleAddedEvent event = new BeforeRuleAddedEvent( newPkg,
+                                                                     rule );
+
+        for ( int i = 0, size = this.listeners.size(); i < size; i++ ) {
+            ((RuleBaseEventListener) this.listeners.get( i )).beforeRuleAdded( event );
+        }
+    }
+
+    public void fireAfterRuleAdded(Package newPkg,
+                                   Rule rule) {
+        if ( this.listeners.isEmpty() ) {
+            return;
+        }
+
+        final AfterRuleAddedEvent event = new AfterRuleAddedEvent( newPkg,
+                                                                   rule );
+
+        for ( int i = 0, size = this.listeners.size(); i < size; i++ ) {
+            ((RuleBaseEventListener) this.listeners.get( i )).afterRuleAdded( event );
+        }
+    }
+
+    public void fireBeforeRuleRemoved(Package pkg,
+                                      Rule rule) {
+        if ( this.listeners.isEmpty() ) {
+            return;
+        }
+
+        final BeforeRuleRemovedEvent event = new BeforeRuleRemovedEvent( pkg,
+                                                                         rule );
+
+        for ( int i = 0, size = this.listeners.size(); i < size; i++ ) {
+            ((RuleBaseEventListener) this.listeners.get( i )).beforeRuleRemoved( event );
+        }
+    }
+
+    public void fireAfterRuleRemoved(Package pkg,
+                                     Rule rule) {
+        if ( this.listeners.isEmpty() ) {
+            return;
+        }
+
+        final AfterRuleRemovedEvent event = new AfterRuleRemovedEvent( pkg,
+                                                                       rule );
+
+        for ( int i = 0, size = this.listeners.size(); i < size; i++ ) {
+            ((RuleBaseEventListener) this.listeners.get( i )).afterRuleRemoved( event );
+        }
+    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/event/RuleBaseEventListenerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/event/RuleBaseEventListenerTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/event/RuleBaseEventListenerTest.java	2007-09-12 16:25:00 UTC (rev 15055)
@@ -0,0 +1,301 @@
+/*
+ * Copyright 2007 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Created on Sep 11, 2007
+ */
+package org.drools.event;
+
+import junit.framework.TestCase;
+
+import org.drools.Cheese;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.base.ClassFieldExtractor;
+import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassObjectType;
+import org.drools.base.FieldFactory;
+import org.drools.base.ValueType;
+import org.drools.base.evaluators.Operator;
+import org.drools.rule.LiteralConstraint;
+import org.drools.rule.Package;
+import org.drools.rule.Pattern;
+import org.drools.rule.Rule;
+import org.drools.spi.Consequence;
+import org.drools.spi.Evaluator;
+import org.drools.spi.FieldValue;
+import org.drools.spi.KnowledgeHelper;
+
+/**
+ * @author etirelli
+ *
+ */
+public class RuleBaseEventListenerTest extends TestCase {
+
+    private RuleBase ruleBase;
+    private TestRuleBaseListener listener1;
+    private TestRuleBaseListener listener2;
+    private Package pkg;
+
+    /* (non-Javadoc)
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+        
+        ruleBase = RuleBaseFactory.newRuleBase();
+        listener1 = new TestRuleBaseListener("(listener-1) ");
+        listener2 = new TestRuleBaseListener("(listener-2) ");
+        ruleBase.addEventListener( listener1 );
+        ruleBase.addEventListener( listener2 );
+        
+        
+        final Rule rule1 = new Rule( "test1" );
+        final ClassObjectType cheeseObjectType = new ClassObjectType( Cheese.class );
+        final Pattern pattern = new Pattern( 0,
+                                    cheeseObjectType );
+
+        final ClassFieldExtractor extractor = ClassFieldExtractorCache.getExtractor( Cheese.class,
+                                                                                     "type",
+                                                                                     getClass().getClassLoader() );
+
+        final FieldValue field = FieldFactory.getFieldValue( "cheddar" );
+
+        final Evaluator evaluator = ValueType.STRING_TYPE.getEvaluator( Operator.EQUAL );
+
+        final LiteralConstraint constraint = new LiteralConstraint( extractor,
+                                                              evaluator,
+                                                              field );
+        pattern.addConstraint( constraint );
+        rule1.addPattern( pattern );
+
+        rule1.setConsequence( new Consequence() {
+            private static final long serialVersionUID = 1L;
+
+            public void evaluate(final KnowledgeHelper knowledgeHelper,
+                                 final WorkingMemory workingMemory) throws Exception {
+            }
+        } );
+        
+        final Rule rule2 = new Rule( "test2" );
+        final ClassObjectType cheeseObjectType2 = new ClassObjectType( Cheese.class );
+        final Pattern pattern2 = new Pattern( 0,
+                                    cheeseObjectType2 );
+
+        final FieldValue field2 = FieldFactory.getFieldValue( "stilton" );
+
+        final LiteralConstraint constraint2 = new LiteralConstraint( extractor,
+                                                              evaluator,
+                                                              field2 );
+        pattern2.addConstraint( constraint2 );
+        rule2.addPattern( pattern2 );
+
+        rule2.setConsequence( new Consequence() {
+            private static final long serialVersionUID = 1L;
+
+            public void evaluate(final KnowledgeHelper knowledgeHelper,
+                                 final WorkingMemory workingMemory) throws Exception {
+            }
+        } );
+        
+        pkg = new Package("org.drools.test1");
+        pkg.addRule( rule1 );
+        pkg.addRule( rule2 );
+        
+    }
+
+    /* (non-Javadoc)
+     * @see junit.framework.TestCase#tearDown()
+     */
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    public void testAddPackageEvents() throws Exception {
+        assertEquals( 0,
+                      listener1.getBeforePackageAdded() );
+        assertEquals( 0,
+                      listener1.getAfterPackageAdded() );
+        assertEquals( 0,
+                      listener2.getBeforePackageAdded() );
+        assertEquals( 0,
+                      listener2.getAfterPackageAdded() );
+        assertEquals( 0,
+                      listener1.getBeforeRuleAdded() );
+        assertEquals( 0,
+                      listener1.getAfterRuleAdded() );
+        assertEquals( 0,
+                      listener2.getBeforeRuleAdded() );
+        assertEquals( 0,
+                      listener2.getAfterRuleAdded() );
+
+        this.ruleBase.addPackage( pkg );
+        
+        assertEquals( 1,
+                      listener1.getBeforePackageAdded() );
+        assertEquals( 1,
+                      listener1.getAfterPackageAdded() );
+        assertEquals( 1,
+                      listener2.getBeforePackageAdded() );
+        assertEquals( 1,
+                      listener2.getAfterPackageAdded() );
+        assertEquals( 2,
+                      listener1.getBeforeRuleAdded() );
+        assertEquals( 2,
+                      listener1.getAfterRuleAdded() );
+        assertEquals( 2,
+                      listener2.getBeforeRuleAdded() );
+        assertEquals( 2,
+                      listener2.getAfterRuleAdded() );
+    }
+    
+    public void testRemovePackageEvents() throws Exception {
+        this.ruleBase.addPackage( pkg );
+
+        assertEquals( 0,
+                      listener1.getBeforePackageRemoved() );
+        assertEquals( 0,
+                      listener1.getAfterPackageRemoved() );
+        assertEquals( 0,
+                      listener2.getBeforePackageRemoved() );
+        assertEquals( 0,
+                      listener2.getAfterPackageRemoved() );
+
+        assertEquals( 0,
+                      listener1.getBeforeRuleRemoved() );
+        assertEquals( 0,
+                      listener1.getAfterRuleRemoved() );
+        assertEquals( 0,
+                      listener2.getBeforeRuleRemoved() );
+        assertEquals( 0,
+                      listener2.getAfterRuleRemoved() );
+
+        this.ruleBase.removePackage( "org.drools.test1" );
+        
+        assertEquals( 1,
+                      listener1.getBeforePackageRemoved() );
+        assertEquals( 1,
+                      listener1.getAfterPackageRemoved() );
+        assertEquals( 1,
+                      listener2.getBeforePackageRemoved() );
+        assertEquals( 1,
+                      listener2.getAfterPackageRemoved() );
+        assertEquals( 2,
+                      listener1.getBeforeRuleRemoved() );
+        assertEquals( 2,
+                      listener1.getAfterRuleRemoved() );
+        assertEquals( 2,
+                      listener2.getBeforeRuleRemoved() );
+        assertEquals( 2,
+                      listener2.getAfterRuleRemoved() );
+
+    }
+    
+    public static class TestRuleBaseListener implements RuleBaseEventListener {
+        private String id;
+        private int beforePackageAdded = 0;
+        private int afterPackageAdded = 0;
+        private int beforePackageRemoved = 0;
+        private int afterPackageRemoved = 0;
+        private int beforeRuleAdded = 0;
+        private int afterRuleAdded = 0;
+        private int beforeRuleRemoved = 0;
+        private int afterRuleRemoved = 0;
+        
+
+        public TestRuleBaseListener(String id) {
+            super();
+            this.id = id;
+        }
+
+        public void afterPackageAdded(AfterPackageAddedEvent event) {
+//            System.out.println( this.id + event );
+            this.afterPackageAdded++;
+        }
+
+        public void beforePackageAdded(BeforePackageAddedEvent event) {
+//            System.out.println( this.id + event );
+            this.beforePackageAdded++;
+        }
+
+        protected int getAfterPackageAdded() {
+            return afterPackageAdded;
+        }
+
+        protected int getBeforePackageAdded() {
+            return beforePackageAdded;
+        }
+
+        protected String getId() {
+            return id;
+        }
+
+        public void afterPackageRemoved(AfterPackageRemovedEvent event) {
+//            System.out.println( this.id + event );
+            this.afterPackageRemoved++;
+        }
+
+        public void beforePackageRemoved(BeforePackageRemovedEvent event) {
+//            System.out.println( this.id + event );
+            this.beforePackageRemoved++;
+        }
+
+        protected int getAfterPackageRemoved() {
+            return afterPackageRemoved;
+        }
+
+        protected int getBeforePackageRemoved() {
+            return beforePackageRemoved;
+        }
+
+        public int getAfterRuleAdded() {
+            return afterRuleAdded;
+        }
+
+        public int getBeforeRuleAdded() {
+            return beforeRuleAdded;
+        }
+
+        public void afterRuleAdded(AfterRuleAddedEvent event) {
+//            System.out.println( this.id + event );
+            this.afterRuleAdded++;
+        }
+
+        public void beforeRuleAdded(BeforeRuleAddedEvent event) {
+//            System.out.println( this.id + event );
+            this.beforeRuleAdded++;
+        }
+
+        public int getAfterRuleRemoved() {
+            return afterRuleRemoved;
+        }
+
+        public int getBeforeRuleRemoved() {
+            return beforeRuleRemoved;
+        }
+
+        public void afterRuleRemoved(AfterRuleRemovedEvent event) {
+//            System.out.println( this.id + event );
+            this.afterRuleRemoved++;
+        }
+
+        public void beforeRuleRemoved(BeforeRuleRemovedEvent event) {
+//            System.out.println( this.id + event );
+            this.beforeRuleRemoved++;
+        }
+        
+    }
+    
+}




More information about the jboss-svn-commits mailing list