[jboss-svn-commits] JBL Code SVN: r33621 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/event and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jun 24 09:14:55 EDT 2010
Author: eaa
Date: 2010-06-24 09:14:53 -0400 (Thu, 24 Jun 2010)
New Revision: 33621
Added:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/AfterChangeSetAppliedEvent.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/AfterChangeSetProcessedEvent.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/AfterResourceProcessedEvent.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/BeforeChangeSetAppliedEvent.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/BeforeChangeSetProcessedEvent.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/BeforeResourceProcessedEvent.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/ChangeSetProcessingEvent.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/KnowledgeAgentEventListener.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/KnowledgeBaseUpdatedEvent.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/ResourceCompilationFailedEvent.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/rule/DebugKnowledgeAgentEventListener.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/rule/DefaultKnowledgeAgentEventListener.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/KnowledgeAgentEventListenerTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/KnowledgeAgentEventSupport.java
Modified:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgent.java
Log:
JBRULES-2557: Expose Knowledge Agent events
- KnowledgeAgentImpl: now exposes Before/AfterChangeSetApplied, Before/AfterChangeSetProcessed, Before/AfterResourceProcessed, KnowledgeBaseUpdated and ResourceCompilationFailed
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgent.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgent.java 2010-06-24 12:38:11 UTC (rev 33620)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgent.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -3,6 +3,7 @@
import org.drools.ChangeSet;
import org.drools.KnowledgeBase;
import org.drools.SystemEventListener;
+import org.drools.event.knowledgeagent.KnowledgeAgentEventListener;
import org.drools.io.Resource;
import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.runtime.StatelessKnowledgeSession;
@@ -15,6 +16,16 @@
*
*/
public interface KnowledgeAgent {
+
+ void addEventListener(KnowledgeAgentEventListener listener);
+
+
+ public enum ResourceStatus{
+ RESOURCE_ADDED,
+ RESOURCE_MODIFIED,
+ RESOURCE_REMOVED;
+ }
+
/**
*
* @return
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/AfterChangeSetAppliedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/AfterChangeSetAppliedEvent.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/AfterChangeSetAppliedEvent.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2010 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.
+ * under the License.
+ */
+
+package org.drools.event.knowledgeagent;
+
+import org.drools.ChangeSet;
+
+/**
+ *
+ * @author esteban
+ */
+public class AfterChangeSetAppliedEvent extends ChangeSetProcessingEvent{
+
+ private static final long serialVersionUID = 510L;
+
+ public AfterChangeSetAppliedEvent(ChangeSet changeSet) {
+ super(changeSet);
+ }
+
+ @Override
+ public String toString() {
+ return "==>[AfterChangeSetAppliedEvent: " + getChangeSet()+ "]";
+ }
+
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/AfterChangeSetProcessedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/AfterChangeSetProcessedEvent.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/AfterChangeSetProcessedEvent.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2010 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.
+ * under the License.
+ */
+package org.drools.event.knowledgeagent;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.drools.ChangeSet;
+import org.drools.definition.KnowledgeDefinition;
+import org.drools.io.Resource;
+
+/**
+ *
+ * @author esteban
+ */
+public class AfterChangeSetProcessedEvent extends ChangeSetProcessingEvent {
+
+ private static final long serialVersionUID = 510L;
+ private final List<Resource> addedResources;
+ private final Map<Resource, Set<KnowledgeDefinition>> modifiedResourceMappings;
+ private final Map<Resource, Set<KnowledgeDefinition>> removedResourceMappings;
+
+ public AfterChangeSetProcessedEvent(ChangeSet changeSet, List<Resource> addedResources, Map<Resource, Set<KnowledgeDefinition>> modifiedResourceMappings, Map<Resource, Set<KnowledgeDefinition>> removedResourceMappings) {
+ super(changeSet);
+ this.addedResources = addedResources;
+ this.modifiedResourceMappings = modifiedResourceMappings;
+ this.removedResourceMappings = removedResourceMappings;
+ }
+
+ public List<Resource> getAddedResources() {
+ return addedResources;
+ }
+
+ public Map<Resource, Set<KnowledgeDefinition>> getModifiedResourceMappings() {
+ return modifiedResourceMappings;
+ }
+
+ public Map<Resource, Set<KnowledgeDefinition>> getRemovedResourceMappings() {
+ return removedResourceMappings;
+ }
+
+ public static long getSerialVersionUID() {
+ return serialVersionUID;
+ }
+
+
+
+ @Override
+ public String toString() {
+ return "==>[AfterChangeSetProcessedEvent: " + getChangeSet() + "]";
+ }
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/AfterResourceProcessedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/AfterResourceProcessedEvent.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/AfterResourceProcessedEvent.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2010 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.
+ * under the License.
+ */
+
+package org.drools.event.knowledgeagent;
+
+import org.drools.ChangeSet;
+import org.drools.agent.KnowledgeAgent.ResourceStatus;
+import org.drools.builder.ResourceType;
+import org.drools.io.Resource;
+
+/**
+ *
+ * @author esteban
+ */
+public class AfterResourceProcessedEvent extends ChangeSetProcessingEvent{
+
+ private static final long serialVersionUID = 510L;
+
+ private final Resource resource;
+ private final ResourceType resourceType;
+ private final ResourceStatus status;
+
+ public AfterResourceProcessedEvent(ChangeSet changeSet, Resource resource, ResourceType resourceType, ResourceStatus status) {
+ super(changeSet);
+ this.resource = resource;
+ this.resourceType = resourceType;
+ this.status = status;
+ }
+
+ public Resource getResource() {
+ return resource;
+ }
+
+ public ResourceStatus getStatus() {
+ return status;
+ }
+
+ public ResourceType getResourceType() {
+ return resourceType;
+ }
+
+ @Override
+ public String toString() {
+ return "==>[AfterResourceProcessedEvent("+getStatus()+"): " + getResource()+ "]";
+ }
+
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/BeforeChangeSetAppliedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/BeforeChangeSetAppliedEvent.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/BeforeChangeSetAppliedEvent.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2010 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.
+ * under the License.
+ */
+
+package org.drools.event.knowledgeagent;
+
+import org.drools.ChangeSet;
+
+/**
+ *
+ * @author esteban
+ */
+public class BeforeChangeSetAppliedEvent extends ChangeSetProcessingEvent{
+
+ private static final long serialVersionUID = 510L;
+
+ public BeforeChangeSetAppliedEvent(ChangeSet changeSet) {
+ super(changeSet);
+ }
+
+ @Override
+ public String toString() {
+ return "==>[BeforeChangeSetAppliedEvent: " + getChangeSet()+ "]";
+ }
+
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/BeforeChangeSetProcessedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/BeforeChangeSetProcessedEvent.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/BeforeChangeSetProcessedEvent.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2010 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.
+ * under the License.
+ */
+
+package org.drools.event.knowledgeagent;
+
+import org.drools.ChangeSet;
+
+/**
+ *
+ * @author esteban
+ */
+public class BeforeChangeSetProcessedEvent extends ChangeSetProcessingEvent{
+
+ private static final long serialVersionUID = 510L;
+
+ public BeforeChangeSetProcessedEvent(ChangeSet changeSet) {
+ super(changeSet);
+ }
+
+ @Override
+ public String toString() {
+ return "==>[BeforeChangeSetProcessedEvent: " + getChangeSet()+ "]";
+ }
+
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/BeforeResourceProcessedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/BeforeResourceProcessedEvent.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/BeforeResourceProcessedEvent.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2010 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.
+ * under the License.
+ */
+
+package org.drools.event.knowledgeagent;
+
+import org.drools.ChangeSet;
+import org.drools.agent.KnowledgeAgent.ResourceStatus;
+import org.drools.builder.ResourceType;
+import org.drools.io.Resource;
+
+/**
+ *
+ * @author esteban
+ */
+public class BeforeResourceProcessedEvent extends ChangeSetProcessingEvent{
+
+ private static final long serialVersionUID = 510L;
+
+ private final Resource resource;
+ private final ResourceType resourceType;
+ private final ResourceStatus status;
+
+ public BeforeResourceProcessedEvent(ChangeSet changeSet, Resource resource, ResourceType resourceType, ResourceStatus status) {
+ super(changeSet);
+ this.resource = resource;
+ this.resourceType = resourceType;
+ this.status = status;
+ }
+
+ public Resource getResource() {
+ return resource;
+ }
+
+ public ResourceStatus getStatus() {
+ return status;
+ }
+
+ public ResourceType getResourceType() {
+ return resourceType;
+ }
+
+ @Override
+ public String toString() {
+ return "==>[BeforeResourceProcessedEvent(" + getStatus() + "): " + getResource() + "]";
+ }
+
+
+
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/ChangeSetProcessingEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/ChangeSetProcessingEvent.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/ChangeSetProcessingEvent.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,38 @@
+package org.drools.event.knowledgeagent;
+
+/*
+ * Copyright 2010 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.ChangeSet;
+
+public class ChangeSetProcessingEvent
+ extends EventObject {
+
+ private static final long serialVersionUID = 510L;
+
+ public ChangeSetProcessingEvent(ChangeSet changeSet) {
+ super(changeSet);
+ }
+
+ public ChangeSet getChangeSet() {
+ return (ChangeSet) getSource();
+ }
+
+ @Override
+ public String toString() {
+ return "==>[ChangeSetProcessingEvent: " + getChangeSet() + "]";
+ }
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/KnowledgeAgentEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/KnowledgeAgentEventListener.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/KnowledgeAgentEventListener.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,44 @@
+package org.drools.event.knowledgeagent;
+
+/*
+ * Copyright 2010 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.EventListener;
+
+
+/**
+ * @author <a href="mailto:esteban.aliverti at gmail.com">Esteban Aliverti</a>
+ */
+public interface KnowledgeAgentEventListener
+ extends
+ EventListener {
+
+ void beforeChangeSetApplied(BeforeChangeSetAppliedEvent event);
+
+ void afterChangeSetApplied(AfterChangeSetAppliedEvent event);
+
+ void beforeChangeSetProcessed(BeforeChangeSetProcessedEvent event);
+
+ void afterChangeSetProcessed(AfterChangeSetProcessedEvent event);
+
+ void beforeResourceProcessed(BeforeResourceProcessedEvent event);
+
+ void afterResourceProcessed(AfterResourceProcessedEvent event);
+
+ void knowledgeBaseUpdated(KnowledgeBaseUpdatedEvent event);
+
+ void resourceCompilationFailed(ResourceCompilationFailedEvent event);
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/KnowledgeBaseUpdatedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/KnowledgeBaseUpdatedEvent.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/KnowledgeBaseUpdatedEvent.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2010 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.
+ * under the License.
+ */
+
+package org.drools.event.knowledgeagent;
+
+import java.util.EventObject;
+import org.drools.KnowledgeBase;
+
+/**
+ *
+ * @author esteban
+ */
+public class KnowledgeBaseUpdatedEvent extends EventObject{
+
+ private static final long serialVersionUID = 510L;
+
+
+ public KnowledgeBaseUpdatedEvent(KnowledgeBase kbase) {
+ super(kbase);
+ }
+
+ public KnowledgeBase getKnowledgeBase() {
+ return (KnowledgeBase)this.getSource();
+ }
+
+ @Override
+ public String toString() {
+ return "==>[KnowledgeBaseUpdatedEvent: " + getKnowledgeBase()+ "]";
+ }
+
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/ResourceCompilationFailedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/ResourceCompilationFailedEvent.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/knowledgeagent/ResourceCompilationFailedEvent.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2010 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.
+ * under the License.
+ */
+
+package org.drools.event.knowledgeagent;
+
+import java.util.EventObject;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.ResourceType;
+import org.drools.io.Resource;
+
+/**
+ *
+ * @author esteban
+ */
+public class ResourceCompilationFailedEvent extends EventObject{
+
+ private static final long serialVersionUID = 510L;
+
+ private final Resource resource;
+ private final ResourceType resourceType;
+
+ public ResourceCompilationFailedEvent(KnowledgeBuilder kbuilder, Resource resource, ResourceType resourceType) {
+ super(kbuilder);
+ this.resource = resource;
+ this.resourceType = resourceType;
+ }
+
+ public Resource getResource() {
+ return resource;
+ }
+
+ public ResourceType getResourceType() {
+ return resourceType;
+ }
+
+ public KnowledgeBuilder getKnowledgeBuilder() {
+ return (KnowledgeBuilder)this.getSource();
+ }
+
+ @Override
+ public String toString() {
+ return "==>[ResourceCompilationFailedEvent: " + getKnowledgeBuilder() + "]";
+ }
+
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/rule/DebugKnowledgeAgentEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/rule/DebugKnowledgeAgentEventListener.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/rule/DebugKnowledgeAgentEventListener.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,49 @@
+package org.drools.event.rule;
+
+import org.drools.event.knowledgeagent.AfterChangeSetAppliedEvent;
+import org.drools.event.knowledgeagent.AfterChangeSetProcessedEvent;
+import org.drools.event.knowledgeagent.AfterResourceProcessedEvent;
+import org.drools.event.knowledgeagent.BeforeChangeSetAppliedEvent;
+import org.drools.event.knowledgeagent.BeforeChangeSetProcessedEvent;
+import org.drools.event.knowledgeagent.BeforeResourceProcessedEvent;
+import org.drools.event.knowledgeagent.KnowledgeAgentEventListener;
+import org.drools.event.knowledgeagent.KnowledgeBaseUpdatedEvent;
+import org.drools.event.knowledgeagent.ResourceCompilationFailedEvent;
+
+public class DebugKnowledgeAgentEventListener
+ implements
+ KnowledgeAgentEventListener {
+
+ public void afterChangeSetApplied(AfterChangeSetAppliedEvent event) {
+ System.err.print(event);
+ }
+
+ public void afterChangeSetProcessed(AfterChangeSetProcessedEvent event) {
+ System.err.print(event);
+ }
+
+ public void afterResourceProcessed(AfterResourceProcessedEvent event) {
+ System.err.print(event);
+ }
+
+ public void beforeChangeSetApplied(BeforeChangeSetAppliedEvent event) {
+ System.err.print(event);
+ }
+
+ public void beforeChangeSetProcessed(BeforeChangeSetProcessedEvent event) {
+ System.err.print(event);
+ }
+
+ public void beforeResourceProcessed(BeforeResourceProcessedEvent event) {
+ System.err.print(event);
+ }
+
+ public void knowledgeBaseUpdated(KnowledgeBaseUpdatedEvent event) {
+ System.err.print(event);
+ }
+
+ public void resourceCompilationFailed(ResourceCompilationFailedEvent event) {
+ System.err.print(event);
+ }
+
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/rule/DefaultKnowledgeAgentEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/rule/DefaultKnowledgeAgentEventListener.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/rule/DefaultKnowledgeAgentEventListener.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,41 @@
+package org.drools.event.rule;
+
+import org.drools.event.knowledgeagent.AfterChangeSetAppliedEvent;
+import org.drools.event.knowledgeagent.AfterChangeSetProcessedEvent;
+import org.drools.event.knowledgeagent.AfterResourceProcessedEvent;
+import org.drools.event.knowledgeagent.BeforeChangeSetAppliedEvent;
+import org.drools.event.knowledgeagent.BeforeChangeSetProcessedEvent;
+import org.drools.event.knowledgeagent.BeforeResourceProcessedEvent;
+import org.drools.event.knowledgeagent.KnowledgeAgentEventListener;
+import org.drools.event.knowledgeagent.KnowledgeBaseUpdatedEvent;
+import org.drools.event.knowledgeagent.ResourceCompilationFailedEvent;
+
+public class DefaultKnowledgeAgentEventListener
+ implements
+ KnowledgeAgentEventListener {
+
+ public void afterChangeSetApplied(AfterChangeSetAppliedEvent event) {
+ }
+
+ public void afterChangeSetProcessed(AfterChangeSetProcessedEvent event) {
+ }
+
+ public void afterResourceProcessed(AfterResourceProcessedEvent event) {
+ }
+
+ public void beforeChangeSetApplied(BeforeChangeSetAppliedEvent event) {
+ }
+
+ public void beforeChangeSetProcessed(BeforeChangeSetProcessedEvent event) {
+ }
+
+ public void beforeResourceProcessed(BeforeResourceProcessedEvent event) {
+ }
+
+ public void knowledgeBaseUpdated(KnowledgeBaseUpdatedEvent event) {
+ }
+
+ public void resourceCompilationFailed(ResourceCompilationFailedEvent event) {
+ }
+
+}
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/KnowledgeAgentEventListenerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/KnowledgeAgentEventListenerTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/KnowledgeAgentEventListenerTest.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,489 @@
+package org.drools.agent;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.core.util.FileManager;
+import org.drools.event.knowledgeagent.AfterChangeSetAppliedEvent;
+import org.drools.event.knowledgeagent.AfterChangeSetProcessedEvent;
+import org.drools.event.knowledgeagent.AfterResourceProcessedEvent;
+import org.drools.event.knowledgeagent.BeforeChangeSetAppliedEvent;
+import org.drools.event.knowledgeagent.BeforeChangeSetProcessedEvent;
+import org.drools.event.knowledgeagent.BeforeResourceProcessedEvent;
+import org.drools.event.knowledgeagent.KnowledgeAgentEventListener;
+import org.drools.event.knowledgeagent.KnowledgeBaseUpdatedEvent;
+import org.drools.event.knowledgeagent.ResourceCompilationFailedEvent;
+import org.drools.io.ResourceChangeScannerConfiguration;
+import org.drools.io.ResourceFactory;
+import org.drools.io.impl.ResourceChangeNotifierImpl;
+import org.drools.io.impl.ResourceChangeScannerImpl;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.ResourceHandler;
+
+public class KnowledgeAgentEventListenerTest extends TestCase {
+
+ FileManager fileManager;
+ private Server server;
+ private final Object lock = new Object();
+ private volatile boolean changeSetApplied;
+ private boolean compilationErrors;
+ private boolean kbaseUpdated;
+ private int beforeChangeSetProcessed;
+ private int afterChangeSetProcessed;
+ private int beforeChangeSetApplied;
+ private int afterChangeSetApplied;
+ private int beforeResourceProcessed;
+ private int afterResourceProcessed;
+
+
+ @Override
+ protected void setUp() throws Exception {
+ fileManager = new FileManager();
+ fileManager.setUp();
+ ((ResourceChangeScannerImpl) ResourceFactory.getResourceChangeScannerService()).reset();
+
+ ResourceFactory.getResourceChangeNotifierService().start();
+ ResourceFactory.getResourceChangeScannerService().start();
+
+ this.server = new Server(0);
+ ResourceHandler resourceHandler = new ResourceHandler();
+ resourceHandler.setResourceBase(fileManager.getRootDirectory().getPath());
+
+ server.setHandler(resourceHandler);
+
+ server.start();
+
+ this.resetEventCounters();
+ }
+
+ private int getPort() {
+ return this.server.getConnectors()[0].getLocalPort();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ fileManager.tearDown();
+ ResourceFactory.getResourceChangeNotifierService().stop();
+ ResourceFactory.getResourceChangeScannerService().stop();
+ ((ResourceChangeNotifierImpl) ResourceFactory.getResourceChangeNotifierService()).reset();
+ ((ResourceChangeScannerImpl) ResourceFactory.getResourceChangeScannerService()).reset();
+
+ server.stop();
+ }
+
+ public void testEventListenerWithIncrementalChangeSet() throws Exception {
+
+ String header = "";
+ header += "package org.drools.test\n";
+ header += "import org.drools.Person\n\n";
+ header += "global java.util.List list\n\n";
+
+ //create a basic dsl file
+ File f1 = fileManager.newFile("myExpander.dsl");
+ Writer output = new BufferedWriter(new FileWriter(f1));
+ output.write(this.createCommonDSL(null));
+ output.close();
+
+ //create a basic dslr file
+ f1 = fileManager.newFile("rules.drl");
+ output = new BufferedWriter(new FileWriter(f1));
+ output.write(header);
+ output.write(this.createCommonDSLRRule("Rule1"));
+ output.close();
+
+ String xml = "";
+ xml += "<change-set xmlns='http://drools.org/drools-5.0/change-set'";
+ xml += " xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'";
+ xml += " xs:schemaLocation='http://drools.org/drools-5.0/change-set drools-change-set-5.0.xsd' >";
+ xml += " <add> ";
+ xml += " <resource source='http://localhost:" + this.getPort() + "/rules.drl' type='DSLR' />";
+ xml += " <resource source='http://localhost:" + this.getPort() + "/myExpander.dsl' type='DSL' />";
+ xml += " </add> ";
+ xml += "</change-set>";
+ File fxml = fileManager.newFile("changeset.xml");
+ output = new BufferedWriter(new FileWriter(fxml));
+ output.write(xml);
+ output.close();
+
+ List<String> list = new ArrayList<String>();
+
+ //Create a new Agent with newInstace=true
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ KnowledgeAgent kagent = this.createKAgent(kbase, false);
+
+ //Agent: take care of them!
+ kagent.applyChangeSet(ResourceFactory.newUrlResource(fxml.toURI().toURL()));
+
+ assertEquals(1, this.beforeChangeSetApplied);
+ assertEquals(1, this.afterChangeSetApplied);
+ assertEquals(1, this.beforeChangeSetProcessed);
+ assertEquals(1, this.afterChangeSetProcessed);
+ assertEquals(2, this.beforeResourceProcessed);
+ assertEquals(2, this.afterResourceProcessed);
+ assertFalse(this.compilationErrors);
+ assertTrue(this.kbaseUpdated);
+ this.resetEventCounters();
+
+ Thread.sleep(2000);
+ //the dsl is now modified.
+ f1 = fileManager.newFile("myExpander.dsl");
+ output = new BufferedWriter(new FileWriter(f1));
+ output.write(this.createCommonDSL("name == \"John\""));
+ output.close();
+
+ //We also need to mark the dslr file as modified, so the rules could
+ //be regenerated
+ f1 = fileManager.newFile("rules.drl");
+ output = new BufferedWriter(new FileWriter(f1));
+ output.write(header);
+ output.write(this.createCommonDSLRRule("Rule1"));
+ output.close();
+
+
+ this.waitUntilChangeSetApplied();
+ assertEquals(1, this.beforeChangeSetApplied);
+ assertEquals(1, this.afterChangeSetApplied);
+ assertEquals(1, this.beforeChangeSetProcessed);
+ assertEquals(1, this.afterChangeSetProcessed);
+ assertEquals(2, this.beforeResourceProcessed);
+ assertEquals(2, this.afterResourceProcessed);
+ assertFalse(this.compilationErrors);
+ assertTrue(this.kbaseUpdated);
+ this.resetEventCounters();
+
+ //The new fact activated and fired the modified rule
+ Thread.sleep(2000);
+
+ //let's add a new rule
+ f1 = fileManager.newFile("rules.drl");
+ output = new BufferedWriter(new FileWriter(f1));
+ output.write(header);
+ output.write(this.createCommonDSLRRule("Rule1"));
+ output.write(this.createCommonDSLRRule("Rule2"));
+ output.close();
+
+ this.waitUntilChangeSetApplied();
+
+ assertEquals(1, this.beforeChangeSetApplied);
+ assertEquals(1, this.afterChangeSetApplied);
+ assertEquals(1, this.beforeChangeSetProcessed);
+ assertEquals(1, this.afterChangeSetProcessed);
+ assertEquals(1, this.beforeResourceProcessed);
+ assertEquals(1, this.afterResourceProcessed);
+ assertFalse(this.compilationErrors);
+ assertTrue(this.kbaseUpdated);
+ this.resetEventCounters();
+
+ //let's remove Rule1 and Rule2 and add a new rule: Rule3
+ Thread.sleep(2000);
+ f1 = fileManager.newFile("rules.drl");
+ output = new BufferedWriter(new FileWriter(f1));
+ output.write(header);
+ output.write(this.createCommonDSLRRule("Rule3"));
+ output.close();
+
+ this.waitUntilChangeSetApplied();
+
+ assertEquals(1, this.beforeChangeSetApplied);
+ assertEquals(1, this.afterChangeSetApplied);
+ assertEquals(1, this.beforeChangeSetProcessed);
+ assertEquals(1, this.afterChangeSetProcessed);
+ assertEquals(1, this.beforeResourceProcessed);
+ assertEquals(1, this.afterResourceProcessed);
+ assertFalse(this.compilationErrors);
+ assertTrue(this.kbaseUpdated);
+ this.resetEventCounters();
+
+ //let's delete the dsl file (errors are expected)
+ Thread.sleep(2000);
+ f1 = fileManager.newFile("myExpander.dsl");
+ f1.delete();
+
+ f1 = fileManager.newFile("rules.drl");
+ output = new BufferedWriter(new FileWriter(f1));
+ output.write(header);
+ output.write(this.createCommonDSLRRule("Rule1"));
+ output.close();
+
+ this.waitUntilChangeSetApplied();
+ assertEquals(1, this.beforeChangeSetApplied);
+ assertEquals(1, this.afterChangeSetApplied);
+ assertEquals(1, this.beforeChangeSetProcessed);
+ assertEquals(1, this.afterChangeSetProcessed);
+ assertEquals(2, this.beforeResourceProcessed);
+ assertEquals(2, this.afterResourceProcessed);
+ assertTrue(this.compilationErrors);
+ assertTrue(this.kbaseUpdated);
+ this.resetEventCounters();
+
+ kagent.monitorResourceChangeEvents(false);
+ }
+
+ public void testEventListenerWithoutIncrementalChangeSet() throws Exception {
+
+ System.out.println("\n\ntestDSLAndNewInstance\n\n");
+
+ String header = "";
+ header += "package org.drools.test\n";
+ header += "import org.drools.Person\n\n";
+ header += "global java.util.List list\n\n";
+
+ //create a basic dsl file
+ File f1 = fileManager.newFile("myExpander.dsl");
+ Writer output = new BufferedWriter(new FileWriter(f1));
+ output.write(this.createCommonDSL(null));
+ output.close();
+
+ //create a basic dslr file
+ f1 = fileManager.newFile("rules.drl");
+ output = new BufferedWriter(new FileWriter(f1));
+ output.write(header);
+ output.write(this.createCommonDSLRRule("Rule1"));
+ output.close();
+
+ String xml = "";
+ xml += "<change-set xmlns='http://drools.org/drools-5.0/change-set'";
+ xml += " xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'";
+ xml += " xs:schemaLocation='http://drools.org/drools-5.0/change-set drools-change-set-5.0.xsd' >";
+ xml += " <add> ";
+ xml += " <resource source='http://localhost:" + this.getPort() + "/rules.drl' type='DSLR' />";
+ xml += " <resource source='http://localhost:" + this.getPort() + "/myExpander.dsl' type='DSL' />";
+ xml += " </add> ";
+ xml += "</change-set>";
+ File fxml = fileManager.newFile("changeset.xml");
+ output = new BufferedWriter(new FileWriter(fxml));
+ output.write(xml);
+ output.close();
+
+ List<String> list = new ArrayList<String>();
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+
+ //Create a new Agent with newInstace=true
+ KnowledgeAgent kagent = this.createKAgent(kbase,true);
+
+ //Agent: take care of them!
+ kagent.applyChangeSet(ResourceFactory.newUrlResource(fxml.toURI().toURL()));
+
+
+ assertEquals(1, this.beforeChangeSetApplied);
+ assertEquals(1, this.afterChangeSetApplied);
+ assertEquals(1, this.beforeChangeSetProcessed);
+ assertEquals(1, this.afterChangeSetProcessed);
+ assertEquals(2, this.beforeResourceProcessed);
+ assertEquals(2, this.afterResourceProcessed);
+ assertFalse(this.compilationErrors);
+ assertTrue(this.kbaseUpdated);
+ this.resetEventCounters();
+
+ Thread.sleep(2000);
+ //Let's modify the dsl file
+ f1 = fileManager.newFile("myExpander.dsl");
+ output = new BufferedWriter(new FileWriter(f1));
+ output.write(this.createCommonDSL("name == \"John\""));
+ output.close();
+
+ //We need to mark the dslr file as modified (even when it was not) so
+ //the agent could recreate the rules it contains using the new dsl.
+ f1 = fileManager.newFile("rules.drl");
+ output = new BufferedWriter(new FileWriter(f1));
+ output.write(header);
+ output.write(this.createCommonDSLRRule("Rule1"));
+ output.close();
+
+ this.waitUntilChangeSetApplied();
+ assertEquals(1, this.beforeChangeSetApplied);
+ assertEquals(1, this.afterChangeSetApplied);
+ assertEquals(1, this.beforeChangeSetProcessed);
+ assertEquals(1, this.afterChangeSetProcessed);
+ assertEquals(2, this.beforeResourceProcessed);
+ assertEquals(2, this.afterResourceProcessed);
+ assertFalse(this.compilationErrors);
+ assertTrue(this.kbaseUpdated);
+ this.resetEventCounters();
+
+ Thread.sleep(2000);
+ //Let's add a new Rule
+ f1 = fileManager.newFile("rules.drl");
+ output = new BufferedWriter(new FileWriter(f1));
+ output.write(header);
+ output.write(this.createCommonDSLRRule("Rule1"));
+ output.write(this.createCommonDSLRRule("Rule2"));
+ output.close();
+
+ this.waitUntilChangeSetApplied();
+ assertEquals(1, this.beforeChangeSetApplied);
+ assertEquals(1, this.afterChangeSetApplied);
+ assertEquals(1, this.beforeChangeSetProcessed);
+ assertEquals(1, this.afterChangeSetProcessed);
+ assertEquals(1, this.beforeResourceProcessed);
+ assertEquals(1, this.afterResourceProcessed);
+ assertFalse(this.compilationErrors);
+ assertTrue(this.kbaseUpdated);
+ this.resetEventCounters();
+
+ Thread.sleep(2000);
+ //Let's remove both rules and add a new one: Rule3
+ f1 = fileManager.newFile("rules.drl");
+ output = new BufferedWriter(new FileWriter(f1));
+ output.write(header);
+ output.write(this.createCommonDSLRRule("Rule3"));
+ output.close();
+
+ this.waitUntilChangeSetApplied();
+ assertEquals(1, this.beforeChangeSetApplied);
+ assertEquals(1, this.afterChangeSetApplied);
+ assertEquals(1, this.beforeChangeSetProcessed);
+ assertEquals(1, this.afterChangeSetProcessed);
+ assertEquals(1, this.beforeResourceProcessed);
+ assertEquals(1, this.afterResourceProcessed);
+ assertFalse(this.compilationErrors);
+ assertTrue(this.kbaseUpdated);
+ this.resetEventCounters();
+
+ Thread.sleep(2000);
+ //let's delete the dsl file (errors are expected)
+ f1 = fileManager.newFile("myExpander.dsl");
+ f1.delete();
+
+ f1 = fileManager.newFile("rules.drl");
+ output = new BufferedWriter(new FileWriter(f1));
+
+ output.write(header);
+ output.write(this.createCommonDSLRRule("Rule1"));
+ output.close();
+
+ this.waitUntilChangeSetApplied();
+ assertEquals(1, this.beforeChangeSetApplied);
+ assertEquals(1, this.afterChangeSetApplied);
+ assertEquals(1, this.beforeChangeSetProcessed);
+ assertEquals(1, this.afterChangeSetProcessed);
+ assertEquals(2, this.beforeResourceProcessed);
+ assertEquals(2, this.afterResourceProcessed);
+ assertTrue(this.compilationErrors);
+ assertTrue(this.kbaseUpdated);
+ this.resetEventCounters();
+
+
+ kagent.monitorResourceChangeEvents(false);
+ }
+
+ private KnowledgeAgent createKAgent(KnowledgeBase kbase, boolean newInstance) {
+ ResourceChangeScannerConfiguration sconf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
+ sconf.setProperty("drools.resource.scanner.interval", "2");
+ ResourceFactory.getResourceChangeScannerService().configure(sconf);
+
+ //System.setProperty(KnowledgeAgentFactory.PROVIDER_CLASS_NAME_PROPERTY_NAME, "org.drools.agent.impl.KnowledgeAgentProviderImpl");
+
+ KnowledgeAgentConfiguration aconf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
+ aconf.setProperty("drools.agent.scanDirectories", "true");
+ aconf.setProperty("drools.agent.scanResources", "true");
+ // Testing incremental build here
+ aconf.setProperty("drools.agent.newInstance", "" + newInstance);
+
+ KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent(
+ "test agent", kbase, aconf);
+
+ final KnowledgeAgentEventListenerTest test = this;
+ kagent.addEventListener(new KnowledgeAgentEventListener() {
+
+ public void beforeChangeSetApplied(BeforeChangeSetAppliedEvent event) {
+ beforeChangeSetApplied++;
+ }
+
+ public void afterChangeSetApplied(AfterChangeSetAppliedEvent event) {
+ afterChangeSetApplied++;
+ synchronized (lock) {
+ changeSetApplied = true;
+ lock.notifyAll();
+ }
+ }
+
+ public void beforeChangeSetProcessed(BeforeChangeSetProcessedEvent event) {
+ beforeChangeSetProcessed++;
+ }
+
+ public void afterChangeSetProcessed(AfterChangeSetProcessedEvent event) {
+ afterChangeSetProcessed++;
+ }
+
+ public void beforeResourceProcessed(BeforeResourceProcessedEvent event) {
+ beforeResourceProcessed++;
+ }
+
+ public void afterResourceProcessed(AfterResourceProcessedEvent event) {
+ afterResourceProcessed++;
+ }
+
+ public void knowledgeBaseUpdated(KnowledgeBaseUpdatedEvent event) {
+ kbaseUpdated = true;
+ }
+
+ public void resourceCompilationFailed(ResourceCompilationFailedEvent event) {
+ compilationErrors = true;
+ }
+ });
+
+ assertEquals("test agent", kagent.getName());
+
+ return kagent;
+ }
+
+ private String createCommonDSLRRule(String ruleName) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("rule ");
+ sb.append(ruleName);
+ sb.append("\n");
+ sb.append("when\n");
+ sb.append("There is a Person\n");
+ sb.append("then\n");
+ sb.append("add rule's name to list;\n");
+ sb.append("end\n");
+
+ return sb.toString();
+ }
+
+ private String createCommonDSL(String restriction) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("[condition][]There is a Person = Person(");
+ if (restriction != null) {
+ sb.append(restriction);
+ }
+ sb.append(")\n");
+ sb.append("[consequence][]add rule's name to list = list.add( drools.getRule().getName() );\n");
+ return sb.toString();
+ }
+
+ private void waitUntilChangeSetApplied() {
+ synchronized (lock) {
+ while (!changeSetApplied) {
+ try {
+ lock.wait();
+ } catch (InterruptedException e) {
+ }
+ System.out.println("Waking up!");
+ }
+ changeSetApplied = false;
+ }
+ }
+
+ private void resetEventCounters(){
+ this.beforeChangeSetApplied=0;
+ this.beforeChangeSetProcessed=0;
+ this.beforeResourceProcessed=0;
+ this.afterChangeSetApplied=0;
+ this.afterChangeSetProcessed=0;
+ this.afterResourceProcessed=0;
+ this.compilationErrors = false;
+ this.changeSetApplied = false;
+ this.kbaseUpdated = false;
+ }
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/KnowledgeAgentEventSupport.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/KnowledgeAgentEventSupport.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/KnowledgeAgentEventSupport.java 2010-06-24 13:14:53 UTC (rev 33621)
@@ -0,0 +1,142 @@
+package org.drools.event;
+
+/*
+ * Copyright 2010 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.List;
+import java.util.Map;
+import java.util.Set;
+import org.drools.definition.KnowledgeDefinition;
+import org.drools.event.knowledgeagent.BeforeResourceProcessedEvent;
+import org.drools.event.knowledgeagent.ResourceCompilationFailedEvent;
+import org.drools.event.knowledgeagent.AfterChangeSetAppliedEvent;
+import org.drools.event.knowledgeagent.KnowledgeBaseUpdatedEvent;
+import org.drools.event.knowledgeagent.AfterChangeSetProcessedEvent;
+import org.drools.event.knowledgeagent.KnowledgeAgentEventListener;
+import org.drools.event.knowledgeagent.BeforeChangeSetAppliedEvent;
+import org.drools.event.knowledgeagent.BeforeChangeSetProcessedEvent;
+import org.drools.event.knowledgeagent.AfterResourceProcessedEvent;
+import java.util.Iterator;
+import org.drools.ChangeSet;
+import org.drools.KnowledgeBase;
+import org.drools.agent.KnowledgeAgent.ResourceStatus;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.ResourceType;
+import org.drools.io.Resource;
+
+/**
+ * @author <a href="mailto:esteban.aliverti at gmail.com">Esteban Aliverti</a>
+ */
+public class KnowledgeAgentEventSupport extends AbstractEventSupport<KnowledgeAgentEventListener> {
+
+ public KnowledgeAgentEventSupport() {
+ }
+
+ public void fireBeforeChangeSetApplied(ChangeSet changeSet) {
+ final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator();
+
+ if (iter.hasNext()) {
+ final BeforeChangeSetAppliedEvent event = new BeforeChangeSetAppliedEvent(changeSet);
+ do{
+ iter.next().beforeChangeSetApplied(event);
+ } while (iter.hasNext());
+ }
+ }
+
+ public void fireAfterChangeSetApplied(ChangeSet changeSet) {
+ final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator();
+
+ if (iter.hasNext()) {
+ final AfterChangeSetAppliedEvent event = new AfterChangeSetAppliedEvent(changeSet);
+ do{
+ iter.next().afterChangeSetApplied(event);
+ } while (iter.hasNext());
+ }
+ }
+
+ public void fireBeforeChangeSetProcessed(ChangeSet changeSet) {
+ final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator();
+
+ if (iter.hasNext()) {
+ do{
+ final BeforeChangeSetProcessedEvent event = new BeforeChangeSetProcessedEvent(changeSet);
+ iter.next().beforeChangeSetProcessed(event);
+ } while (iter.hasNext());
+ }
+ }
+
+ public void fireAfterChangeSetProcessed(ChangeSet changeSet, List<Resource> addedResources, Map<Resource, Set<KnowledgeDefinition>> modifiedResourceMappings, Map<Resource, Set<KnowledgeDefinition>> removedResourceMappings) {
+ final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator();
+
+ if (iter.hasNext()) {
+ do{
+ final AfterChangeSetProcessedEvent event = new AfterChangeSetProcessedEvent(changeSet, addedResources, modifiedResourceMappings, removedResourceMappings);
+ iter.next().afterChangeSetProcessed(event);
+ } while (iter.hasNext());
+ }
+ }
+
+ public void fireBeforeResourceProcessed(ChangeSet changeSet, Resource resource, ResourceType type, ResourceStatus status) {
+ final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator();
+
+ if (iter.hasNext()) {
+ do{
+ final BeforeResourceProcessedEvent event = new BeforeResourceProcessedEvent(changeSet, resource, type, status);
+ iter.next().beforeResourceProcessed(event);
+ } while (iter.hasNext());
+ }
+ }
+
+ public void fireAfterResourceProcessed(ChangeSet changeSet, Resource resource, ResourceType type, ResourceStatus status) {
+ final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator();
+
+ if (iter.hasNext()) {
+ do{
+ final AfterResourceProcessedEvent event = new AfterResourceProcessedEvent(changeSet, resource, type, status);
+ iter.next().afterResourceProcessed(event);
+ } while (iter.hasNext());
+ }
+ }
+
+ public void fireKnowledgeBaseUpdated(KnowledgeBase kbase) {
+ final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator();
+
+ if (iter.hasNext()) {
+ do{
+ final KnowledgeBaseUpdatedEvent event = new KnowledgeBaseUpdatedEvent(kbase);
+ iter.next().knowledgeBaseUpdated(event);
+ } while (iter.hasNext());
+ }
+ }
+
+ public void fireResourceCompilationFailed(KnowledgeBuilder kbuilder, Resource resource, ResourceType type) {
+ final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator();
+
+ if (iter.hasNext()) {
+ do{
+ final ResourceCompilationFailedEvent event = new ResourceCompilationFailedEvent(kbuilder, resource, type);
+ iter.next().resourceCompilationFailed(event);
+ } while (iter.hasNext());
+ }
+ }
+
+
+ public void reset() {
+ this.clear();
+ }
+
+}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list