[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