[jboss-svn-commits] JBL Code SVN: r32972 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/runtime/rule and 13 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed May 19 18:24:19 EDT 2010
Author: mark.proctor at jboss.com
Date: 2010-05-19 18:24:17 -0400 (Wed, 19 May 2010)
New Revision: 32972
Added:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/AttachedViewChangedEventListener.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/LiveQuery.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/Row.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/ViewChangedEventListener.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/AttachedViewChangedEventListenerImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/InternalViewChangedEventListener.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/StandardQueryViewChangedEventListener.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/LiveQueryImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/OpenQueryViewChangedEventListenerAdapter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/RowAdapter.java
Removed:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultQueryResultsCollector.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/QueryResultCollector.java
Modified:
labs/jbossrules/trunk/drools-api/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/QueryResultsRow.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java
labs/jbossrules/trunk/drools-compiler/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/QueryTest.java
labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResult.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DroolsQuery.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AgendaItem.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TruthMaintenanceSystem.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftTuple.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryElementNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/UnificationRestriction.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResultRow.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResultRow.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LogicalAssertionTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryElementNodeTest.java
Log:
JBRULES-2514 Open Live Querries
-Implementation done, with unit test, see QueryTest.
Modified: labs/jbossrules/trunk/drools-api/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-api/META-INF/MANIFEST.MF 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-api/META-INF/MANIFEST.MF 2010-05-19 22:24:17 UTC (rev 32972)
@@ -1,6 +1,66 @@
Manifest-Version: 1.0
+Export-Package: org.drools.event.io;uses:="org.drools";version="5.1.0.
+ SNAPSHOT",org.drools.marshalling;uses:="org.drools.runtime,org.drools
+ ";version="5.1.0.SNAPSHOT",org.drools.runtime;uses:="org.drools.comma
+ nd,org.drools.time,org.drools.runtime.process,org.drools.event,org.dr
+ ools.runtime.rule,org.drools,org.drools.runtime.conf";version="5.1.0.
+ SNAPSHOT",org.drools.event;uses:="org.drools.runtime,org.drools.event
+ .process,org.drools.event.rule";version="5.1.0.SNAPSHOT",org.drools.c
+ onf;uses:="org.drools.runtime.rule";version="5.1.0.SNAPSHOT",org.droo
+ ls.event.knowledgebase;uses:="org.drools.definition.rule,org.drools.d
+ efinition,org.drools";version="5.1.0.SNAPSHOT",org.drools;uses:="org.
+ drools.io,org.drools.runtime,org.drools.definition.type,org.drools.ev
+ ent.knowledgebase,org.drools.definition.process,org.drools.definition
+ ,org.drools.definition.rule,org.drools.conf,org.drools.util";version=
+ "5.1.0.SNAPSHOT",org.drools.definition.process;uses:="org.drools.defi
+ nition";version="5.1.0.SNAPSHOT",org.drools.util;uses:="org.drools,or
+ g.drools.io,org.drools.builder";version="5.1.0.SNAPSHOT",org.drools.b
+ uilder;uses:="org.drools.runtime,org.drools,org.drools.io,org.drools.
+ definition,org.drools.builder.conf,org.drools.util";version="5.1.0.SN
+ APSHOT",org.drools.builder.conf;uses:="org.drools.runtime.rule,org.dr
+ ools.conf";version="5.1.0.SNAPSHOT",org.drools.logger;uses:="org.droo
+ ls.event";version="5.1.0.SNAPSHOT",org.drools.runtime.process;uses:="
+ org.drools.runtime";version="5.1.0.SNAPSHOT",org.drools.runtime.conf;
+ uses:="org.drools.conf";version="5.1.0.SNAPSHOT",org.drools.runtime.h
+ elp;uses:="com.thoughtworks.xstream,org.quartz,org.drools.time";versi
+ on="5.1.0.SNAPSHOT",org.drools.time;version="5.1.0.SNAPSHOT",org.droo
+ ls.event.rule;uses:="org.drools.event,org.drools.runtime.rule";versio
+ n="5.1.0.SNAPSHOT",org.drools.definition.rule;uses:="org.drools.defin
+ ition";version="5.1.0.SNAPSHOT",org.drools.osgi.api;uses:="org.osgi.f
+ ramework,org.osgi.util.tracker,org.drools,org.drools.util";version="5
+ .1.0.SNAPSHOT",org.drools.runtime.rule;uses:="org.drools.definition.r
+ ule,org.drools.runtime";version="5.1.0.SNAPSHOT",org.drools.event.pro
+ cess;uses:="org.drools.runtime.process,org.drools.event";version="5.1
+ .0.SNAPSHOT",org.drools.definition;uses:="org.drools.definition.proce
+ ss,org.drools.definition.rule";version="5.1.0.SNAPSHOT",org.drools.vs
+ m;uses:="org.drools.command,org.drools.runtime,org.drools,org.drools.
+ agent,org.drools.builder,org.drools.persistence.jpa";version="5.1.0.S
+ NAPSHOT",org.drools.grid;uses:="org.drools.command";version="5.1.0.SN
+ APSHOT",org.drools.builder.help;uses:="com.sun.tools.xjc,org.drools.i
+ o,org.drools,org.drools.builder,javax.xml.bind";version="5.1.0.SNAPSH
+ OT",org.drools.definition.type;version="5.1.0.SNAPSHOT",org.drools.io
+ ;uses:="org.drools,org.drools.event.io,org.drools.util";version="5.1.
+ 0.SNAPSHOT",org.drools.runtime.pipeline;uses:="org.drools.runtime,jav
+ ax.xml.bind,net.sf.jxls.reader,org.milyn,com.thoughtworks.xstream";ve
+ rsion="5.1.0.SNAPSHOT",org.drools.agent;uses:="org.drools.runtime,org
+ .drools.io,org.drools";version="5.1.0.SNAPSHOT",org.drools.command;us
+ es:="org.drools.runtime,org.drools.runtime.rule";version="5.1.0.SNAPS
+ HOT",org.drools.task.service;version="5.1.0.SNAPSHOT",org.drools.pers
+ istence.jpa;uses:="org.drools.runtime,org.drools";version="5.1.0.SNAP
+ SHOT",org.drools.management;uses:="javax.management";version="5.1.0.S
+ NAPSHOT",org.drools.command.impl;uses:="org.drools.command";version="
+ 5.1.0.SNAPSHOT"
+Private-Package: .;version="5.1.0.SNAPSHOT"
+Tool: Bnd-0.0.357
+Bundle-Name: Drools :: API
+Created-By: 1.6.0_18 (Sun Microsystems Inc.)
+Bundle-Vendor: JBoss Inc.
+DynamicImport-Package: *
+Bundle-Version: 5.1.0.SNAPSHOT
+Bnd-LastModified: 1274306668600
Bundle-Activator: org.drools.osgi.api.Activator
-Created-By: 1.5.0_21 (Sun Microsystems Inc.)
+Bundle-ManifestVersion: 2
+Bundle-Description: A rule production system
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Import-Package: com.sun.tools.xjc;resolution:=optional,com.thoughtwork
s.xstream;resolution:=optional,javax.management;resolution:=optional,
@@ -8,64 +68,6 @@
tional,org.milyn;resolution:=optional,org.osgi.framework;resolution:=
optional;version="1.5",org.osgi.util.tracker;resolution:=optional;ver
sion="1.4",org.quartz;resolution:=optional
-Bnd-LastModified: 1267407372231
-Export-Package: org.drools.logger;uses:="org.drools.event";version="5.
- 1.0.SNAPSHOT",org.drools.runtime;uses:="org.drools.command,org.drools
- .time,org.drools.event,org.drools,org.drools.runtime.process,org.droo
- ls.runtime.rule,org.drools.runtime.conf";version="5.1.0.SNAPSHOT",org
- .drools.task.service;version="5.1.0.SNAPSHOT",org.drools.marshalling;
- uses:="org.drools.runtime,org.drools";version="5.1.0.SNAPSHOT",org.dr
- ools.runtime.rule;uses:="org.drools.definition.rule,org.drools.runtim
- e";version="5.1.0.SNAPSHOT",org.drools.command;uses:="org.drools.runt
- ime,org.drools.runtime.rule";version="5.1.0.SNAPSHOT",org.drools.time
- ;version="5.1.0.SNAPSHOT",org.drools.management;uses:="javax.manageme
- nt";version="5.1.0.SNAPSHOT",org.drools.event.process;uses:="org.droo
- ls.event,org.drools.runtime.process";version="5.1.0.SNAPSHOT",org.dro
- ols.event.io;uses:="org.drools";version="5.1.0.SNAPSHOT",org.drools.c
- onf;uses:="org.drools.runtime.rule";version="5.1.0.SNAPSHOT",org.droo
- ls.osgi.api;uses:="org.osgi.framework,org.drools,org.drools.util,org.
- osgi.util.tracker";version="5.1.0.SNAPSHOT",org.drools;uses:="org.dro
- ols.io,org.drools.event.knowledgebase,org.drools.runtime,org.drools.d
- efinition,org.drools.definition.type,org.drools.definition.rule,org.d
- rools.definition.process,org.drools.conf,org.drools.util";version="5.
- 1.0.SNAPSHOT",org.drools.runtime.conf;uses:="org.drools.conf";version
- ="5.1.0.SNAPSHOT",org.drools.runtime.process;uses:="org.drools.runtim
- e";version="5.1.0.SNAPSHOT",org.drools.event.rule;uses:="org.drools.e
- vent,org.drools.runtime.rule";version="5.1.0.SNAPSHOT",org.drools.bui
- lder.help;uses:="com.sun.tools.xjc,org.drools.builder,org.drools.io,o
- rg.drools,javax.xml.bind";version="5.1.0.SNAPSHOT",org.drools.vsm;use
- s:="org.drools.command,org.drools.runtime,org.drools.persistence.jpa,
- org.drools.builder,org.drools,org.drools.agent";version="5.1.0.SNAPSH
- OT",org.drools.builder.conf;uses:="org.drools.runtime.rule,org.drools
- .conf";version="5.1.0.SNAPSHOT",org.drools.definition;uses:="org.droo
- ls.definition.rule,org.drools.definition.process";version="5.1.0.SNAP
- SHOT",org.drools.definition.rule;uses:="org.drools.definition";versio
- n="5.1.0.SNAPSHOT",org.drools.runtime.pipeline;uses:="org.drools.runt
- ime,javax.xml.bind,net.sf.jxls.reader,org.milyn,com.thoughtworks.xstr
- eam";version="5.1.0.SNAPSHOT",org.drools.runtime.help;uses:="com.thou
- ghtworks.xstream,org.drools.time,org.quartz";version="5.1.0.SNAPSHOT"
- ,org.drools.event.knowledgebase;uses:="org.drools.definition.rule,org
- .drools.definition,org.drools";version="5.1.0.SNAPSHOT",org.drools.ev
- ent;uses:="org.drools.runtime,org.drools.event.rule,org.drools.event.
- process";version="5.1.0.SNAPSHOT",org.drools.persistence.jpa;uses:="o
- rg.drools.runtime,org.drools";version="5.1.0.SNAPSHOT",org.drools.bui
- lder;uses:="org.drools.io,org.drools,org.drools.definition,org.drools
- .builder.conf,org.drools.util";version="5.1.0.SNAPSHOT",org.drools.io
- ;uses:="org.drools,org.drools.event.io,org.drools.util";version="5.1.
- 0.SNAPSHOT",org.drools.util;uses:="org.drools,org.drools.builder,org.
- drools.io";version="5.1.0.SNAPSHOT",org.drools.command.impl;uses:="or
- g.drools.command";version="5.1.0.SNAPSHOT",org.drools.definition.type
- ;version="5.1.0.SNAPSHOT",org.drools.definition.process;uses:="org.dr
- ools.definition";version="5.1.0.SNAPSHOT",org.drools.agent;uses:="org
- .drools.runtime,org.drools,org.drools.io";version="5.1.0.SNAPSHOT"
-Bundle-Version: 5.1.0.SNAPSHOT
-Bundle-Name: Drools :: API
-Bundle-Description: A rule production system
-Private-Package: .;version="5.1.0.SNAPSHOT"
+Bundle-SymbolicName: org.drools.api;singleton:=true
Bundle-DocURL: http://www.jboss.org/
-Bundle-Vendor: JBoss Inc.
-Bundle-ManifestVersion: 2
-Bundle-SymbolicName: org.drools.api;singleton:=true
-Tool: Bnd-0.0.357
-DynamicImport-Package: *
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/AttachedViewChangedEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/AttachedViewChangedEventListener.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/AttachedViewChangedEventListener.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -0,0 +1,5 @@
+package org.drools.runtime.rule;
+
+public interface AttachedViewChangedEventListener {
+ void close();
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/LiveQuery.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/LiveQuery.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/LiveQuery.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -0,0 +1,5 @@
+package org.drools.runtime.rule;
+
+public interface LiveQuery {
+ void close();
+}
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/QueryResultsRow.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/QueryResultsRow.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/QueryResultsRow.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -4,19 +4,6 @@
* A row of data from the QueryResults container.
*
*/
-public interface QueryResultsRow {
- /**
- * Get the object that is bound to the given identifier
- * @param identifier
- * The identifier of the bound object
- * @return
- */
- public Object get(String identifier);
-
- /**
- * Return the FactHandle associated with the given identifier
- * @param identifier
- * @return
- */
- public FactHandle getFactHandle(String identifier);
+public interface QueryResultsRow extends Row {
+
}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/Row.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/Row.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/Row.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -0,0 +1,41 @@
+package org.drools.runtime.rule;
+
+public interface Row {
+ /**
+ * Get the object that is bound to the given identifier
+ * @param identifier
+ * The identifier of the bound object
+ * @return
+ */
+ public Object get(String identifier);
+
+ /**
+ * Return the Object for the specified position
+ *
+ * @param i
+ * @return
+ */
+ public Object get(final int i);
+
+ /**
+ * Return the FactHandle associated with the given identifier
+ * @param identifier
+ * @return
+ */
+ public FactHandle getFactHandle(String identifier);
+
+ /**
+ * Return the FactHandle for the specified position
+ *
+ * @param i
+ * @return
+ */
+ public FactHandle getFactHandle(final int i);
+
+ /**
+ * Number of objects in the row
+ *
+ * @return
+ */
+ public int size();
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/ViewChangedEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/ViewChangedEventListener.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/ViewChangedEventListener.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -0,0 +1,10 @@
+package org.drools.runtime.rule;
+
+public interface ViewChangedEventListener {
+
+ public void rowAdded(Row row);
+
+ public void rowRemoved(Row row);
+
+ public void rowUpdated(Row row);
+}
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -38,15 +38,15 @@
* @return
*/
WorkingMemoryEntryPoint getWorkingMemoryEntryPoint(String name);
-
+
/**
* Returns a collection of all available working memory entry points
* for this session.
*
* @return the collection of all available entry points for this session
*/
- Collection<? extends WorkingMemoryEntryPoint> getWorkingMemoryEntryPoints();
-
+ Collection< ? extends WorkingMemoryEntryPoint> getWorkingMemoryEntryPoints();
+
/**
* Retrieve the QueryResults of the specified query.
*
@@ -76,5 +76,10 @@
* @throws IllegalArgumentException
* if no query named "query" is found in the KnowledgeBase
*/
- public QueryResults getQueryResults(String query, Object[] arguments);
+ public QueryResults getQueryResults(String query,
+ Object[] arguments);
+
+ public LiveQuery openLiveQuery(String query,
+ Object[] arguments,
+ ViewChangedEventListener listener);
}
Modified: labs/jbossrules/trunk/drools-compiler/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-compiler/META-INF/MANIFEST.MF 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-compiler/META-INF/MANIFEST.MF 2010-05-19 22:24:17 UTC (rev 32972)
@@ -1,84 +1,66 @@
Manifest-Version: 1.0
-Bundle-Activator: org.drools.osgi.compiler.Activator
-Created-By: 1.5.0_21 (Sun Microsystems Inc.)
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Import-Package: com.thoughtworks.xstream,com.thoughtworks.xstream.io,c
- om.thoughtworks.xstream.io.xml,javax.xml.parsers,javax.xml.transform,
- javax.xml.transform.stream,org.antlr.runtime,org.antlr.runtime.tree,o
- rg.codehaus.janino,org.codehaus.janino.util,org.codehaus.janino.util.
- enumerator,org.codehaus.janino.util.resource,org.eclipse.jdt.core.com
- piler;provider=jasper;version="3.3",org.eclipse.jdt.internal.compiler
- ;provider=jasper;version="3.3",org.eclipse.jdt.internal.compiler.clas
- sfmt;provider=jasper;version="3.3",org.eclipse.jdt.internal.compiler.
- env;provider=jasper;version="3.3",org.eclipse.jdt.internal.compiler.p
- roblem;provider=jasper;version="3.3",org.mvel2;version="2.0",org.mvel
- 2.ast;version="2.0",org.mvel2.compiler;version="2.0",org.mvel2.integr
- ation;version="2.0",org.mvel2.integration.impl;version="2.0",org.mvel
- 2.optimizers;version="2.0",org.mvel2.templates;version="2.0",org.mvel
- 2.util;version="2.0",org.osgi.framework;version="1.5",org.osgi.util.t
- racker;version="1.4",org.w3c.dom,org.xml.sax
-Bnd-LastModified: 1267407606512
Export-Package: org.drools.builder.impl;uses:="org.drools.compiler";ve
- rsion="5.1.0.SNAPSHOT",org.drools.rule.builder;uses:="org.drools.comp
- iler,org.mvel2.compiler,org.mvel2,org.drools.rule.builder.dialect.mve
- l";version="5.1.0.SNAPSHOT",org.drools.guvnor.client.modeldriven.test
- ing;uses:="org.drools.guvnor.client.modeldriven.brl";version="5.1.0.S
- NAPSHOT",org.drools.guvnor.server.util;uses:="org.drools.guvnor.clien
- t.modeldriven.brl,com.thoughtworks.xstream.io,com.thoughtworks.xstrea
- m.io.xml,com.thoughtworks.xstream,org.drools.guvnor.server.rules,org.
- drools.guvnor.client.modeldriven,org.mvel2,org.drools.guvnor.client.m
- odeldriven.dt,org.drools.guvnor.client.modeldriven.testing";version="
- 5.1.0.SNAPSHOT",org.drools.compiler.xml;uses:="org.drools.compiler.xm
- l.processes,org.drools.compiler.xml.rules,org.xml.sax,javax.xml.parse
- rs";version="5.1.0.SNAPSHOT",org.drools.compiler.xml.processes;uses:=
- "org.xml.sax,org.w3c.dom,org.drools.compiler.xml,javax.xml.transform.
- stream,javax.xml.transform";version="5.1.0.SNAPSHOT",org.drools.osgi.
- compiler;uses:="org.osgi.framework,org.osgi.util.tracker,org.drools.c
- ompiler,org.drools.builder.impl";version="5.1.0.SNAPSHOT",org.drools.
- guvnor.client.modeldriven.dt;uses:="org.drools.guvnor.client.modeldri
- ven.brl,org.drools.guvnor.client.modeldriven";version="5.1.0.SNAPSHOT
- ",org.drools.compiler.xml.rules;uses:="org.xml.sax,org.w3c.dom,org.an
- tlr.runtime.tree,org.antlr.runtime";version="5.1.0.SNAPSHOT",org.droo
- ls.process.builder;uses:="org.drools.rule.builder,org.drools.compiler
- ";version="5.1.0.SNAPSHOT",org.drools.testframework;uses:="org.drools
- .guvnor.client.modeldriven.testing,org.mvel2.compiler,org.drools.guvn
- or.server.util,org.mvel2";version="5.1.0.SNAPSHOT",org.drools.guvnor.
- client.modeldriven.ui;version="5.1.0.SNAPSHOT",org.drools.guvnor.clie
- nt.modeldriven;uses:="org.drools.guvnor.client.modeldriven.brl";versi
- on="5.1.0.SNAPSHOT",org.drools.reteoo.compiled;uses:="org.drools.comp
- iler,org.drools.rule.builder.dialect.java";version="5.1.0.SNAPSHOT",o
- rg.drools.rule.builder.dialect.java.parser;uses:="org.antlr.runtime";
- version="5.1.0.SNAPSHOT",org.drools.semantics.java.parser;version="5.
- 1.0.SNAPSHOT",org.drools.rule.builder.dialect.java;uses:="org.drools.
- rule.builder,org.mvel2.integration,org.mvel2.integration.impl,org.mve
- l2.templates,org.mvel2.compiler,org.mvel2.optimizers,org.drools.compi
- ler,org.drools.rule.builder.dialect.mvel,org.drools.rule.builder.dial
- ect.java.parser,org.antlr.runtime,org.mvel2";version="5.1.0.SNAPSHOT"
- ,org.drools.compiler;uses:="org.drools.rule.builder,org.antlr.runtime
- .tree,org.antlr.runtime,org.drools.guvnor.server.util,org.drools.comp
- iler.xml,org.xml.sax,org.drools.guvnor.client.modeldriven.brl,org.mve
- l2,org.drools.process.builder,org.drools.compiler.xml.processes,javax
- .xml.parsers";version="5.1.0.SNAPSHOT",org.drools.rule.builder.dialec
- t.mvel;uses:="org.drools.rule.builder,org.drools.compiler,org.mvel2,o
- rg.mvel2.compiler,org.mvel2.util,org.drools.rule.builder.dialect.java
- ,org.mvel2.ast";version="5.1.0.SNAPSHOT",org.drools.guvnor.server.rul
- es;uses:="org.drools.guvnor.server.util,org.drools.compiler,org.drool
- s.guvnor.client.modeldriven";version="5.1.0.SNAPSHOT",org.drools.guvn
- or.client.modeldriven.brl;version="5.1.0.SNAPSHOT"
-Bundle-Version: 5.1.0.SNAPSHOT
+ rsion="5.1.0.SNAPSHOT",org.drools.osgi.compiler;uses:="org.osgi.util.
+ tracker,org.osgi.framework,org.drools.builder.impl,org.drools.compile
+ r";version="5.1.0.SNAPSHOT",org.drools.compiler.xml.rules;uses:="org.
+ w3c.dom,org.xml.sax,org.antlr.runtime.tree,org.antlr.runtime";version
+ ="5.1.0.SNAPSHOT",org.drools.compiler.xml.processes;uses:="org.drools
+ .compiler.xml,org.w3c.dom,org.xml.sax,javax.xml.transform,javax.xml.t
+ ransform.stream";version="5.1.0.SNAPSHOT",org.drools.compiler.xml;use
+ s:="org.drools.compiler.xml.processes,org.drools.compiler.xml.rules,j
+ avax.xml.parsers,org.xml.sax";version="5.1.0.SNAPSHOT",org.drools.tes
+ tframework;version="5.1.0.SNAPSHOT",org.drools.compiler;uses:="org.dr
+ ools.rule.builder,org.antlr.runtime.tree,org.antlr.runtime,org.xml.sa
+ x,org.drools.compiler.xml,org.drools.process.builder,org.mvel2,org.dr
+ ools.compiler.xml.processes,javax.xml.parsers";version="5.1.0.SNAPSHO
+ T",org.drools.process.builder;uses:="org.drools.rule.builder,org.droo
+ ls.compiler";version="5.1.0.SNAPSHOT",org.drools.reteoo.compiled;uses
+ :="org.drools.rule.builder.dialect.java,org.drools.compiler";version=
+ "5.1.0.SNAPSHOT",org.drools.semantics.java.parser;version="5.1.0.SNAP
+ SHOT",org.drools.rule.builder.dialect.java;uses:="org.mvel2.templates
+ ,org.mvel2.integration,org.mvel2.integration.impl,org.drools.rule.bui
+ lder,org.drools.compiler,org.drools.rule.builder.dialect.mvel,org.mve
+ l2.optimizers,org.mvel2.compiler,org.drools.rule.builder.dialect.java
+ .parser,org.antlr.runtime,org.mvel2";version="5.1.0.SNAPSHOT",org.dro
+ ols.rule.builder.dialect.mvel;uses:="org.drools.rule.builder,org.droo
+ ls.compiler,org.mvel2,org.mvel2.util,org.drools.rule.builder.dialect.
+ java,org.mvel2.ast,org.mvel2.compiler";version="5.1.0.SNAPSHOT",org.d
+ rools.rule.builder.dialect.java.parser;uses:="org.antlr.runtime";vers
+ ion="5.1.0.SNAPSHOT",org.drools.rule.builder;uses:="org.drools.compil
+ er,org.drools.rule.builder.dialect.mvel,org.mvel2,org.mvel2.compiler"
+ ;version="5.1.0.SNAPSHOT"
+Private-Package: org.drools.commons.jci.problems;version="5.1.0.SNAPSH
+ OT",org.drools.lang.descr;version="5.1.0.SNAPSHOT",org.drools.commons
+ .jci.compilers;version="5.1.0.SNAPSHOT",org.drools.commons.jci.reader
+ s;version="5.1.0.SNAPSHOT",org.drools.commons.jci.stores;version="5.1
+ .0.SNAPSHOT",org.drools.lang;version="5.1.0.SNAPSHOT",org.drools.lang
+ .dsl;version="5.1.0.SNAPSHOT"
+Tool: Bnd-0.0.357
Bundle-Name: Drools :: Compiler
-Bundle-Description: A rule production system
-Private-Package: org.drools.lang.descr;version="5.1.0.SNAPSHOT",org.dr
- ools.lang.dsl;version="5.1.0.SNAPSHOT",org.drools.commons.jci.compile
- rs;version="5.1.0.SNAPSHOT",org.drools.commons.jci.stores;version="5.
- 1.0.SNAPSHOT",org.drools.lang;version="5.1.0.SNAPSHOT",org.drools.com
- mons.jci.problems;version="5.1.0.SNAPSHOT",org.drools.commons.jci.rea
- ders;version="5.1.0.SNAPSHOT"
-Bundle-DocURL: http://www.jboss.org/
+Created-By: 1.6.0_18 (Sun Microsystems Inc.)
+Require-Bundle: org.drools.core;bundle-version="5.1.0.SNAPSHOT"
Bundle-Vendor: JBoss Inc.
+DynamicImport-Package: *
+Bundle-Version: 5.1.0.SNAPSHOT
+Bnd-LastModified: 1274306750644
+Bundle-Activator: org.drools.osgi.compiler.Activator
Bundle-ManifestVersion: 2
+Bundle-Description: A rule production system
+Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
+Import-Package: javax.xml.parsers,javax.xml.transform,javax.xml.transf
+ orm.stream,org.antlr.runtime,org.antlr.runtime.tree,org.codehaus.jani
+ no,org.codehaus.janino.util,org.codehaus.janino.util.enumerator,org.c
+ odehaus.janino.util.resource,org.eclipse.jdt.core.compiler;provider=j
+ asper;version="3.3",org.eclipse.jdt.internal.compiler;provider=jasper
+ ;version="3.3",org.eclipse.jdt.internal.compiler.classfmt;provider=ja
+ sper;version="3.3",org.eclipse.jdt.internal.compiler.env;provider=jas
+ per;version="3.3",org.eclipse.jdt.internal.compiler.problem;provider=
+ jasper;version="3.3",org.mvel2;version="2.0",org.mvel2.ast;version="2
+ .0",org.mvel2.compiler;version="2.0",org.mvel2.integration;version="2
+ .0",org.mvel2.integration.impl;version="2.0",org.mvel2.optimizers;ver
+ sion="2.0",org.mvel2.templates;version="2.0",org.mvel2.util;version="
+ 2.0",org.osgi.framework;version="1.5",org.osgi.util.tracker;version="
+ 1.4",org.w3c.dom,org.xml.sax
Bundle-SymbolicName: org.drools.compiler;singleton:=true
-Tool: Bnd-0.0.357
-Require-Bundle: org.drools.core;bundle-version="5.1.0.SNAPSHOT"
-DynamicImport-Package: *
+Bundle-DocURL: http://www.jboss.org/
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/QueryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/QueryTest.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/QueryTest.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -45,6 +45,9 @@
import org.drools.rule.Package;
import org.drools.rule.Variable;
import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.rule.LiveQuery;
+import org.drools.runtime.rule.Row;
+import org.drools.runtime.rule.ViewChangedEventListener;
import org.drools.runtime.rule.impl.FlatQueryResults;
import org.drools.spi.ObjectType;
@@ -562,5 +565,136 @@
// assertEquals( set,
// newSet );
}
+
+ public void testOpenQuery() throws Exception {
+ String str = "";
+ str += "package org.drools.test \n";
+ str += "import org.drools.Cheese \n";
+ str += "query cheeses(String $type1, String $type2) \n";
+ str += " stilton : Cheese(type == $type1, $price : price) \n";
+ str += " cheddar : Cheese(type == $type2, price == stilton.price) \n";
+ str += "end\n";
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+ ResourceType.DRL );
+
+ if ( kbuilder.hasErrors() ) {
+ fail( kbuilder.getErrors().toString() );
+ }
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ kbase = SerializationHelper.serializeObject( kbase );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ Cheese stilton1 = new Cheese( "stilton",
+ 1 );
+ Cheese cheddar1 = new Cheese( "cheddar",
+ 1 );
+ Cheese stilton2 = new Cheese( "stilton",
+ 2 );
+ Cheese cheddar2 = new Cheese( "cheddar",
+ 2 );
+ Cheese stilton3 = new Cheese( "stilton",
+ 3 );
+ Cheese cheddar3 = new Cheese( "cheddar",
+ 3 );
+
+ org.drools.runtime.rule.FactHandle s1Fh = ksession.insert( stilton1 );
+ ksession.insert( stilton2 );
+ ksession.insert( stilton3 );
+ ksession.insert( cheddar1 );
+ ksession.insert( cheddar2 );
+ org.drools.runtime.rule.FactHandle c3Fh = ksession.insert( cheddar3 );
+
+ final List updated = new ArrayList();
+ final List removed = new ArrayList();
+ final List added = new ArrayList();
+
+ ViewChangedEventListener listener = new ViewChangedEventListener() {
+ public void rowUpdated(Row row) {
+ updated.add( row.get( "$price" ) );
+ }
+
+ public void rowRemoved(Row row) {
+ removed.add( row.get( "$price" ) );
+ }
+
+ public void rowAdded(Row row) {
+ added.add( row.get( "$price" ) );
+ }
+ };
+
+ // Open the LiveQuery
+ LiveQuery query = ksession.openLiveQuery( "cheeses", new Object[] { "cheddar", "stilton" } , listener );
+
+ // Assert that on opening we have three rows added
+ assertEquals( 3, added.size() );
+ assertEquals( 0, removed.size() );
+ assertEquals( 0, updated.size() );
+
+ // And that we have correct values from those rows
+ assertEquals( 1, added.get( 0 ) );
+ assertEquals( 2, added.get( 1 ) );
+ assertEquals( 3, added.get( 2 ) );
+
+ // Do an update that causes a match to become untrue, thus triggering a removed
+ cheddar3.setPrice( 4 );
+ ksession.update( c3Fh, cheddar3 );
+
+ assertEquals( 3, added.size() );
+ assertEquals( 1, removed.size() );
+ assertEquals( 0, updated.size() );
+
+ assertEquals( 4, removed.get( 0 ) );
+
+ // Now make that partial true again, and thus another added
+ cheddar3.setPrice( 3 );
+ ksession.update( c3Fh, cheddar3 );
+
+
+ assertEquals( 4, added.size() );
+ assertEquals( 1, removed.size() );
+ assertEquals( 0, updated.size() );
+
+ assertEquals( 3, added.get( 3 ) );
+
+ // check a standard update
+ cheddar3.setOldPrice( 0 );
+ ksession.update( c3Fh, cheddar3 );
+
+ assertEquals( 4, added.size() );
+ assertEquals( 1, removed.size() );
+ assertEquals( 1, updated.size() );
+
+ assertEquals( 3, updated.get( 0 ) );
+
+ // Check a standard retract
+ ksession.retract( s1Fh );
+
+ assertEquals( 4, added.size() );
+ assertEquals( 2, removed.size() );
+ assertEquals( 1, updated.size() );
+
+ assertEquals( 1, removed.get( 1 ) );
+
+ // Close the query, we should get removed events for each row
+ query.close();
+
+ assertEquals( 4, added.size() );
+ assertEquals( 4, removed.size() );
+ assertEquals( 1, updated.size() );
+
+ assertEquals( 2, removed.get( 2 ) );
+ assertEquals( 3, removed.get( 3 ) );
+
+ // Check that updates no longer have any impact.
+ ksession.update( c3Fh, cheddar3 );
+ assertEquals( 4, added.size() );
+ assertEquals( 4, removed.size() );
+ assertEquals( 1, updated.size() );
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF 2010-05-19 22:24:17 UTC (rev 32972)
@@ -1,299 +1,312 @@
Manifest-Version: 1.0
+Export-Package: org.drools.server.profile;uses:="javax.xml.bind";versi
+ on="5.1.0.SNAPSHOT",org.drools.process.core.impl;uses:="org.drools.pr
+ ocess.core,org.drools.process.core.datatype,org.drools.process.core.c
+ ontext";version="5.1.0.SNAPSHOT",org.drools.workflow.instance.context
+ ;uses:="org.drools.process.instance,org.drools.workflow.instance,org.
+ drools.process.instance.impl,org.drools.process.instance.context,org.
+ drools.process.core";version="5.1.0.SNAPSHOT",org.drools.command.asse
+ rtion;uses:="org.mvel2,org.drools.command,org.drools.core.util,org.dr
+ ools.command.impl";version="5.1.0.SNAPSHOT",org.drools.runtime.pipeli
+ ne.impl;uses:="org.drools.runtime.pipeline,org.drools.command,org.dro
+ ols.command.runtime.rule,org.mvel2,org.mvel2.compiler,org.drools.comm
+ on,org.drools.impl,org.drools.rule,org.drools";version="5.1.0.SNAPSHO
+ T",org.drools.conflict;uses:="org.drools.spi,org.drools.rule,org.droo
+ ls.common";version="5.1.0.SNAPSHOT",org.drools.time.impl;uses:="org.d
+ rools.time,org.drools.common,org.drools";version="5.1.0.SNAPSHOT",org
+ .drools.process.instance.impl.humantask;uses:="javax.swing,javax.swin
+ g.event,javax.swing.border";version="5.1.0.SNAPSHOT",org.drools.proce
+ ss.instance.context;uses:="org.drools.process.instance,org.drools.pro
+ cess.core";version="5.1.0.SNAPSHOT",org.drools.base.extractors;uses:=
+ "org.drools.common,org.drools.base,org.drools,org.drools.spi,org.droo
+ ls.core.util,org.mvel2,org.mvel2.compiler";version="5.1.0.SNAPSHOT",o
+ rg.drools.base.field;uses:="org.drools,org.drools.spi,org.drools.comm
+ on,org.drools.core.util";version="5.1.0.SNAPSHOT",org.drools.workflow
+ .instance.impl;uses:="org.drools.workflow.instance.node,org.drools.wo
+ rkflow.core,org.drools,org.drools.workflow.core.impl,org.drools.commo
+ n,org.drools.process.instance,org.drools.base,org.drools.workflow.ins
+ tance,org.drools.process.instance.context.exception,org.drools.spi,or
+ g.drools.workflow.instance.impl.factory,org.drools.workflow.core.node
+ ,org.drools.event,org.drools.process.instance.context.exclusive,org.d
+ rools.process.core,org.mvel2.integration.impl,org.mvel2.integration,o
+ rg.drools.process.instance.context.variable,org.drools.process.instan
+ ce.impl,org.drools.process.instance.event";version="5.1.0.SNAPSHOT",o
+ rg.drools.ruleflow.core;uses:="org.drools.ruleflow.core.factory,org.d
+ rools.workflow.core,org.drools.workflow.core.impl,org.drools.workflow
+ .core.node,org.drools.process.core.context.variable,org.drools.proces
+ s.core.context.exception,org.drools.process.core.context.swimlane,org
+ .drools.process.core,org.drools.process.core.validation,org.drools.pr
+ ocess.core.datatype,org.drools.ruleflow.core.validation";version="5.1
+ .0.SNAPSHOT",org.drools.event.rule.impl;uses:="org.drools.common,org.
+ drools.event,org.drools,org.drools.spi,org.drools.impl";version="5.1.
+ 0.SNAPSHOT",org.drools.base.evaluators;uses:="org.drools.common,org.d
+ rools.base,org.drools.rule,org.drools,org.drools.spi,org.drools.time,
+ org.drools.core.util,org.drools.type,org.mvel2.util";version="5.1.0.S
+ NAPSHOT",org.drools.process.core.event;version="5.1.0.SNAPSHOT",org.d
+ rools.definitions.impl;uses:="org.drools.definitions.rule.impl,org.dr
+ ools.rule";version="5.1.0.SNAPSHOT",org.drools.process.instance.event
+ ;uses:="org.drools.common,org.drools.marshalling.impl,org.drools.proc
+ ess.instance,org.drools";version="5.1.0.SNAPSHOT",org.drools.xml.jaxb
+ .util;uses:="org.drools.common,org.drools.command.runtime.process,org
+ .drools.command.runtime,org.drools.runtime.impl,org.drools.command.ru
+ ntime.rule,org.drools.runtime.rule.impl,javax.xml.bind,javax.xml.bind
+ .annotation.adapters,javax.xml.bind.annotation";version="5.1.0.SNAPSH
+ OT",org.drools.ruleflow.core.validation;uses:="org.drools.process.cor
+ e.timer,org.drools.process.core.context.variable,org.drools.ruleflow.
+ core,org.drools.workflow.core.node,org.drools,org.drools.process.core
+ .validation.impl,org.drools.workflow.core,org.drools.workflow.core.im
+ pl,org.drools.process.core.validation,org.drools.process.core.datatyp
+ e,org.mvel2,org.mvel2.compiler,org.drools.time,org.drools.process.cor
+ e";version="5.1.0.SNAPSHOT",org.drools.process.instance.context.varia
+ ble;uses:="org.drools.common,org.drools.process.core.context.variable
+ ,org.drools.process.instance,org.drools.event,org.drools,org.drools.p
+ rocess.instance.context,org.drools.process.core";version="5.1.0.SNAPS
+ HOT",org.drools.command.runtime;uses:="org.drools.command,org.drools.
+ command.impl,org.drools.command.runtime.process,javax.xml.bind.annota
+ tion,org.drools.command.runtime.rule,org.drools.impl,org.drools.runti
+ me.impl,org.drools";version="5.1.0.SNAPSHOT",org.drools.process.insta
+ nce.context.exception;uses:="org.drools.common,org.drools.process.cor
+ e.context.exception,org.drools.process.instance,org.drools.base,org.d
+ rools.workflow.instance,org.drools,org.drools.workflow.core,org.drool
+ s.spi,org.drools.process.instance.context,org.drools.process.core";ve
+ rsion="5.1.0.SNAPSHOT",org.drools.command;uses:="org.drools.command.i
+ mpl,org.drools.runtime.impl,org.drools.time,org.drools";version="5.1.
+ 0.SNAPSHOT",org.drools.management;uses:="org.drools.common,javax.mana
+ gement,org.drools,javax.management.openmbean,org.drools.base,org.droo
+ ls.spi,org.drools.event,org.drools.rule";version="5.1.0.SNAPSHOT",org
+ .drools.process.core.context.variable;uses:="org.drools.process.core.
+ datatype.impl.type,org.drools.process.core.datatype,org.drools.proces
+ s.core,org.drools.process.core.context";version="5.1.0.SNAPSHOT",org.
+ drools.core.util.asm;uses:="org.mvel2.asm,org.drools,org.mvel2.asm.ut
+ il";version="5.1.0.SNAPSHOT",org.drools.definitions.rule.impl;uses:="
+ org.drools.rule";version="5.1.0.SNAPSHOT",org.drools.workflow.instanc
+ e.node;uses:="org.drools.workflow.instance.impl,org.drools.workflow.c
+ ore.node,org.drools,org.drools.workflow.core,org.drools.common,org.dr
+ ools.process.instance,org.drools.base,org.drools.workflow.instance,or
+ g.drools.spi,org.drools.process.instance.impl,org.drools.process.core
+ ,org.drools.impl,org.drools.event,org.drools.process.instance.context
+ .variable,org.drools.process.core.event,org.drools.process.instance.c
+ ontext.exception,org.mvel2.integration,org.mvel2,org.drools.process.i
+ nstance.context.swimlane,org.drools.rule,org.drools.process.instance.
+ context.exclusive,org.drools.process.core.timer,org.drools.process.in
+ stance.timer,org.drools.time";version="5.1.0.SNAPSHOT",org.drools.pro
+ cess.instance.impl;uses:="org.drools.process.instance,org.drools.proc
+ ess.core,org.drools.process.core.context.exception,org.drools.process
+ .core.context.variable,org.drools.process.instance.context.swimlane,o
+ rg.drools.process.core.context.swimlane,org.drools.process.instance.i
+ mpl.factory,org.drools.process.instance.context.variable,org.drools.p
+ rocess.instance.context.exception,org.drools,org.drools.common";versi
+ on="5.1.0.SNAPSHOT",org.drools.event.process.impl;uses:="org.drools.e
+ vent,org.drools,org.drools.common";version="5.1.0.SNAPSHOT",org.drool
+ s.process.core.validation.impl;uses:="org.drools.process.core.validat
+ ion";version="5.1.0.SNAPSHOT",org.drools.process.instance.timer;uses:
+ ="org.drools.time,org.drools.process.instance.event,org.drools,org.dr
+ ools.process.instance,org.drools.time.impl";version="5.1.0.SNAPSHOT",
+ org.drools.base;uses:="org.drools.event,org.drools,org.drools.spi,org
+ .drools.concurrent,org.drools.common,org.drools.core.util.asm,org.dro
+ ols.core.util,org.drools.base.evaluators,org.drools.time,org.drools.b
+ ase.extractors,org.mvel2.asm,org.drools.rule,org.drools.impl,org.droo
+ ls.process.instance,org.drools.base.field,org.drools.type,org.mvel2.i
+ ntegration,org.drools.base.mvel,org.mvel2.ast,org.drools.facttemplate
+ s";version="5.1.0.SNAPSHOT",org.drools.workflow.instance;uses:="org.d
+ rools.process.instance,org.drools.impl,org.drools.workflow.instance.i
+ mpl,org.drools,org.drools.workflow.core.impl,org.drools.common,org.dr
+ ools.process.core";version="5.1.0.SNAPSHOT",org.drools.util.codec;ver
+ sion="5.1.0.SNAPSHOT",org.drools.visualize;version="5.1.0.SNAPSHOT",o
+ rg.drools.process.core;uses:="org.drools.process.core.datatype";versi
+ on="5.1.0.SNAPSHOT",org.drools.process.core.datatype.impl.type;uses:=
+ "org.drools.process.core.datatype,org.drools.process.core,com.thought
+ works.xstream";version="5.1.0.SNAPSHOT",org.drools.common;uses:="org.
+ drools.spi,org.drools.rule,org.drools.impl,org.drools.event,org.drool
+ s,org.drools.base,org.drools.process.core,org.drools.core.util,org.dr
+ ools.management,org.drools.process.instance.event,org.drools.process.
+ instance,org.drools.process.core.event,org.drools.runtime.impl,org.dr
+ ools.type,org.drools.process.instance.timer,org.drools.time,org.drool
+ s.ruleflow.core,org.drools.workflow.core.node,org.drools.concurrent,o
+ rg.drools.base.evaluators,javax.xml.bind.annotation,org.drools.factte
+ mplates,org.drools.marshalling.impl,org.drools.time.impl";version="5.
+ 1.0.SNAPSHOT",org.drools.process.instance.context.exclusive;uses:="or
+ g.drools.process.instance.context";version="5.1.0.SNAPSHOT",org.drool
+ s.process.instance.impl.factory;uses:="org.drools.process.instance,or
+ g.drools.process.instance.impl,org.drools.process.instance.context,or
+ g.drools.process.core";version="5.1.0.SNAPSHOT",org.drools.workflow.i
+ nstance.impl.factory;uses:="org.drools.workflow.instance.impl,org.dro
+ ols.workflow.instance";version="5.1.0.SNAPSHOT",org.drools.command.ru
+ ntime.rule;uses:="org.drools.command,org.drools.command.impl,org.droo
+ ls.impl,org.drools,org.drools.spi,javax.xml.bind.annotation,org.drool
+ s.runtime.impl,org.drools.common,org.mvel2";version="5.1.0.SNAPSHOT",
+ org.drools.agent;uses:="org.drools,org.drools.rule,org.drools.core.ut
+ il,org.drools.definitions.impl,org.drools.util.codec,org.drools.agent
+ .impl,org.drools.common";version="5.1.0.SNAPSHOT",org.drools.xml.chan
+ geset;uses:="org.drools.io.impl,org.drools,org.w3c.dom,org.xml.sax,or
+ g.drools.xml,org.drools.builder.conf.impl,org.drools.io.internal,org.
+ drools.core.util";version="5.1.0.SNAPSHOT",org.drools.command.impl;us
+ es:="org.drools.command,org.drools.command.runtime.process,org.drools
+ .command.runtime.rule,org.drools.impl,org.drools,org.drools.command.r
+ untime,org.drools.rule,org.drools.time";version="5.1.0.SNAPSHOT",org.
+ drools.audit.event;version="5.1.0.SNAPSHOT",org.drools.process.instan
+ ce.context.swimlane;uses:="org.drools.process.core.context.swimlane,o
+ rg.drools.process.instance.context,org.drools.process.core";version="
+ 5.1.0.SNAPSHOT",org.drools.base.dataproviders;uses:="org.mvel2.integr
+ ation,org.drools.base.mvel,org.mvel2,org.drools.rule,org.drools,org.d
+ rools.spi,org.drools.core.util";version="5.1.0.SNAPSHOT",org.drools.b
+ uilder.conf.impl;version="5.1.0.SNAPSHOT",org.drools;uses:="org.drool
+ s.spi,org.drools.time.impl,org.drools.time,org.drools.rule,org.drools
+ .common,org.drools.workflow.instance.impl,org.drools.process.core.imp
+ l,org.drools.process.instance.impl,org.drools.runtime.rule.impl,org.d
+ rools.process.instance,org.drools.conflict,org.drools.process.core.da
+ tatype,org.mvel2,org.drools.process.core,org.drools.core.util,org.dro
+ ols.concurrent,org.drools.event,org.drools.process.instance.event,org
+ .drools.command,org.drools.process.instance.timer";version="5.1.0.SNA
+ PSHOT",org.drools.type;version="5.1.0.SNAPSHOT",org.drools.workflow.c
+ ore;uses:="org.drools.spi,org.drools.process.core";version="5.1.0.SNA
+ PSHOT",org.drools.workflow.core.impl;uses:="org.drools.workflow.core,
+ org.drools.process.core,org.drools.workflow.core.node,org.drools.proc
+ ess.core.impl";version="5.1.0.SNAPSHOT",org.drools.process.core.valid
+ ation;version="5.1.0.SNAPSHOT",org.drools.command.runtime.process;use
+ s:="javax.xml.bind.annotation,org.drools.command,org.drools.command.i
+ mpl,org.drools.process.instance,org.drools.xml.jaxb.util,javax.xml.bi
+ nd.annotation.adapters";version="5.1.0.SNAPSHOT",org.drools.rule;uses
+ :="org.drools.common,org.drools.spi,org.drools,org.drools.core.util,o
+ rg.drools.base,org.mvel2.integration.impl,org.mvel2.integration,org.m
+ vel2.ast,org.drools.base.mvel,org.drools.factmodel,org.drools.facttem
+ plates,org.drools.time.impl,org.drools.marshalling.impl,org.drools.ti
+ me";version="5.1.0.SNAPSHOT",org.drools.process.core.datatype.impl;us
+ es:="org.drools.process.core.datatype";version="5.1.0.SNAPSHOT",org.d
+ rools.spi;uses:="org.drools.base,org.drools.common,org.drools.rule,or
+ g.drools,org.drools.core.util,org.drools.time,org.drools.concurrent,o
+ rg.drools.facttemplates,org.drools.process.core.context.variable,org.
+ drools.impl,org.drools.process.instance,org.drools.process.instance.c
+ ontext.variable,org.drools.workflow.instance,org.drools.event";versio
+ n="5.1.0.SNAPSHOT",org.drools.time;uses:="org.drools.rule,org.drools,
+ org.drools.time.impl";version="5.1.0.SNAPSHOT",org.drools.xml;uses:="
+ org.xml.sax,org.drools.xml.changeset,javax.xml.parsers,org.w3c.dom,or
+ g.xml.sax.helpers,org.drools";version="5.1.0.SNAPSHOT",org.drools.aud
+ it;uses:="org.drools.event,org.drools.audit.event,org.drools,com.thou
+ ghtworks.xstream,org.drools.impl,org.drools.workflow.instance.node,or
+ g.drools.workflow.core.node,org.drools.common,org.drools.rule,org.dro
+ ols.workflow.instance,org.drools.command,org.drools.spi,org.drools.co
+ mmand.impl";version="5.1.0.SNAPSHOT",org.drools.process.core.context.
+ exception;uses:="org.drools.workflow.core,org.drools.process.core.con
+ text,org.drools.process.core";version="5.1.0.SNAPSHOT",org.drools.imp
+ l;uses:="org.drools,org.drools.definitions.rule.impl,org.drools.event
+ .knowlegebase.impl,org.drools.event,org.drools.rule,org.drools.defini
+ tions.impl,org.drools.common,org.drools.command,org.drools.agent,org.
+ drools.command.impl,org.drools.event.rule.impl,org.drools.spi,org.dro
+ ols.event.process.impl,org.drools.runtime.impl,org.drools.runtime.rul
+ e.impl,org.drools.process.instance.event,org.drools.process.instance,
+ org.drools.time,org.drools.base,org.drools.command.runtime,org.drools
+ .command.runtime.rule,org.drools.agent.impl,org.drools.core.util";ver
+ sion="5.1.0.SNAPSHOT",org.drools.osgi.core;uses:="org.drools.io.impl,
+ org.drools.impl,org.drools,org.osgi.framework";version="5.1.0.SNAPSHO
+ T",org.drools.event.knowlegebase.impl;uses:="org.drools";version="5.1
+ .0.SNAPSHOT",org.drools.ruleflow.core.factory;uses:="org.drools.rulef
+ low.core,org.drools.workflow.core.node,org.drools.workflow.core,org.d
+ rools.workflow.core.impl,org.drools.process.core.context.variable,org
+ .drools.process.core.context.exception,org.drools.process.core.dataty
+ pe,org.drools.process.core,org.drools.process.core.event,org.drools.p
+ rocess.core.timer,org.drools.process.core.impl";version="5.1.0.SNAPSH
+ OT",org.drools.process.core.context.swimlane;uses:="org.drools.proces
+ s.core.context,org.drools.process.core";version="5.1.0.SNAPSHOT",org.
+ drools.server;uses:="org.drools";version="5.1.0.SNAPSHOT",org.drools.
+ workflow.core.node;uses:="org.drools.workflow.core,org.drools.workflo
+ w.core.impl,org.drools.process.core.context,org.drools.process.core.i
+ mpl,org.drools.process.core,org.drools.process.core.event,org.drools.
+ process.core.context.variable,org.drools.process.core.datatype,org.dr
+ ools.process.core.datatype.impl.type,org.drools.process.core.timer";v
+ ersion="5.1.0.SNAPSHOT",org.drools.core.util.debug;uses:="org.drools.
+ common,org.drools.core.util,org.drools.rule,org.drools.impl,org.drool
+ s,org.mvel2.integration.impl,org.mvel2.templates,org.mvel2.integratio
+ n,org.mvel2.optimizers,org.mvel2.compiler";version="5.1.0.SNAPSHOT",o
+ rg.drools.process.instance;uses:="org.drools.process.core.context.var
+ iable,org.drools.common,org.drools.process.instance.context.variable,
+ org.drools,org.drools.process.core,org.drools.ruleflow.core,org.drool
+ s.ruleflow.instance";version="5.1.0.SNAPSHOT",org.drools.command.buil
+ der;uses:="org.drools.command,org.drools.command.impl,org.drools.runt
+ ime.impl";version="5.1.0.SNAPSHOT",org.drools.process.core.timer;vers
+ ion="5.1.0.SNAPSHOT",org.drools.io.impl;uses:="org.drools.io.internal
+ ,org.drools,org.drools.core.util,org.drools.util.codec";version="5.1.
+ 0.SNAPSHOT",org.drools.base.mvel;uses:="org.mvel2.integration,org.dro
+ ols,org.drools.common,org.mvel2.integration.impl,org.mvel2,org.drools
+ .rule,org.drools.spi,org.mvel2.compiler,org.drools.type,org.drools.co
+ re.util,org.drools.base,org.mvel2.debug";version="5.1.0.SNAPSHOT",org
+ .drools.event;uses:="org.drools.rule,org.drools.spi,org.drools,org.dr
+ ools.common,org.drools.process.instance";version="5.1.0.SNAPSHOT",org
+ .drools.runtime.impl;uses:="org.drools.xml.jaxb.util,javax.xml.bind.a
+ nnotation,javax.xml.bind.annotation.adapters";version="5.1.0.SNAPSHOT
+ ",org.drools.base.accumulators;uses:="org.drools.common,org.drools.ru
+ le,org.drools,org.drools.spi,org.mvel2.integration,org.drools.base.mv
+ el,org.mvel2";version="5.1.0.SNAPSHOT",org.drools.runtime.rule.impl;u
+ ses:="org.drools.common,org.drools.spi,org.drools.xml.jaxb.util,javax
+ .xml.bind.annotation,org.drools.rule,org.drools,javax.xml.bind.annota
+ tion.adapters,org.drools.base";version="5.1.0.SNAPSHOT",org.drools.fa
+ cttemplates;uses:="org.drools.rule,org.drools.common,org.drools.base,
+ org.drools,org.drools.spi,org.drools.core.util";version="5.1.0.SNAPSH
+ OT",org.drools.process.core.datatype;version="5.1.0.SNAPSHOT",org.dro
+ ols.core.util;uses:="org.drools.common,org.drools.rule,org.drools.spi
+ ,org.drools,org.drools.type";version="5.1.0.SNAPSHOT",org.drools.fact
+ model;uses:="org.mvel2.asm,org.drools.base,com.thoughtworks.xstream.i
+ o,com.thoughtworks.xstream.io.xml,com.thoughtworks.xstream";version="
+ 5.1.0.SNAPSHOT",org.drools.ruleflow.instance;uses:="org.drools.rulefl
+ ow.core,org.drools.workflow.instance.impl,org.drools.workflow.core.no
+ de,org.drools.workflow.instance,org.drools.process.instance";version=
+ "5.1.0.SNAPSHOT",org.drools.marshalling.impl;uses:="org.drools.proces
+ s.instance.context.swimlane,org.drools.workflow.instance.impl,org.dro
+ ols.workflow.instance.node,org.drools.common,org.drools.process.insta
+ nce.context.exclusive,org.drools.process.instance,org.drools.process.
+ instance.context.variable,org.drools.workflow.instance,org.drools.pro
+ cess.core,org.drools.core.util,org.drools.impl,org.drools,org.drools.
+ spi,org.drools.concurrent,org.drools.process.instance.impl,org.drools
+ .process.instance.timer,org.drools.base,org.drools.rule,org.drools.pr
+ ocess.instance.event,org.drools.ruleflow.instance";version="5.1.0.SNA
+ PSHOT",org.drools.process.instance.impl.demo;uses:="org.drools.proces
+ s.instance,javax.swing,javax.swing.event";version="5.1.0.SNAPSHOT",or
+ g.drools.process.core.context;uses:="org.drools.process.core";version
+ ="5.1.0.SNAPSHOT",org.drools.agent.impl;uses:="org.drools,org.drools.
+ spi,org.drools.rule,org.drools.agent,org.drools.core.util,org.drools.
+ definitions.impl,org.drools.io.impl,org.drools.impl,org.drools.common
+ ,org.drools.io.internal,org.drools.process.core,org.drools.xml";versi
+ on="5.1.0.SNAPSHOT",org.drools.process.core.context.exclusive;uses:="
+ org.drools.process.core.context,org.drools.process.core";version="5.1
+ .0.SNAPSHOT",org.drools.runtime.pipeline;version="5.1.0.SNAPSHOT",org
+ .drools.runtime.help.impl;uses:="org.drools.command.runtime.process,c
+ om.thoughtworks.xstream.io,com.thoughtworks.xstream.converters,com.th
+ oughtworks.xstream.mapper,org.drools.command,com.thoughtworks.xstream
+ .converters.collections,org.drools.common,org.drools.runtime.impl,org
+ .drools.command.runtime.rule,org.drools.command.runtime,org.drools.ru
+ ntime.rule.impl,org.drools.base,org.drools.rule,org.drools.spi,com.th
+ oughtworks.xstream";version="5.1.0.SNAPSHOT",org.drools.io.internal;v
+ ersion="5.1.0.SNAPSHOT",org.drools.concurrent;uses:="org.drools,org.d
+ rools.spi";version="5.1.0.SNAPSHOT"
+Private-Package: .;version="5.1.0.SNAPSHOT",org.drools.reteoo.compiled
+ ;version="5.1.0.SNAPSHOT",org.drools.reteoo.builder;version="5.1.0.SN
+ APSHOT",org.drools.reteoo;version="5.1.0.SNAPSHOT"
+Tool: Bnd-0.0.357
+Bundle-Name: Drools :: Core
+Created-By: 1.6.0_18 (Sun Microsystems Inc.)
+Require-Bundle: org.drools.api;visibility:=reexport;bundle-version="5.
+ 1.0.SNAPSHOT"
+Bundle-Vendor: JBoss Inc.
+DynamicImport-Package: *
+Bundle-Version: 5.1.0.SNAPSHOT
+Bnd-LastModified: 1274306691563
Bundle-Activator: org.drools.osgi.core.Activator
-Created-By: 1.5.0_21 (Sun Microsystems Inc.)
+Bundle-ManifestVersion: 2
+Bundle-Description: A rule production system
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Import-Package: com.thoughtworks.xstream,com.thoughtworks.xstream.conv
erters,com.thoughtworks.xstream.converters.collections,com.thoughtwor
ks.xstream.io,com.thoughtworks.xstream.io.xml,com.thoughtworks.xstrea
m.mapper,javax.management,javax.management.openmbean,javax.swing,java
- x.swing.border,javax.swing.event,javax.xml.bind.annotation,javax.xml.
- bind.annotation.adapters,javax.xml.parsers,org.mvel2;version="2.0",or
- g.mvel2.asm;version="2.0",org.mvel2.asm.util;version="2.0",org.mvel2.
- ast;version="2.0",org.mvel2.compiler;version="2.0",org.mvel2.debug;ve
- rsion="2.0",org.mvel2.integration;version="2.0",org.mvel2.integration
- .impl;version="2.0",org.mvel2.optimizers;version="2.0",org.mvel2.temp
- lates;version="2.0",org.mvel2.util;version="2.0",org.osgi.framework;v
- ersion="1.5",org.w3c.dom,org.xml.sax,org.xml.sax.helpers,sun.misc
-Bnd-LastModified: 1267407378178
-Export-Package: org.drools.process.instance.context.swimlane;uses:="or
- g.drools.process.core.context.swimlane,org.drools.process.core,org.dr
- ools.process.instance.context";version="5.1.0.SNAPSHOT",org.drools.pr
- ocess.core.timer;version="5.1.0.SNAPSHOT",org.drools.ruleflow.core.va
- lidation;uses:="org.mvel2.compiler,org.drools.process.core.timer,org.
- drools.process.core.validation,org.drools.process.core.datatype,org.d
- rools.workflow.core.node,org.drools.process.core.context.variable,org
- .drools.workflow.core.impl,org.mvel2,org.drools.time,org.drools,org.d
- rools.process.core.validation.impl,org.drools.ruleflow.core,org.drool
- s.process.core,org.drools.workflow.core";version="5.1.0.SNAPSHOT",org
- .drools.ruleflow.instance;uses:="org.drools.workflow.instance.impl,or
- g.drools.workflow.instance,org.drools.ruleflow.core,org.drools.workfl
- ow.core.node,org.drools.process.instance";version="5.1.0.SNAPSHOT",or
- g.drools.workflow.core.node;uses:="org.drools.workflow.core.impl,org.
- drools.workflow.core,org.drools.process.core.context,org.drools.proce
- ss.core,org.drools.process.core.impl,org.drools.process.core.event,or
- g.drools.process.core.datatype,org.drools.process.core.context.variab
- le,org.drools.process.core.datatype.impl.type,org.drools.process.core
- .timer";version="5.1.0.SNAPSHOT",org.drools.core.util.asm;uses:="org.
- mvel2.asm,org.drools,org.mvel2.asm.util";version="5.1.0.SNAPSHOT",org
- .drools.command.runtime.process;uses:="org.drools.command,org.drools.
- command.impl,javax.xml.bind.annotation,org.drools.process.instance,or
- g.drools.xml.jaxb.util,javax.xml.bind.annotation.adapters";version="5
- .1.0.SNAPSHOT",org.drools.process.instance.event;uses:="org.drools.ma
- rshalling.impl,org.drools.process.instance,org.drools.common,org.droo
- ls";version="5.1.0.SNAPSHOT",org.drools.osgi.core;uses:="org.drools,o
- rg.drools.impl,org.osgi.framework,org.drools.io.impl";version="5.1.0.
- SNAPSHOT",org.drools.ruleflow.core.factory;uses:="org.drools.workflow
- .core.impl,org.drools.ruleflow.core,org.drools.workflow.core.node,org
- .drools.workflow.core,org.drools.process.core,org.drools.process.core
- .datatype,org.drools.process.core.context.exception,org.drools.proces
- s.core.context.variable,org.drools.process.core.event,org.drools.proc
- ess.core.timer,org.drools.process.core.impl";version="5.1.0.SNAPSHOT"
- ,org.drools.marshalling.impl;uses:="org.drools.workflow.instance.impl
- ,org.drools.process.instance.context.swimlane,org.drools.process.inst
- ance,org.drools.workflow.instance.node,org.drools.workflow.instance,o
- rg.drools.process.core,org.drools.process.instance.context.variable,o
- rg.drools.common,org.drools.core.util,org.drools.impl,org.drools.conc
- urrent,org.drools,org.drools.spi,org.drools.process.instance.timer,or
- g.drools.base,org.drools.rule,org.drools.process.instance.impl,org.dr
- ools.process.instance.event,org.drools.ruleflow.instance";version="5.
- 1.0.SNAPSHOT",org.drools.time;uses:="org.drools.rule,org.drools,org.d
- rools.time.impl";version="5.1.0.SNAPSHOT",org.drools.workflow.core.im
- pl;uses:="org.drools.workflow.core,org.drools.process.core,org.drools
- .workflow.core.node,org.drools.process.core.impl";version="5.1.0.SNAP
- SHOT",org.drools.io.internal;version="5.1.0.SNAPSHOT",org.drools.proc
- ess.instance.impl.demo;uses:="org.drools.process.instance,javax.swing
- .event,javax.swing";version="5.1.0.SNAPSHOT",org.drools.rule;uses:="o
- rg.drools.spi,org.drools.common,org.drools,org.drools.core.util,org.d
- rools.base,org.mvel2.ast,org.mvel2.integration,org.mvel2.integration.
- impl,org.drools.base.mvel,org.drools.facttemplates,org.drools.factmod
- el,org.drools.time.impl,org.drools.marshalling.impl,org.drools.time";
- version="5.1.0.SNAPSHOT",org.drools.process.core.event;version="5.1.0
- .SNAPSHOT",org.drools.event.knowlegebase.impl;uses:="org.drools";vers
- ion="5.1.0.SNAPSHOT",org.drools.conflict;uses:="org.drools.spi,org.dr
- ools.rule,org.drools.common";version="5.1.0.SNAPSHOT",org.drools.proc
- ess.core.context.exception;uses:="org.drools.workflow.core,org.drools
- .process.core.context,org.drools.process.core";version="5.1.0.SNAPSHO
- T",org.drools.process.instance.context.variable;uses:="org.drools.eve
- nt,org.drools,org.drools.process.core,org.drools.process.instance,org
- .drools.process.core.context.variable,org.drools.process.instance.con
- text,org.drools.common";version="5.1.0.SNAPSHOT",org.drools.audit;use
- s:="org.drools.event,org.drools,org.drools.audit.event,com.thoughtwor
- ks.xstream,org.drools.impl,org.drools.workflow.core.node,org.drools.c
- ommand,org.drools.workflow.instance.node,org.drools.workflow.instance
- ,org.drools.rule,org.drools.spi,org.drools.command.impl,org.drools.co
- mmon";version="5.1.0.SNAPSHOT",org.drools.base.extractors;uses:="org.
- drools.base,org.drools.spi,org.drools.core.util,org.drools.common,org
- .drools,org.mvel2,org.mvel2.compiler";version="5.1.0.SNAPSHOT",org.dr
- ools.process.core.context;uses:="org.drools.process.core";version="5.
- 1.0.SNAPSHOT",org.drools.workflow.instance.impl.factory;uses:="org.dr
- ools.workflow.instance.impl,org.drools.workflow.instance";version="5.
- 1.0.SNAPSHOT",org.drools.core.util.debug;uses:="org.drools.common,org
- .drools.core.util,org.drools.rule,org.drools,org.drools.impl,org.mvel
- 2.integration,org.mvel2.compiler,org.mvel2.optimizers,org.mvel2.integ
- ration.impl,org.mvel2.templates";version="5.1.0.SNAPSHOT",org.drools.
- process.instance;uses:="org.drools,org.drools.process.core,org.drools
- .process.core.context.variable,org.drools.process.instance.context.va
- riable,org.drools.common,org.drools.ruleflow.instance,org.drools.rule
- flow.core";version="5.1.0.SNAPSHOT",org.drools.process.core.context.v
- ariable;uses:="org.drools.process.core.datatype,org.drools.process.co
- re,org.drools.process.core.datatype.impl.type,org.drools.process.core
- .context";version="5.1.0.SNAPSHOT",org.drools.event.rule.impl;uses:="
- org.drools.event,org.drools,org.drools.spi,org.drools.common,org.droo
- ls.impl";version="5.1.0.SNAPSHOT",org.drools.command.builder;uses:="o
- rg.drools.command,org.drools.command.impl,org.drools.runtime.impl";ve
- rsion="5.1.0.SNAPSHOT",org.drools.runtime.pipeline;version="5.1.0.SNA
- PSHOT",org.drools.base.accumulators;uses:="org.drools,org.drools.rule
- ,org.drools.spi,org.drools.common,org.mvel2,org.mvel2.integration,org
- .drools.base.mvel";version="5.1.0.SNAPSHOT",org.drools.event;uses:="o
- rg.drools.rule,org.drools.spi,org.drools,org.drools.common,org.drools
- .process.instance";version="5.1.0.SNAPSHOT",org.drools.definitions.ru
- le.impl;uses:="org.drools.rule";version="5.1.0.SNAPSHOT",org.drools.x
- ml;uses:="org.xml.sax,org.drools.xml.changeset,javax.xml.parsers,org.
- xml.sax.helpers,org.w3c.dom,org.drools";version="5.1.0.SNAPSHOT",org.
- drools.facttemplates;uses:="org.drools.rule,org.drools.base,org.drool
- s,org.drools.spi,org.drools.core.util,org.drools.common";version="5.1
- .0.SNAPSHOT",org.drools.base.field;uses:="org.drools,org.drools.spi,o
- rg.drools.core.util,org.drools.common";version="5.1.0.SNAPSHOT",org.d
- rools.runtime.rule.impl;uses:="org.drools.spi,org.drools.common,org.d
- rools,org.drools.rule,org.drools.xml.jaxb.util,javax.xml.bind.annotat
- ion.adapters,javax.xml.bind.annotation";version="5.1.0.SNAPSHOT",org.
- drools.process.core.context.swimlane;uses:="org.drools.process.core.c
- ontext,org.drools.process.core";version="5.1.0.SNAPSHOT",org.drools.c
- oncurrent;uses:="org.drools,org.drools.spi";version="5.1.0.SNAPSHOT",
- org.drools.ruleflow.core;uses:="org.drools.workflow.core.impl,org.dro
- ols.workflow.core,org.drools.ruleflow.core.factory,org.drools.workflo
- w.core.node,org.drools.process.core.context.swimlane,org.drools.proce
- ss.core,org.drools.process.core.context.exception,org.drools.process.
- core.context.variable,org.drools.ruleflow.core.validation,org.drools.
- process.core.validation,org.drools.process.core.datatype";version="5.
- 1.0.SNAPSHOT",org.drools.type;version="5.1.0.SNAPSHOT",org.drools.cor
- e.util;uses:="org.drools.rule,org.drools.spi,org.drools.common,org.dr
- ools,org.drools.type";version="5.1.0.SNAPSHOT",org.drools.agent;uses:
- ="org.drools,org.drools.rule,org.drools.definitions.impl,org.drools.c
- ore.util,sun.misc,org.drools.agent.impl,org.drools.common";version="5
- .1.0.SNAPSHOT",org.drools.time.impl;uses:="org.drools.time,org.drools
- ,org.drools.common";version="5.1.0.SNAPSHOT",org.drools.event.process
- .impl;uses:="org.drools.event,org.drools,org.drools.common";version="
- 5.1.0.SNAPSHOT",org.drools.common;uses:="org.drools.spi,org.drools.ru
- le,org.drools.impl,org.drools.event,org.drools.management,org.drools.
- base,org.drools,org.drools.process.core,org.drools.core.util,org.droo
- ls.process.instance.event,org.drools.process.core.event,org.drools.pr
- ocess.instance,org.drools.workflow.core.node,org.drools.time,org.droo
- ls.runtime.impl,org.drools.process.instance.timer,org.drools.concurre
- nt,org.drools.ruleflow.core,org.drools.type,org.drools.base.evaluator
- s,javax.xml.bind.annotation,org.drools.facttemplates,org.drools.marsh
- alling.impl,org.drools.time.impl";version="5.1.0.SNAPSHOT",org.drools
- .workflow.instance.impl;uses:="org.drools.workflow.instance.node,org.
- drools.workflow.core,org.drools.process.instance.context.exception,or
- g.drools.process.instance,org.drools.workflow.core.impl,org.drools.ba
- se,org.drools.workflow.instance,org.drools,org.drools.spi,org.drools.
- common,org.drools.workflow.instance.impl.factory,org.drools.workflow.
- core.node,org.drools.event,org.drools.process.core,org.mvel2.integrat
- ion,org.mvel2.integration.impl,org.drools.process.instance.context.va
- riable,org.drools.process.instance.event,org.drools.process.instance.
- impl";version="5.1.0.SNAPSHOT",org.drools.base.evaluators;uses:="org.
- drools.time,org.drools.base,org.drools,org.drools.rule,org.drools.spi
- ,org.drools.common,org.drools.core.util,org.drools.type,org.mvel2.uti
- l";version="5.1.0.SNAPSHOT",org.drools.impl;uses:="org.drools,org.dro
- ols.event,org.drools.definitions.rule.impl,org.drools.rule,org.drools
- .definitions.impl,org.drools.event.knowlegebase.impl,org.drools.comma
- nd,org.drools.command.impl,org.drools.agent,org.drools.common,org.dro
- ols.spi,org.drools.event.rule.impl,org.drools.event.process.impl,org.
- drools.runtime.impl,org.drools.process.instance,org.drools.process.in
- stance.event,org.drools.time,org.drools.runtime.rule.impl,org.drools.
- base,org.drools.command.runtime.rule,org.drools.agent.impl,org.drools
- .core.util";version="5.1.0.SNAPSHOT",org.drools.definitions.impl;uses
- :="org.drools.definitions.rule.impl,org.drools.rule";version="5.1.0.S
- NAPSHOT",org.drools.audit.event;version="5.1.0.SNAPSHOT",org.drools.p
- rocess.core.datatype;version="5.1.0.SNAPSHOT",org.drools.process.inst
- ance.context;uses:="org.drools.process.core,org.drools.process.instan
- ce";version="5.1.0.SNAPSHOT",org.drools.command;uses:="org.drools.com
- mand.impl,org.drools.runtime.impl,org.drools.time,org.drools";version
- ="5.1.0.SNAPSHOT",org.drools.management;uses:="javax.management,org.d
- rools.common,org.drools,org.drools.base,org.drools.spi,javax.manageme
- nt.openmbean,org.drools.event,org.drools.rule";version="5.1.0.SNAPSHO
- T",org.drools.base;uses:="org.drools.event,org.drools.concurrent,org.
- drools,org.drools.spi,org.drools.core.util.asm,org.drools.core.util,o
- rg.drools.common,org.drools.time,org.drools.base.evaluators,org.drool
- s.base.extractors,org.mvel2.asm,org.drools.rule,org.drools.impl,org.d
- rools.base.field,org.drools.type,org.mvel2.ast,org.mvel2.integration,
- org.drools.base.mvel,org.drools.facttemplates";version="5.1.0.SNAPSHO
- T",org.drools;uses:="org.drools.spi,org.drools.time,org.drools.time.i
- mpl,org.drools.rule,org.drools.common,org.drools.workflow.instance.im
- pl,org.drools.process.core.datatype,org.drools.process.instance,org.m
- vel2,org.drools.runtime.rule.impl,org.drools.concurrent,org.drools.pr
- ocess.core,org.drools.conflict,org.drools.process.core.impl,org.drool
- s.core.util,org.drools.process.instance.impl,org.drools.event,org.dro
- ols.process.instance.event,org.drools.command,org.drools.process.inst
- ance.timer";version="5.1.0.SNAPSHOT",org.drools.command.assertion;use
- s:="org.drools.command,org.mvel2,org.drools.command.impl,org.drools.c
- ore.util";version="5.1.0.SNAPSHOT",org.drools.agent.impl;uses:="org.d
- rools,org.drools.spi,org.drools.rule,org.drools.definitions.impl,org.
- drools.core.util,org.drools.agent,org.drools.impl,org.drools.xml,org.
- drools.io.internal,org.drools.process.core,org.drools.io.impl,org.dro
- ols.common";version="5.1.0.SNAPSHOT",org.drools.spi;uses:="org.drools
- .base,org.drools,org.drools.rule,org.drools.common,org.drools.core.ut
- il,org.drools.time,org.drools.concurrent,org.drools.facttemplates,org
- .drools.workflow.instance,org.drools.impl,org.drools.process.instance
- ,org.drools.process.core.context.variable,org.drools.process.instance
- .context.variable,org.drools.event";version="5.1.0.SNAPSHOT",org.droo
- ls.xml.jaxb.util;uses:="javax.xml.bind.annotation.adapters,javax.xml.
- bind.annotation";version="5.1.0.SNAPSHOT",org.drools.process.core.imp
- l;uses:="org.drools.process.core,org.drools.process.core.datatype,org
- .drools.process.core.context";version="5.1.0.SNAPSHOT",org.drools.pro
- cess.instance.impl.humantask;uses:="javax.swing.event,javax.swing,jav
- ax.swing.border";version="5.1.0.SNAPSHOT",org.drools.workflow.core;us
- es:="org.drools.spi,org.drools.process.core";version="5.1.0.SNAPSHOT"
- ,org.drools.visualize;version="5.1.0.SNAPSHOT",org.drools.runtime.imp
- l;uses:="org.drools.command,org.drools.command.impl,javax.xml.bind.an
- notation,org.drools.xml.jaxb.util,javax.xml.bind.annotation.adapters"
- ;version="5.1.0.SNAPSHOT",org.drools.builder.conf.impl;version="5.1.0
- .SNAPSHOT",org.drools.workflow.instance.context;uses:="org.drools.wor
- kflow.instance,org.drools.process.instance,org.drools.process.core,or
- g.drools.process.instance.impl,org.drools.process.instance.context";v
- ersion="5.1.0.SNAPSHOT",org.drools.process.core.validation;version="5
- .1.0.SNAPSHOT",org.drools.process.instance.context.exception;uses:="o
- rg.drools.base,org.drools.workflow.instance,org.drools,org.drools.spi
- ,org.drools.process.instance,org.drools.process.core.context.exceptio
- n,org.drools.workflow.core,org.drools.common,org.drools.process.core,
- org.drools.process.instance.context";version="5.1.0.SNAPSHOT",org.dro
- ols.xml.changeset;uses:="org.drools.xml,org.xml.sax,org.drools,org.w3
- c.dom,org.drools.io.impl,org.drools.io.internal,org.drools.builder.co
- nf.impl,org.drools.core.util";version="5.1.0.SNAPSHOT",org.drools.pro
- cess.instance.timer;uses:="org.drools.time,org.drools,org.drools.proc
- ess.instance.event,org.drools.process.instance,org.drools.time.impl";
- version="5.1.0.SNAPSHOT",org.drools.base.dataproviders;uses:="org.mve
- l2,org.mvel2.integration,org.drools,org.drools.rule,org.drools.spi,or
- g.drools.base.mvel,org.drools.core.util";version="5.1.0.SNAPSHOT",org
- .drools.process.instance.impl.factory;uses:="org.drools.process.core,
- org.drools.process.instance,org.drools.process.instance.impl,org.droo
- ls.process.instance.context";version="5.1.0.SNAPSHOT",org.drools.work
- flow.instance;uses:="org.drools.process.instance,org.drools.workflow.
- instance.impl,org.drools.impl,org.drools.workflow.core.impl,org.drool
- s,org.drools.process.core,org.drools.common";version="5.1.0.SNAPSHOT"
- ,org.drools.workflow.instance.node;uses:="org.drools.workflow.instanc
- e.impl,org.drools.workflow.core.node,org.drools.process.instance,org.
- drools.base,org.drools.workflow.instance,org.drools,org.drools.spi,or
- g.drools.workflow.core,org.drools.common,org.drools.process.core,org.
- drools.process.instance.impl,org.drools.event,org.drools.process.core
- .event,org.drools.process.instance.context.variable,org.drools.proces
- s.instance.context.exception,org.mvel2,org.mvel2.integration,org.droo
- ls.process.instance.context.swimlane,org.drools.rule,org.drools.proce
- ss.core.timer,org.drools.process.instance.timer,org.drools.time";vers
- ion="5.1.0.SNAPSHOT",org.drools.process.core.validation.impl;uses:="o
- rg.drools.process.core.validation";version="5.1.0.SNAPSHOT",org.drool
- s.factmodel;uses:="org.mvel2.asm,org.drools.base,com.thoughtworks.xst
- ream.io,com.thoughtworks.xstream.io.xml,com.thoughtworks.xstream";ver
- sion="5.1.0.SNAPSHOT",org.drools.base.mvel;uses:="org.mvel2.integrati
- on,org.mvel2.integration.impl,org.mvel2,org.drools,org.drools.rule,or
- g.drools.spi,org.drools.common,org.mvel2.compiler,org.drools.type,org
- .drools.core.util,org.drools.base,org.mvel2.debug";version="5.1.0.SNA
- PSHOT",org.drools.process.core;uses:="org.drools.process.core.datatyp
- e";version="5.1.0.SNAPSHOT",org.drools.command.impl;uses:="org.drools
- .command,org.drools.command.runtime.process,org.drools.command.runtim
- e.rule,org.drools.impl,org.drools.time,org.drools,org.drools.rule,org
- .drools.command.runtime,org.drools.runtime.impl";version="5.1.0.SNAPS
- HOT",org.drools.io.impl;uses:="org.drools.io.internal,org.drools,org.
- drools.core.util";version="5.1.0.SNAPSHOT",org.drools.runtime.help.im
- pl;uses:="org.drools.command,com.thoughtworks.xstream.io,com.thoughtw
- orks.xstream.mapper,com.thoughtworks.xstream.converters.collections,o
- rg.drools.command.runtime.process,com.thoughtworks.xstream.converters
- ,org.drools.runtime.impl,org.drools.common,org.drools.command.runtime
- .rule,org.drools.command.runtime,org.drools.base,org.drools.runtime.r
- ule.impl,org.drools.rule,org.drools.spi,com.thoughtworks.xstream";ver
- sion="5.1.0.SNAPSHOT",org.drools.process.core.datatype.impl;uses:="or
- g.drools.process.core.datatype";version="5.1.0.SNAPSHOT",org.drools.p
- rocess.core.datatype.impl.type;uses:="org.drools.process.core.datatyp
- e,org.drools.process.core,com.thoughtworks.xstream";version="5.1.0.SN
- APSHOT",org.drools.process.instance.impl;uses:="org.drools.process.co
- re,org.drools.process.instance,org.drools.process.instance.context.sw
- imlane,org.drools.process.core.context.swimlane,org.drools.process.in
- stance.context.exception,org.drools.process.instance.impl.factory,org
- .drools.process.core.context.exception,org.drools.process.core.contex
- t.variable,org.drools.process.instance.context.variable,org.drools,or
- g.drools.common";version="5.1.0.SNAPSHOT",org.drools.runtime.pipeline
- .impl;uses:="org.drools.runtime.pipeline,org.drools.command,org.drool
- s.command.runtime.rule,org.mvel2,org.mvel2.compiler,org.drools.common
- ,org.drools,org.drools.impl,org.drools.rule";version="5.1.0.SNAPSHOT"
- ,org.drools.command.runtime.rule;uses:="org.drools.command,org.drools
- .command.impl,org.drools,org.drools.impl,org.drools.spi,org.drools.ru
- ntime.impl,javax.xml.bind.annotation,org.drools.common,org.mvel2";ver
- sion="5.1.0.SNAPSHOT",org.drools.command.runtime;uses:="org.drools.co
- mmand,org.drools.command.impl,org.drools.command.runtime.process,java
- x.xml.bind.annotation,org.drools.command.runtime.rule,org.drools.runt
- ime.impl,org.drools.impl,org.drools";version="5.1.0.SNAPSHOT"
-Bundle-Version: 5.1.0.SNAPSHOT
-Bundle-Name: Drools :: Core
-Bundle-Description: A rule production system
-Private-Package: org.drools.reteoo.builder;version="5.1.0.SNAPSHOT",or
- g.drools.reteoo.compiled;version="5.1.0.SNAPSHOT",org.drools.reteoo;v
- ersion="5.1.0.SNAPSHOT",.;version="5.1.0.SNAPSHOT"
+ x.swing.border,javax.swing.event,javax.xml.bind,javax.xml.bind.annota
+ tion,javax.xml.bind.annotation.adapters,javax.xml.parsers,org.mvel2;v
+ ersion="2.0",org.mvel2.asm;version="2.0",org.mvel2.asm.util;version="
+ 2.0",org.mvel2.ast;version="2.0",org.mvel2.compiler;version="2.0",org
+ .mvel2.debug;version="2.0",org.mvel2.integration;version="2.0",org.mv
+ el2.integration.impl;version="2.0",org.mvel2.optimizers;version="2.0"
+ ,org.mvel2.templates;version="2.0",org.mvel2.util;version="2.0",org.o
+ sgi.framework;version="1.5",org.w3c.dom,org.xml.sax,org.xml.sax.helpe
+ rs
+Bundle-SymbolicName: org.drools.core
Bundle-DocURL: http://www.jboss.org/
-Bundle-Vendor: JBoss Inc.
-Bundle-ManifestVersion: 2
-Bundle-SymbolicName: org.drools.core
-Tool: Bnd-0.0.357
-Require-Bundle: org.drools.api;visibility:=reexport;bundle-version="5.
- 1.0.SNAPSHOT"
-DynamicImport-Package: *
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResult.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResult.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResult.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -91,6 +91,10 @@
return this.factHandles[ declr.getPattern().getOffset() ]; // -1 because we shifted the array left
// when removing the query object
}
+
+ public FactHandle getFactHandle(int i) {
+ return this.factHandles[ i + 1 ];
+ }
/**
* Return the FactHandles for the Tuple.
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/AttachedViewChangedEventListenerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/AttachedViewChangedEventListenerImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/AttachedViewChangedEventListenerImpl.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -0,0 +1,44 @@
+package org.drools.base;
+
+import org.drools.QueryResults;
+import org.drools.common.InternalFactHandle;
+import org.drools.rule.Declaration;
+import org.drools.rule.EntryPoint;
+import org.drools.runtime.rule.AttachedViewChangedEventListener;
+import org.drools.runtime.rule.impl.OpenQueryViewChangedEventListenerAdapter;
+
+public class AttachedViewChangedEventListenerImpl
+ implements
+ AttachedViewChangedEventListener {
+
+ public void close() {
+
+// try {
+// startOperation();
+// this.ruleBase.readLock();
+// this.lock.lock();
+// DroolsQuery queryObject = new DroolsQuery( query,
+// arguments,
+// new ExternalViewEventListenerAdapter(listener) );
+// InternalFactHandle handle = this.handleFactory.newFactHandle( queryObject,
+// this.getObjectTypeConfigurationRegistry().getObjectTypeConf( EntryPoint.DEFAULT,
+// queryObject ),
+// this );
+//
+// insert( handle,
+// queryObject,
+// null,
+// null,
+// this.typeConfReg.getObjectTypeConf( this.entryPoint,
+// queryObject ) );
+//
+// this.handleFactory.destroyFactHandle( handle );
+//
+// } finally {
+// this.lock.unlock();
+// this.ruleBase.readUnlock();
+// endOperation();
+// }
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultQueryResultsCollector.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultQueryResultsCollector.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultQueryResultsCollector.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -1,69 +0,0 @@
-package org.drools.base;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.common.DisconnectedFactHandle;
-import org.drools.common.InternalFactHandle;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.reteoo.LeftTuple;
-import org.drools.rule.Query;
-import org.drools.rule.Variable;
-import org.drools.spi.PropagationContext;
-
-public class DefaultQueryResultsCollector
- implements
- QueryResultCollector {
-
- private List results;
-
- public DefaultQueryResultsCollector() {
- this.results = new ArrayList( 250 );
- }
-
- public List getResults() {
- return this.results;
- }
-
- public void add(final LeftTuple tuple,
- final PropagationContext context,
- final InternalWorkingMemory workingMemory) {
- InternalFactHandle[] handles = new InternalFactHandle[tuple.getIndex() + 1];
- LeftTuple entry = tuple;
-
- // Add all the FactHandles except the root DroolQuery object
- while ( entry.getIndex() > 0 ) {
- InternalFactHandle handle = entry.getLastHandle();
- handles[entry.getIndex()] = new DisconnectedFactHandle( handle.getId(),
- handle.getIdentityHashCode(),
- handle.getObjectHashCode(),
- handle.getRecency(),
- handle.getObject() );
- entry = entry.getParent();
- }
-
- // Get the Query object
- InternalFactHandle handle = entry.getLastHandle();
- DroolsQuery query = (DroolsQuery) handle.getObject();
-
- // Copy of it's arguments for unification variables.
- Object[] args = query.getElements();
- Object[] newArgs = new Object[args.length];
- for ( int i = 0, length = args.length; i < length; i++ ) {
- if ( args[i] instanceof Variable ) {
- newArgs[i] = ((Variable) args[i]).getValue();
- } else {
- newArgs[i] = args[i];
- }
- }
- handles[entry.getIndex()] = new DisconnectedFactHandle( handle.getId(),
- handle.getIdentityHashCode(),
- handle.getObjectHashCode(),
- handle.getRecency(),
- new ArrayElements( newArgs ) );
-
- this.results.add( handles );
-
- }
-
-}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DroolsQuery.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DroolsQuery.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DroolsQuery.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -24,22 +24,26 @@
public final class DroolsQuery extends ArrayElements {
private final String name;
- private QueryResultCollector resultsCollector;
+ private InternalViewChangedEventListener resultsCollector;
private Query query;
+ private boolean open;
public DroolsQuery(final String name,
- QueryResultCollector resultsCollector) {
+ InternalViewChangedEventListener resultsCollector) {
this( name,
null,
- resultsCollector );
+ resultsCollector,
+ false );
}
public DroolsQuery(final String name,
final Object[] params,
- QueryResultCollector resultsCollector) {
+ final InternalViewChangedEventListener resultsCollector,
+ final boolean open ) {
super( params );
this.name = name;
this.resultsCollector = resultsCollector;
+ this.open = open;
}
public String getName() {
@@ -55,10 +59,14 @@
return this.query;
}
- public QueryResultCollector getQueryResultCollector() {
+ public InternalViewChangedEventListener getQueryResultCollector() {
return this.resultsCollector;
}
+ public boolean isOpen() {
+ return open;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/InternalViewChangedEventListener.java (from rev 32832, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/QueryResultCollector.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/InternalViewChangedEventListener.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/InternalViewChangedEventListener.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -0,0 +1,22 @@
+package org.drools.base;
+
+import org.drools.common.InternalWorkingMemory;
+import org.drools.reteoo.LeftTuple;
+import org.drools.rule.Rule;
+import org.drools.spi.PropagationContext;
+
+public interface InternalViewChangedEventListener {
+ public void rowAdded(Rule rule,
+ LeftTuple tuple,
+ PropagationContext context,
+ InternalWorkingMemory workingMemory);
+
+ public void rowRemoved(Rule rule, LeftTuple tuple,
+ PropagationContext context,
+ InternalWorkingMemory workingMemory);
+
+ public void rowUpdated(Rule rule,
+ LeftTuple leftTuple,
+ PropagationContext context,
+ InternalWorkingMemory workingMemory);
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/QueryResultCollector.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/QueryResultCollector.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/QueryResultCollector.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -1,11 +0,0 @@
-package org.drools.base;
-
-import org.drools.common.InternalWorkingMemory;
-import org.drools.reteoo.LeftTuple;
-import org.drools.spi.PropagationContext;
-
-public interface QueryResultCollector {
- public void add(final LeftTuple tuple,
- final PropagationContext context,
- final InternalWorkingMemory workingMemory);
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/StandardQueryViewChangedEventListener.java (from rev 32943, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultQueryResultsCollector.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/StandardQueryViewChangedEventListener.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/StandardQueryViewChangedEventListener.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -0,0 +1,83 @@
+package org.drools.base;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.common.DisconnectedFactHandle;
+import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.reteoo.LeftTuple;
+import org.drools.rule.Query;
+import org.drools.rule.Rule;
+import org.drools.rule.Variable;
+import org.drools.spi.PropagationContext;
+
+public class StandardQueryViewChangedEventListener
+ implements
+ InternalViewChangedEventListener {
+
+ private List results;
+
+ public StandardQueryViewChangedEventListener() {
+ this.results = new ArrayList( 250 );
+ }
+
+ public List getResults() {
+ return this.results;
+ }
+
+ public void rowAdded(final Rule rule,
+ final LeftTuple tuple,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ InternalFactHandle[] handles = new InternalFactHandle[tuple.getIndex() + 1];
+ LeftTuple entry = tuple;
+
+ // Add all the FactHandles except the root DroolQuery object
+ while ( entry.getIndex() > 0 ) {
+ InternalFactHandle handle = entry.getLastHandle();
+ handles[entry.getIndex()] = new DisconnectedFactHandle( handle.getId(),
+ handle.getIdentityHashCode(),
+ handle.getObjectHashCode(),
+ handle.getRecency(),
+ handle.getObject() );
+ entry = entry.getParent();
+ }
+
+ // Get the Query object
+ InternalFactHandle handle = entry.getLastHandle();
+ DroolsQuery query = (DroolsQuery) handle.getObject();
+
+ // Copy of it's arguments for unification variables.
+ Object[] args = query.getElements();
+ Object[] newArgs = new Object[args.length];
+ for ( int i = 0, length = args.length; i < length; i++ ) {
+ if ( args[i] instanceof Variable ) {
+ newArgs[i] = ((Variable) args[i]).getValue();
+ } else {
+ newArgs[i] = args[i];
+ }
+ }
+ handles[entry.getIndex()] = new DisconnectedFactHandle( handle.getId(),
+ handle.getIdentityHashCode(),
+ handle.getObjectHashCode(),
+ handle.getRecency(),
+ new ArrayElements( newArgs ) );
+
+ this.results.add( handles );
+
+ }
+
+ public void rowRemoved(final Rule rule,
+ final LeftTuple tuple,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ }
+
+ public void rowUpdated(final Rule rule,
+ final LeftTuple tuple,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ }
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -69,8 +69,10 @@
import org.drools.runtime.rule.AgendaFilter;
import org.drools.runtime.rule.AgendaGroup;
import org.drools.runtime.rule.FactHandle;
+import org.drools.runtime.rule.LiveQuery;
import org.drools.runtime.rule.QueryResults;
import org.drools.runtime.rule.RuleFlowGroup;
+import org.drools.runtime.rule.ViewChangedEventListener;
import org.drools.runtime.rule.WorkingMemoryEntryPoint;
import org.drools.time.SessionClock;
@@ -409,4 +411,10 @@
return 0;
}
+ public LiveQuery openLiveQuery(String query,
+ Object[] arguments,
+ ViewChangedEventListener listener) {
+ return null;
+ }
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -1109,6 +1109,8 @@
ObjectTypeConf typeConf) {
this.ruleBase.executeQueuedActions();
+ executeQueuedActions();
+
if ( activation != null ) {
// release resources so that they can be GC'ed
activation.getPropagationContext().releaseResources();
@@ -1279,6 +1281,10 @@
this.ruleBase.readUnlock();
}
}
+
+ public EntryPointNode getEntryPointNode() {
+ return this.entryPointNode;
+ }
public void update(final org.drools.runtime.rule.FactHandle handle,
final Object object) throws FactException {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AgendaItem.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AgendaItem.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AgendaItem.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -91,6 +91,8 @@
private ActivationGroupNode activationGroupNode;
private ActivationNode activationNode;
+
+ public boolean fired;
// ------------------------------------------------------------
// Constructors
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -918,6 +918,7 @@
this.workingMemory );
this.knowledgeHelper.cancelRemainingPreviousLogicalDependencies();
this.knowledgeHelper.reset();
+ ((AgendaItem)activation).fired = true;
} catch ( final Exception e ) {
if ( this.legacyConsequenceExceptionHandler != null ) {
this.legacyConsequenceExceptionHandler.handleException( activation,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TruthMaintenanceSystem.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TruthMaintenanceSystem.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TruthMaintenanceSystem.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -230,7 +230,7 @@
this.handle = context.handles.get( context.readInt() );
this.context = context.propagationContexts.get( context.readLong() );
- this.activation = context.terminalTupleMap.get( context.readInt() ).getActivation();
+ this.activation = (Activation) context.terminalTupleMap.get( context.readInt() ).getObject();
this.set = ( Set ) this.tms.getJustifiedMap().get( handle.getId() );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -69,7 +69,9 @@
import org.drools.runtime.rule.Agenda;
import org.drools.runtime.rule.AgendaFilter;
import org.drools.runtime.rule.FactHandle;
+import org.drools.runtime.rule.LiveQuery;
import org.drools.runtime.rule.QueryResults;
+import org.drools.runtime.rule.ViewChangedEventListener;
import org.drools.runtime.rule.WorkingMemoryEntryPoint;
import org.drools.runtime.rule.impl.AgendaImpl;
import org.drools.runtime.rule.impl.NativeQueryResults;
@@ -831,5 +833,11 @@
return this.session.getFactCount();
}
+ public LiveQuery openLiveQuery(String query,
+ Object[] arguments,
+ ViewChangedEventListener listener) {
+ return this.session.openLiveQuery( query, arguments, listener );
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -617,7 +617,7 @@
rule,
subRule );
- leftTuple.setActivation( activation );
+ leftTuple.setObject( activation );
if ( stream.readBoolean() ) {
String activationGroupName = stream.readUTF();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -48,6 +48,7 @@
import org.drools.rule.EntryPoint;
import org.drools.rule.Rule;
import org.drools.runtime.process.WorkItem;
+import org.drools.spi.Activation;
import org.drools.spi.ActivationGroup;
import org.drools.spi.AgendaGroup;
import org.drools.spi.PropagationContext;
@@ -561,11 +562,11 @@
//Map<LeftTuple, Integer> tuples = context.terminalTupleMap;
if ( entries.length != 0 ) {
for ( Entry<LeftTuple, Integer> entry : entries ) {
- if (entry.getKey().getActivation() != null) {
+ if (entry.getKey().getObject() != null) {
LeftTuple leftTuple = entry.getKey();
stream.writeShort(PersisterEnums.ACTIVATION);
writeActivation(context, leftTuple, (AgendaItem) leftTuple
- .getActivation(), (RuleTerminalNode) leftTuple
+ .getObject(), (RuleTerminalNode) leftTuple
.getLeftTupleSink());
}
}
@@ -641,8 +642,8 @@
Map<Long, PropagationContext> pcMap = new HashMap<Long, PropagationContext>();
for ( Entry<LeftTuple, Integer> entry : entries ) {
LeftTuple leftTuple = entry.getKey();
- if (leftTuple.getActivation() != null) {
- PropagationContext pc = leftTuple.getActivation()
+ if (leftTuple.getObject() != null) {
+ PropagationContext pc = ((Activation)leftTuple.getObject())
.getPropagationContext();
if (!pcMap.containsKey(pc.getPropagationNumber())) {
stream.writeShort(PersisterEnums.PROPAGATION_CONTEXT);
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -25,6 +25,7 @@
import org.drools.RuleBaseConfiguration;
import org.drools.RuntimeDroolsException;
+import org.drools.base.DroolsQuery;
import org.drools.common.BetaConstraints;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
@@ -128,12 +129,24 @@
AccumulateContext accresult = new AccumulateContext();
+ boolean useLeftMemory = true;
if ( this.tupleMemoryEnabled ) {
memory.betaMemory.getLeftTupleMemory().add( leftTuple );
memory.betaMemory.getCreatedHandles().put( leftTuple,
accresult,
false );
- }
+ } else {
+ // this is a hack, to not add closed DroolsQuery objects
+ Object object = ((InternalFactHandle)context.getFactHandle()).getObject();
+ if ( memory.betaMemory.getLeftTupleMemory() != null && !(object instanceof DroolsQuery && !((DroolsQuery)object).isOpen() ) ) {
+ memory.betaMemory.getLeftTupleMemory().add( leftTuple );
+ memory.betaMemory.getCreatedHandles().put( leftTuple,
+ accresult,
+ false );
+ } else {
+ useLeftMemory = false;
+ }
+ }
accresult.context = this.accumulate.createContext();
@@ -158,7 +171,8 @@
null,
workingMemory,
memory,
- accresult );
+ accresult,
+ useLeftMemory );
}
}
@@ -169,7 +183,8 @@
context,
workingMemory,
memory,
- accresult );
+ accresult,
+ useLeftMemory );
}
@@ -230,9 +245,10 @@
memory.betaMemory.getRightTupleMemory().add( rightTuple );
- if ( !this.tupleMemoryEnabled ) {
- // do nothing here, as we know there are no left tuples at this stage in sequential mode.
- return;
+ if ( memory.betaMemory.getLeftTupleMemory() == null || memory.betaMemory.getLeftTupleMemory().size() == 0 ) {
+ // do nothing here, as we know there are no left tuples at this stage in sequential mode or for a query.
+ // unless it's an "Open Query" and thus that will have left memory, so continue as normal
+ return;
}
this.constraints.updateFromFactHandle( memory.betaMemory.getContext(),
@@ -249,13 +265,15 @@
null,
workingMemory,
memory,
- accctx );
+ accctx,
+ true );
evaluateResultConstraints( ActivitySource.RIGHT,
leftTuple,
context,
workingMemory,
memory,
- accctx );
+ accctx,
+ true );
}
}
@@ -343,7 +361,8 @@
null,
workingMemory,
memory,
- accctx );
+ accctx,
+ true );
}
}
} else {
@@ -362,7 +381,8 @@
null,
workingMemory,
memory,
- accctx );
+ accctx,
+ true );
} else {
// we must re-add this to ensure deterministic iteration
LeftTuple temp = childLeftTuple.getLeftParentNext();
@@ -402,7 +422,8 @@
context,
workingMemory,
memory,
- accctx );
+ accctx,
+ true );
}
public void modifyRightTuple(RightTuple rightTuple,
@@ -415,7 +436,7 @@
memory.betaMemory.getRightTupleMemory().remove( rightTuple );
memory.betaMemory.getRightTupleMemory().add( rightTuple );
- if ( !this.tupleMemoryEnabled ) {
+ if ( memory.betaMemory.getLeftTupleMemory() == null || memory.betaMemory.getLeftTupleMemory().size() == 0 ) {
// do nothing here, as we know there are no left tuples at this stage in sequential mode.
return;
}
@@ -466,13 +487,15 @@
null,
workingMemory,
memory,
- accctx );
+ accctx,
+ true );
evaluateResultConstraints( ActivitySource.RIGHT,
leftTuple,
context,
workingMemory,
memory,
- accctx );
+ accctx,
+ true );
}
}
} else {
@@ -501,7 +524,8 @@
childLeftTuple,
workingMemory,
memory,
- accctx );
+ accctx,
+ true );
if( temp != null ) {
childLeftTuple = temp;
}
@@ -510,7 +534,8 @@
context,
workingMemory,
memory,
- accctx );
+ accctx,
+ true );
} else if ( childLeftTuple != null && childLeftTuple.getLeftParent() == leftTuple ) {
LeftTuple temp = childLeftTuple.getRightParentNext();
@@ -527,7 +552,8 @@
context,
workingMemory,
memory,
- accctx );
+ accctx,
+ true );
childLeftTuple = temp;
}
@@ -554,7 +580,8 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory,
final AccumulateMemory memory,
- final AccumulateContext accctx) {
+ final AccumulateContext accctx,
+ final boolean useLeftMemory ) {
// get the actual result
final Object result = this.accumulate.getResult( memory.workingMemoryContext,
@@ -611,13 +638,13 @@
leftTuple,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ useLeftMemory );
} else {
this.sink.propagateModifyChildLeftTuple( leftTuple.firstChild,
accctx.result,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ useLeftMemory );
}
} else {
// retract
@@ -641,7 +668,7 @@
null,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ useLeftMemory );
accctx.propagated = true;
// restore the matchings list
restoreList( leftTuple,
@@ -668,7 +695,7 @@
null,
null,
sink,
- this.tupleMemoryEnabled ),
+ true ),
context,
workingMemory );
restoreList( leftTuple,
@@ -741,7 +768,8 @@
final LeftTuple currentRightChild,
final InternalWorkingMemory workingMemory,
final AccumulateMemory memory,
- final AccumulateContext accresult) {
+ final AccumulateContext accresult,
+ final boolean useLeftMemory ) {
LeftTuple tuple = leftTuple;
InternalFactHandle handle = rightTuple.getFactHandle();
if ( this.unwrapRightObject ) {
@@ -756,14 +784,14 @@
workingMemory );
// in sequential mode, we don't need to keep record of matched tuples
- if ( this.tupleMemoryEnabled ) {
+ if ( useLeftMemory ) {
// linking left and right by creating a new left tuple
new LeftTuple( leftTuple,
rightTuple,
currentLeftChild,
currentRightChild,
this,
- this.tupleMemoryEnabled );
+ true );
}
}
@@ -880,7 +908,8 @@
context,
workingMemory,
memory,
- accctx );
+ accctx,
+ true );
match = tmp;
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -16,9 +16,11 @@
package org.drools.reteoo;
+import org.drools.base.DroolsQuery;
import org.drools.common.BetaConstraints;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
+import org.drools.core.util.Iterator;
import org.drools.reteoo.builder.BuildContext;
import org.drools.rule.Behavior;
import org.drools.spi.PropagationContext;
@@ -101,12 +103,21 @@
workingMemory,
leftTuple );
+ boolean useLeftMemory = true;
+ if ( !this.tupleMemoryEnabled ) {
+ // This is a hack, to not add closed DroolsQuery objects
+ Object object = ((InternalFactHandle) context.getFactHandle()).getObject();
+ if ( memory.getLeftTupleMemory() == null || object instanceof DroolsQuery && !((DroolsQuery) object).isOpen() ) {
+ useLeftMemory = false;
+ }
+ }
+
for ( RightTuple rightTuple = memory.getRightTupleMemory().getFirst( leftTuple ); rightTuple != null; rightTuple = (RightTuple) rightTuple.getNext() ) {
if ( this.constraints.isAllowedCachedLeft( memory.getContext(),
rightTuple.getFactHandle() ) ) {
leftTuple.setBlocker( rightTuple );
- if ( this.tupleMemoryEnabled ) {
+ if ( useLeftMemory ) {
rightTuple.addBlocked( leftTuple );
}
@@ -121,8 +132,8 @@
this.sink.propagateAssertLeftTuple( leftTuple,
context,
workingMemory,
- this.tupleMemoryEnabled );
- } else if ( this.tupleMemoryEnabled ) {
+ useLeftMemory );
+ } else if ( useLeftMemory ) {
// LeftTuple is not blocked, so add to memory so other RightTuples can match
memory.getLeftTupleMemory().add( leftTuple );
}
@@ -158,8 +169,8 @@
memory.getRightTupleMemory().add( rightTuple );
- if ( !this.tupleMemoryEnabled ) {
- // do nothing here, as we know there are no left tuples at this stage in sequential mode.
+ if ( memory.getLeftTupleMemory() == null || memory.getLeftTupleMemory().size() == 0 ) {
+ // do nothing here, as no left memory
return;
}
@@ -176,14 +187,12 @@
leftTuple.setBlocker( rightTuple );
rightTuple.addBlocked( leftTuple );
- if ( this.tupleMemoryEnabled ) {
- // this is now blocked so remove it from memory
- memory.getLeftTupleMemory().remove( leftTuple );
- }
+ memory.getLeftTupleMemory().remove( leftTuple );
+
this.sink.propagateAssertLeftTuple( leftTuple,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ true );
}
leftTuple = temp;
@@ -350,13 +359,13 @@
this.sink.propagateAssertLeftTuple( leftTuple,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ true );
} else {
// blocked, with previous children, modify
this.sink.propagateModifyChildLeftTuple( leftTuple,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ true );
}
}
@@ -365,17 +374,17 @@
public void modifyRightTuple(RightTuple rightTuple,
PropagationContext context,
- InternalWorkingMemory workingMemory) {
+ InternalWorkingMemory workingMemory) {
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
-
- if ( !this.tupleMemoryEnabled ) {
- // do nothing here, as we know there are no left tuples at this stage in sequential mode.
-
+
+ if ( memory.getLeftTupleMemory() == null || ( memory.getLeftTupleMemory().size() == 0 && rightTuple.getBlocked() == null ) ) {
+ // do nothing here, as we know there are no left tuples
+
//normally do this at the end, but as we are exiting early, make sure the buckets are still correct.
memory.getRightTupleMemory().remove( rightTuple );
- memory.getRightTupleMemory().add( rightTuple );
+ memory.getRightTupleMemory().add( rightTuple );
return;
- }
+ }
// TODO: wtd with behaviours?
// if ( !behavior.assertRightTuple( memory.getBehaviorContext(),
@@ -412,7 +421,8 @@
// subclasses like ForallNotNode might override this propagation
this.sink.propagateAssertLeftTuple( leftTuple,
context,
- workingMemory, this.tupleMemoryEnabled );
+ workingMemory,
+ true );
}
leftTuple = temp;
@@ -426,12 +436,12 @@
// iterate all the existing previous blocked LeftTuples
for ( LeftTuple leftTuple = (LeftTuple) firstBlocked; leftTuple != null; ) {
LeftTuple temp = leftTuple.getBlockedNext();
-
+
leftTuple.setBlockedPrevious( null ); // must null these as we are re-adding them to the list
leftTuple.setBlockedNext( null );
-
+
if ( this.constraints.isAllowedCachedRight( memory.getContext(),
- leftTuple ) ) {
+ leftTuple ) ) {
// in the same bucket and it still blocks, so add back into blocked list
rightTuple.addBlocked( leftTuple ); // no need to set on LeftTuple, as it already has the reference
leftTuple = temp;
@@ -486,17 +496,22 @@
public void updateSink(final LeftTupleSink sink,
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- // final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
- //
- // final Iterator tupleIter = memory.getLeftTupleMemory().iterator();
- // for ( LeftTuple tuple = (LeftTuple) tupleIter.next(); tuple != null; tuple = (LeftTuple) tupleIter.next() ) {
- // if ( tuple.getMatch() != null ) {
- // sink.assertLeftTuple( new LeftTuple( tuple ),
- // context,
- // workingMemory );
- // }
- // }
- // @FIXME
+ final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
+ Iterator it = memory.getRightTupleMemory().iterator();
+
+ // Relies on the fact that any propagated LeftTuples are blocked, but due to lazy blocking
+ // they will only be blocked once. So we can iterate the right memory to find the left tuples to propagate
+ for ( RightTuple rightTuple = (RightTuple) it.next(); rightTuple != null; rightTuple = (RightTuple) it.next() ) {
+ LeftTuple leftTuple = rightTuple.getBlocked();
+ while ( leftTuple != null ) {
+ sink.assertLeftTuple( new LeftTuple( leftTuple,
+ sink,
+ true ),
+ context,
+ workingMemory );
+ leftTuple = leftTuple.getBlockedNext();
+ }
+ }
}
public String toString() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import org.drools.base.DroolsQuery;
import org.drools.common.BetaConstraints;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
@@ -51,7 +52,7 @@
rightInput,
binder,
behaviors );
- tupleMemoryEnabled = context.isTupleMemoryEnabled();
+ this.tupleMemoryEnabled = context.isTupleMemoryEnabled();
}
public void assertLeftTuple(final LeftTuple leftTuple,
@@ -59,8 +60,18 @@
final InternalWorkingMemory workingMemory) {
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
- if ( this.tupleMemoryEnabled ) {
+ boolean useLeftMemory = true;
+ if ( this.tupleMemoryEnabled ) {
memory.getLeftTupleMemory().add( leftTuple );
+ } else {
+ // This is a hack, to not add closed DroolsQuery objects
+ Object object = ((InternalFactHandle)context.getFactHandle()).getObject();
+ if ( object instanceof DroolsQuery && !((DroolsQuery)object).isOpen() ) {
+ useLeftMemory = false;
+ } else if ( memory.getLeftTupleMemory() != null ) {
+ // LeftMemory will be null for sequential (still created for queries).
+ memory.getLeftTupleMemory().add( leftTuple );
+ }
}
this.constraints.updateFromTuple( memory.getContext(),
@@ -76,7 +87,7 @@
null,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ useLeftMemory );
}
}
@@ -100,9 +111,9 @@
}
memory.getRightTupleMemory().add( rightTuple );
- if ( !this.tupleMemoryEnabled ) {
- // do nothing here, as we know there are no left tuples at this stage in sequential mode.
- return;
+ if ( memory.getLeftTupleMemory() == null || memory.getLeftTupleMemory().size() == 0 ) {
+ // do nothing here, as no left memory
+ return;
}
this.constraints.updateFromFactHandle( memory.getContext(),
@@ -119,7 +130,7 @@
null,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ true );
}
i++;
}
@@ -173,8 +184,8 @@
memory.getRightTupleMemory().remove( rightTuple );
memory.getRightTupleMemory().add( rightTuple );
- if ( !this.tupleMemoryEnabled ) {
- // do nothing here, as we know there are no left tuples at this stage in sequential mode.
+ if ( memory.getLeftTupleMemory() != null && memory.getLeftTupleMemory().size() == 0 ) {
+ // do nothing here, as we know there are no left tuples.
return;
}
@@ -212,7 +223,7 @@
null,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ true );
}
}
} else {
@@ -227,7 +238,7 @@
childLeftTuple,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ true );
} else {
// preserve the current LeftTuple, as we need to iterate to the next before re-adding
LeftTuple temp = childLeftTuple;
@@ -235,7 +246,7 @@
leftTuple,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ true );
// we must re-add this to ensure deterministic iteration
temp.reAddLeft();
}
@@ -297,7 +308,7 @@
null,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ true );
}
}
} else {
@@ -314,7 +325,7 @@
null,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ true );
} else {
// preserve the current LeftTuple, as we need to iterate to the next before re-adding
LeftTuple temp = childLeftTuple;
@@ -322,7 +333,7 @@
rightTuple,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ true );
// we must re-add this to ensure deterministic iteration
temp.reAddRight();
}
@@ -347,8 +358,8 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
-
+ final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
+
final Iterator tupleIter = memory.getLeftTupleMemory().iterator();
for ( LeftTuple leftTuple = (LeftTuple) tupleIter.next(); leftTuple != null; leftTuple = (LeftTuple) tupleIter.next() ) {
this.constraints.updateFromTuple( memory.getContext(),
@@ -362,7 +373,7 @@
null,
null,
sink,
- this.tupleMemoryEnabled ),
+ true ),
context,
workingMemory );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -20,6 +20,7 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import org.drools.base.DroolsQuery;
import org.drools.common.BaseNode;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
@@ -134,11 +135,20 @@
public void assertObject(final InternalFactHandle factHandle,
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
+ boolean useLeftMemory = true;
+ if ( !this.leftTupleMemoryEnabled ) {
+ // This is a hack, to not add closed DroolsQuery objects
+ Object object = ((InternalFactHandle)context.getFactHandle()).getObject();
+ if ( object instanceof DroolsQuery && !((DroolsQuery)object).isOpen() ) {
+ useLeftMemory = false;
+ }
+ }
+
if ( !workingMemory.isSequential() ) {
this.sink.createAndPropagateAssertLeftTuple( factHandle,
context,
workingMemory,
- this.leftTupleMemoryEnabled );
+ useLeftMemory );
} else {
workingMemory.addLIANodePropagation( new LIANodePropagation( this,
factHandle,
@@ -161,7 +171,7 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
final RightTupleSinkAdapter adapter = new RightTupleSinkAdapter( sink,
- this.leftTupleMemoryEnabled );
+ true );
this.objectSource.updateSink( adapter,
context,
workingMemory );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftTuple.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftTuple.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftTuple.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -22,7 +22,7 @@
private LeftTuple parent;
- private Activation activation;
+ private Object object;
private RightTuple blocker;
@@ -411,10 +411,6 @@
return get( declaration.getPattern().getOffset() );
}
- public Activation getActivation() {
- return this.activation;
- }
-
/**
* Returns the fact handles in reverse order
*/
@@ -462,10 +458,14 @@
public void setBlockedNext(LeftTuple blockerNext) {
this.blockedNext = blockerNext;
}
-
- public void setActivation(final Activation activation) {
- this.activation = activation;
+
+ public Object getObject() {
+ return this.object;
}
+
+ public void setObject(final Object object) {
+ this.object = object;
+ }
// public int hashCode() {
// return this.hashCode;
@@ -600,7 +600,7 @@
}
builder.append( Arrays.toString( ids ) )
.append( " activation=" )
- .append( this.activation != null ? ((AgendaItem)this.activation).toExternalForm() : "null" )
+ .append( this.object != null ? this.object : "null" )
.append( " sink=" )
.append( this.sink.getClass().getSimpleName() )
.append( "(" ).append( sink.getId() ).append( ")" );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import org.drools.base.DroolsQuery;
import org.drools.common.BetaConstraints;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
@@ -62,6 +63,16 @@
final InternalWorkingMemory workingMemory) {
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
+
+ boolean useLeftMemory = true;
+ if ( !this.tupleMemoryEnabled ) {
+ // This is a hack, to not add closed DroolsQuery objects
+ Object object = ((InternalFactHandle)context.getFactHandle()).getObject();
+ if ( memory.getLeftTupleMemory() == null || object instanceof DroolsQuery && !((DroolsQuery)object).isOpen() ) {
+ useLeftMemory = false;
+ }
+ }
+
this.constraints.updateFromTuple( memory.getContext(),
workingMemory,
leftTuple );
@@ -71,7 +82,7 @@
rightTuple.getFactHandle() ) ) {
leftTuple.setBlocker( rightTuple );
- if ( this.tupleMemoryEnabled ) {
+ if ( useLeftMemory ) {
rightTuple.addBlocked( leftTuple );
}
@@ -83,14 +94,14 @@
if ( leftTuple.getBlocker() == null ) {
// tuple is not blocked, so add to memory so other fact handles can attempt to match
- if ( this.tupleMemoryEnabled ) {
+ if ( useLeftMemory ) {
memory.getLeftTupleMemory().add( leftTuple );
}
this.sink.propagateAssertLeftTuple( leftTuple,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ useLeftMemory );
}
}
@@ -113,9 +124,9 @@
memory.getRightTupleMemory().add( rightTuple );
- if ( !this.tupleMemoryEnabled ) {
- // do nothing here, as we know there are no left tuples at this stage in sequential mode.
- return;
+ if ( memory.getLeftTupleMemory() == null || memory.getLeftTupleMemory().size() == 0 ) {
+ // do nothing here, as no left memory
+ return;
}
this.constraints.updateFromFactHandle( memory.getContext(),
@@ -306,8 +317,8 @@
PropagationContext context,
InternalWorkingMemory workingMemory) {
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
- if ( !this.tupleMemoryEnabled ) {
- // do nothing here, as we know there are no left tuples at this stage in sequential mode.
+ if ( memory.getLeftTupleMemory() == null || ( memory.getLeftTupleMemory().size() == 0 && rightTuple.getBlocked() == null ) ) {
+ // do nothing here, as we know there are no left tuples
//normally do this at the end, but as we are exiting early, make sure the buckets are still correct.
memory.getRightTupleMemory().remove( rightTuple );
@@ -425,7 +436,7 @@
this.sink.propagateAssertLeftTuple( leftTuple,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ true );
}
/**
@@ -446,7 +457,7 @@
this.sink.propagateModifyChildLeftTuple( leftTuple,
context,
workingMemory,
- this.tupleMemoryEnabled );
+ true );
}
/**
@@ -460,7 +471,7 @@
for ( LeftTuple leftTuple = (LeftTuple) tupleIter.next(); leftTuple != null; leftTuple = (LeftTuple) tupleIter.next() ) {
sink.assertLeftTuple( new LeftTuple( leftTuple,
sink,
- this.tupleMemoryEnabled ),
+ true ),
context,
workingMemory );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryElementNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryElementNode.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryElementNode.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -1,7 +1,7 @@
package org.drools.reteoo;
import org.drools.base.DroolsQuery;
-import org.drools.base.QueryResultCollector;
+import org.drools.base.InternalViewChangedEventListener;
import org.drools.common.BaseNode;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
@@ -11,6 +11,7 @@
import org.drools.rule.Declaration;
import org.drools.rule.EntryPoint;
import org.drools.rule.QueryElement;
+import org.drools.rule.Rule;
import org.drools.rule.Variable;
import org.drools.spi.PropagationContext;
@@ -104,14 +105,15 @@
leftTuple.get( declr ).getObject() );
}
- UnificationNodeQueryResultsCollector collector = new UnificationNodeQueryResultsCollector( leftTuple,
+ UnificationNodeViewChangedEventListener collector = new UnificationNodeViewChangedEventListener( leftTuple,
this.queryElement.getVariables(),
this.sink,
this.tupleMemoryEnabled );
DroolsQuery queryObject = new DroolsQuery( this.queryElement.getQueryName(),
inputArgs,
- collector );
+ collector,
+ false );
collector.setDroolsQuery( queryObject );
InternalFactHandle handle = workingMemory.getFactHandleFactory().newFactHandle( queryObject,
@@ -140,9 +142,9 @@
}
- public static class UnificationNodeQueryResultsCollector
+ public static class UnificationNodeViewChangedEventListener
implements
- QueryResultCollector {
+ InternalViewChangedEventListener {
private LeftTuple leftTuple;
protected LeftTupleSinkPropagator sink;
@@ -152,7 +154,7 @@
private boolean tupleMemoryEnabled;
- public UnificationNodeQueryResultsCollector(LeftTuple leftTuple,
+ public UnificationNodeViewChangedEventListener(LeftTuple leftTuple,
int[] variables,
LeftTupleSinkPropagator sink,
boolean tupleMemoryEnabled) {
@@ -166,7 +168,8 @@
this.query = query;
}
- public void add(LeftTuple resultLeftTuple,
+ public void rowAdded(final Rule rule,
+ LeftTuple resultLeftTuple,
PropagationContext context,
InternalWorkingMemory workingMemory) {
@@ -184,6 +187,20 @@
rightTuple,
this.tupleMemoryEnabled );
}
+
+ public void rowRemoved(final Rule rule,
+ final LeftTuple tuple,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ //TODO
+ }
+
+ public void rowUpdated(final Rule rule,
+ final LeftTuple tuple,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ //TODO
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -135,30 +135,84 @@
* @throws AssertionException
* If an error occurs while asserting.
*/
- public void assertLeftTuple(final LeftTuple tuple,
+ public void assertLeftTuple(final LeftTuple leftTuple,
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- LeftTuple entry = tuple;
+ LeftTuple entry = leftTuple;
// find the DroolsQuery object
while ( entry.getParent() != null ) {
entry = entry.getParent();
}
DroolsQuery query = (DroolsQuery) entry.getLastHandle().getObject();
- query.setQuery( (Query) this.rule );
+ query.setQuery( (Query) this.rule );
// Add results to the adapter
- query.getQueryResultCollector().add( tuple,
- context,
- workingMemory );
+ query.getQueryResultCollector().rowAdded( this.rule,
+ leftTuple,
+ context,
+ workingMemory );
}
- public void retractLeftTuple(final LeftTuple tuple,
+ public void retractLeftTuple(final LeftTuple leftTuple,
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- throw new UnsupportedOperationException( "Querries should not result in this method being called" );
+ LeftTuple entry = leftTuple;
+
+ // find the DroolsQuery object
+ while ( entry.getParent() != null ) {
+ entry = entry.getParent();
+ }
+ DroolsQuery query = (DroolsQuery) entry.getLastHandle().getObject();
+ query.setQuery( (Query) this.rule );
+
+ // Add results to the adapter
+ query.getQueryResultCollector().rowRemoved( this.rule,
+ leftTuple,
+ context,
+ workingMemory );
}
+ public void modifyLeftTuple(InternalFactHandle factHandle,
+ ModifyPreviousTuples modifyPreviousTuples,
+ PropagationContext context,
+ InternalWorkingMemory workingMemory) {
+ LeftTuple leftTuple = modifyPreviousTuples.removeLeftTuple( this );
+ if ( leftTuple != null ) {
+ leftTuple.reAdd(); //
+ // LeftTuple previously existed, so continue as modify
+ modifyLeftTuple( leftTuple,
+ context,
+ workingMemory );
+ } else {
+ // LeftTuple does not exist, so create and continue as assert
+ assertLeftTuple( new LeftTuple( factHandle,
+ this,
+ true ),
+ context,
+ workingMemory );
+ }
+ }
+
+ public void modifyLeftTuple(LeftTuple leftTuple,
+ PropagationContext context,
+ InternalWorkingMemory workingMemory) {
+ LeftTuple entry = leftTuple;
+
+ // find the DroolsQuery object
+ while ( entry.getParent() != null ) {
+ entry = entry.getParent();
+ }
+ DroolsQuery query = (DroolsQuery) entry.getLastHandle().getObject();
+ query.setQuery( (Query) this.rule );
+
+ // Add results to the adapter
+ query.getQueryResultCollector().rowUpdated( this.rule,
+ leftTuple,
+ context,
+ workingMemory );
+ }
+
public String toString() {
return "[QueryTerminalNode(" + this.getId() + "): query=" + this.rule.getName() + "]";
}
@@ -265,17 +319,4 @@
return NodeTypeEnums.QueryTerminalNode;
}
- public void modifyLeftTuple(InternalFactHandle factHandle,
- ModifyPreviousTuples modifyPreviousTuples,
- PropagationContext context,
- InternalWorkingMemory workingMemory) {
- throw new UnsupportedOperationException( "Querries should not result in this method being called" );
- }
-
- public void modifyLeftTuple(LeftTuple leftTuple,
- PropagationContext context,
- InternalWorkingMemory workingMemory) {
- throw new UnsupportedOperationException( "Querries should not result in this method being called" );
- }
-
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -24,9 +24,10 @@
import java.util.HashMap;
import java.util.List;
+import org.drools.FactHandle;
import org.drools.QueryResults;
import org.drools.SessionConfiguration;
-import org.drools.base.DefaultQueryResultsCollector;
+import org.drools.base.StandardQueryViewChangedEventListener;
import org.drools.base.DroolsQuery;
import org.drools.common.AbstractWorkingMemory;
import org.drools.common.DefaultAgenda;
@@ -47,6 +48,11 @@
import org.drools.rule.Rule;
import org.drools.runtime.Environment;
import org.drools.runtime.ObjectFilter;
+import org.drools.runtime.rule.LiveQuery;
+import org.drools.runtime.rule.ViewChangedEventListener;
+import org.drools.runtime.rule.impl.OpenQueryViewChangedEventListenerAdapter;
+import org.drools.runtime.rule.impl.LiveQueryImpl;
+import org.drools.runtime.rule.impl.RowAdapter;
import org.drools.spi.FactHandleFactory;
import org.drools.spi.PropagationContext;
@@ -141,7 +147,8 @@
this.lock.lock();
DroolsQuery queryObject = new DroolsQuery( query,
arguments,
- new DefaultQueryResultsCollector() );
+ new StandardQueryViewChangedEventListener(),
+ false );
InternalFactHandle handle = this.handleFactory.newFactHandle( queryObject,
this.getObjectTypeConfigurationRegistry().getObjectTypeConf( EntryPoint.DEFAULT,
queryObject ),
@@ -162,7 +169,7 @@
declarations = queryObject.getQuery().getDeclarations();
}
- return new QueryResults( ((DefaultQueryResultsCollector) queryObject.getQueryResultCollector()).getResults(),
+ return new QueryResults( ((StandardQueryViewChangedEventListener) queryObject.getQueryResultCollector()).getResults(),
declarations,
this );
} finally {
@@ -171,7 +178,72 @@
endOperation();
}
}
+
+ public LiveQuery openLiveQuery(final String query,
+ final Object[] arguments,
+ final ViewChangedEventListener listener) {
+ try {
+ startOperation();
+ this.ruleBase.readLock();
+ this.lock.lock();
+ DroolsQuery queryObject = new DroolsQuery( query,
+ arguments,
+ new OpenQueryViewChangedEventListenerAdapter(listener),
+ true );
+ InternalFactHandle handle = this.handleFactory.newFactHandle( queryObject,
+ this.getObjectTypeConfigurationRegistry().getObjectTypeConf( EntryPoint.DEFAULT,
+ queryObject ),
+ this );
+
+ insert( handle,
+ queryObject,
+ null,
+ null,
+ this.typeConfReg.getObjectTypeConf( this.entryPoint,
+ queryObject ) );
+
+ return new LiveQueryImpl( this, handle );
+
+// this.handleFactory.destroyFactHandle( handle );
+//
+// Declaration[] declarations = new Declaration[0];
+// if ( queryObject.getQuery() != null ) {
+// // this is null when there are no query results, thus the query object is never set
+// declarations = queryObject.getQuery().getDeclarations();
+// }
+//
+// return new QueryResults( ((DefaultQueryResultsCollector) queryObject.getQueryResultCollector()).getResults(),
+// declarations,
+// this );
+ } finally {
+ this.lock.unlock();
+ this.ruleBase.readUnlock();
+ endOperation();
+ }
+ }
+
+ public void closeLiveQuery(final InternalFactHandle factHandle) {
+
+ try {
+ startOperation();
+ this.ruleBase.readLock();
+ this.lock.lock();
+
+ getEntryPointNode().retractObject( factHandle,
+ null,
+ this.getObjectTypeConfigurationRegistry().getObjectTypeConf( this.getEntryPoint(),
+ factHandle.getObject() ),
+ this );
+ getFactHandleFactory().destroyFactHandle( factHandle );
+
+ } finally {
+ this.lock.unlock();
+ this.ruleBase.readUnlock();
+ endOperation();
+ }
+ }
+
public static class WorkingMemoryReteAssertAction
implements
WorkingMemoryAction {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -184,7 +184,7 @@
agenda.scheduleItem( item,
workingMemory );
- tuple.setActivation( item );
+ tuple.setObject( item );
item.setActivated( true );
((EventSupport) workingMemory).getAgendaEventSupport().fireActivationCreated( item,
@@ -211,7 +211,7 @@
this.subrule );
item.setSequenence( this.sequence );
- tuple.setActivation( item );
+ tuple.setObject( item );
boolean added = agenda.addActivation( item );
@@ -228,7 +228,7 @@
public void retractLeftTuple(final LeftTuple leftTuple,
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- final Activation activation = leftTuple.getActivation();
+ final Activation activation = (Activation) leftTuple.getObject();
// activation can be null if the LeftTuple previous propagated into a no-loop
if ( activation == null ) {
@@ -297,7 +297,7 @@
return;
}
- AgendaItem item = (AgendaItem) leftTuple.getActivation();
+ AgendaItem item = (AgendaItem) leftTuple.getObject();
if ( item != null && item.isActivated() ) {
// already activated, do nothing
return;
@@ -363,9 +363,6 @@
item.setActivated( added );
if ( added ) {
- // workingMemory.removeLogicalDependencies( item,
- // context,
- // this.rule );
((EventSupport) workingMemory).getAgendaEventSupport().fireActivationCreated( item,
workingMemory );
}
@@ -505,7 +502,7 @@
return;
}
- final Activation activation = leftTuple.getActivation();
+ final Activation activation = (Activation) leftTuple.getObject();
if ( activation.isActivated() ) {
activation.remove();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/UnificationRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/UnificationRestriction.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/UnificationRestriction.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -43,7 +43,7 @@
InternalFactHandle handle,
InternalWorkingMemory workingMemory,
ContextEntry context) {
- throw new UnsupportedOperationException( "Cannot use a Unification Restriction in the AlphaNetwork" );
+ return this.vr.isAllowed( extractor, handle, workingMemory, ((UnificationContextEntry)context).getContextEntry() );
}
public boolean isAllowedCachedLeft(ContextEntry context,
@@ -59,7 +59,7 @@
public boolean isAllowedCachedRight(LeftTuple tuple,
ContextEntry context) {
- throw new UnsupportedOperationException( "Cannot right activate a Unification Restriction (for now )" );
+ return this.vr.isAllowedCachedRight( tuple, ((UnificationContextEntry)context).getContextEntry() );
}
public Evaluator getEvaluator() {
@@ -136,8 +136,7 @@
public void updateFromFactHandle(InternalWorkingMemory workingMemory,
InternalFactHandle handle) {
- throw new UnsupportedOperationException( "Cannot right activate a Unification Restriction (for now )" );
- //this.contextEntry.updateFromFactHandle( workingMemory, handle );
+ this.contextEntry.updateFromFactHandle( workingMemory, handle );
}
public void updateFromTuple(InternalWorkingMemory workingMemory,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResultRow.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResultRow.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResultRow.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -12,8 +12,9 @@
Map<String, Integer> identifiers;
private List result;
private List<FactHandle> factHandles;
+ private int size;
- public FlatQueryResultRow(Map<String, Integer> identifiers, List result, List<FactHandle> factHandles) {
+ public FlatQueryResultRow(Map<String, Integer> identifiers, List result, List<FactHandle> factHandles, int size) {
this.identifiers = identifiers;
this.result = result;
this.factHandles = factHandles;
@@ -23,10 +24,23 @@
return this.result.get( identifiers.get( identifier ) );
}
+ public Object get(int i) {
+ return this.result.get( i );
+ }
+
+
public FactHandle getFactHandle(String identifier) {
return this.factHandles.get( identifiers.get( identifier ) );
+ }
+
+ public FactHandle getFactHandle(int i) {
+ return this.factHandles.get( i );
}
+ public int size() {
+ return this.size;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -102,7 +102,8 @@
public QueryResultsRow next() {
return new FlatQueryResultRow( identifiers,
this.iterator.next(),
- this.handleIterator.next() );
+ this.handleIterator.next(),
+ size() );
}
public void remove() {
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/LiveQueryImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/LiveQueryImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/LiveQueryImpl.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -0,0 +1,24 @@
+package org.drools.runtime.rule.impl;
+
+import org.drools.FactHandle;
+import org.drools.common.InternalFactHandle;
+import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.runtime.rule.LiveQuery;
+
+public class LiveQueryImpl
+ implements
+ LiveQuery {
+ ReteooWorkingMemory wm;
+ InternalFactHandle factHandle;
+
+ public LiveQueryImpl(ReteooWorkingMemory wm,
+ FactHandle factHandle) {
+ this.wm = wm;
+ this.factHandle = (InternalFactHandle) factHandle;
+ }
+
+ public void close() {
+ this.wm.closeLiveQuery( this.factHandle );
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResultRow.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResultRow.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResultRow.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -14,10 +14,22 @@
public Object get(String identifier) {
return this.result.get( identifier );
+ }
+
+ public Object get(int i) {
+ return this.result.get( i );
}
public FactHandle getFactHandle(String identifier) {
return this.result.getFactHandle( identifier );
+ }
+
+ public FactHandle getFactHandle(int i) {
+ return this.result.getFactHandle( i );
}
+ public int size() {
+ return result.size();
+ }
+
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/OpenQueryViewChangedEventListenerAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/OpenQueryViewChangedEventListenerAdapter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/OpenQueryViewChangedEventListenerAdapter.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -0,0 +1,46 @@
+package org.drools.runtime.rule.impl;
+
+import org.drools.base.InternalViewChangedEventListener;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.reteoo.LeftTuple;
+import org.drools.rule.Rule;
+import org.drools.runtime.rule.ViewChangedEventListener;
+import org.drools.spi.PropagationContext;
+
+public class OpenQueryViewChangedEventListenerAdapter
+ implements
+ InternalViewChangedEventListener {
+
+ private ViewChangedEventListener viewEventListener;
+
+ public OpenQueryViewChangedEventListenerAdapter(ViewChangedEventListener viewEventListener) {
+ this.viewEventListener = viewEventListener;
+ }
+
+ public void rowAdded(final Rule rule,
+ final LeftTuple leftTuple,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ RowAdapter rowAdapter = new RowAdapter(rule,
+ leftTuple);
+ leftTuple.setObject( rowAdapter );
+ this.viewEventListener.rowAdded( rowAdapter );
+ }
+
+ public void rowRemoved(final Rule rule,
+ final LeftTuple leftTuple,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ RowAdapter rowAdapter = (RowAdapter) leftTuple.getObject();
+ this.viewEventListener.rowRemoved( rowAdapter );
+ }
+
+ public void rowUpdated(final Rule rule,
+ final LeftTuple leftTuple,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ RowAdapter rowAdapter = (RowAdapter) leftTuple.getObject();
+ this.viewEventListener.rowUpdated( rowAdapter );
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/RowAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/RowAdapter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/RowAdapter.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -0,0 +1,89 @@
+package org.drools.runtime.rule.impl;
+
+import org.drools.common.InternalFactHandle;
+import org.drools.reteoo.LeftTuple;
+import org.drools.rule.Declaration;
+import org.drools.rule.Rule;
+import org.drools.runtime.rule.FactHandle;
+import org.drools.runtime.rule.Row;
+
+public class RowAdapter implements Row {
+
+ private Rule rule;
+ private LeftTuple leftTuple;
+ private InternalFactHandle[] factHandles;
+
+ public RowAdapter(final Rule rule,
+ final LeftTuple leftTuple) {
+ this.rule = rule;
+ this.leftTuple = leftTuple;
+ }
+
+ private InternalFactHandle getFactHandle(Declaration declr) {
+ return this.factHandles[ declr.getPattern().getOffset() ]; // -1 because we shifted the array left
+ // when removing the query object
+ }
+
+ public Object get(String identifier) {
+ if ( factHandles == null ) {
+ this.factHandles = this.leftTuple.getFactHandles();
+ }
+ Declaration declr = this.rule.getDeclaration( identifier );
+ InternalFactHandle factHandle = getFactHandle( declr );
+ return declr.getValue( null, factHandle.getObject() );
+ }
+
+ public Object get(int i) {
+ if ( factHandles == null ) {
+ this.factHandles = this.leftTuple.getFactHandles();
+ }
+ return this.factHandles[ i + 1].getObject();
+ }
+
+ public FactHandle getFactHandle(String identifier) {
+ if ( factHandles == null ) {
+ this.factHandles = this.leftTuple.getFactHandles();
+ }
+ return null;
+ }
+
+ public FactHandle getFactHandle(int i) {
+ if ( factHandles == null ) {
+ this.factHandles = this.leftTuple.getFactHandles();
+ }
+ return null;
+ }
+
+ public int size() {
+ if ( factHandles == null ) {
+ this.factHandles = this.leftTuple.getFactHandles();
+ }
+ return 0;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((this.leftTuple == null) ? 0 : this.leftTuple.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ RowAdapter other = (RowAdapter) obj;
+ if (this.leftTuple == null) {
+ if (other.leftTuple != null)
+ return false;
+ } else if (!this.leftTuple.equals(other.leftTuple))
+ return false;
+ return true;
+ }
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -375,7 +375,11 @@
// assert tuple, should not add to left memory, since we are in sequential mode
this.node.assertLeftTuple( tuple0,
- this.context,
+ new PropagationContextImpl( 0,
+ PropagationContext.ASSERTION,
+ null,
+ null,
+ f0 ),
this.workingMemory );
// check memories
assertNull( this.memory.getLeftTupleMemory() );
@@ -390,7 +394,11 @@
null,
true );
this.node.assertLeftTuple( tuple1,
- this.context,
+ new PropagationContextImpl( 0,
+ PropagationContext.ASSERTION,
+ null,
+ null,
+ f1 ),
this.workingMemory );
assertNull( this.memory.getLeftTupleMemory() );
Assert.assertEquals( "Wrong number of elements in matching objects list ",
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -219,10 +219,12 @@
final DefaultFactHandle f0 = new DefaultFactHandle(0, "cheese");
final LeftTuple tuple0 = new LeftTuple(f0, this.node, true);
- this.node.assertObject(f0, this.context, this.workingMemory);
+ this.node.assertObject(f0, new PropagationContextImpl(0,
+ PropagationContext.ASSERTION, null, null, f0), this.workingMemory);
// assert tuple
- this.node.assertLeftTuple(tuple0, this.context, this.workingMemory);
+ this.node.assertLeftTuple(tuple0, new PropagationContextImpl(0,
+ PropagationContext.ASSERTION, null, null, f0), this.workingMemory);
assertEquals(1, this.sink.getAsserted().size());
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LogicalAssertionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LogicalAssertionTest.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LogicalAssertionTest.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -37,6 +37,7 @@
import org.drools.rule.Rule;
import org.drools.FactHandle;
import org.drools.WorkingMemory;
+import org.drools.spi.Activation;
import org.drools.spi.Consequence;
import org.drools.spi.KnowledgeHelper;
import org.drools.spi.PropagationContext;
@@ -127,7 +128,7 @@
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
new RightTuple( logicalHandle,
sink );
// Retract the tuple and test the logically asserted fact was also retracted
@@ -155,7 +156,7 @@
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
new RightTuple( logicalHandle,
sink );
@@ -251,14 +252,14 @@
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
final String logicalString2 = new String( "logical" );
FactHandle logicalHandle2 = workingMemory.insert( logicalString2,
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
assertSame( logicalHandle1,
logicalHandle2 );
@@ -357,7 +358,7 @@
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
// This assertion is stated and should override any previous justified
// "equals" objects.
@@ -397,7 +398,7 @@
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
assertNull( logicalHandle1 );
@@ -406,7 +407,7 @@
false,
false,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
// return the matched handle
assertSame( logicalHandle2,
@@ -521,7 +522,7 @@
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
// This assertion is stated and should override any previous justified
// "equals" objects.
@@ -627,7 +628,7 @@
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
// create the second activation to justify the "logical" fact
final Rule rule2 = new Rule( "test-rule2" );
@@ -658,7 +659,7 @@
false,
true,
rule2,
- tuple2.getActivation() );
+ (Activation)tuple2.getObject() );
// "logical" should only appear once
assertEquals( 1,
@@ -774,7 +775,7 @@
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
new RightTuple( logicalHandle1,
sink );
@@ -784,7 +785,7 @@
false,
true,
rule2,
- tuple2.getActivation() );
+ (Activation)tuple2.getObject() );
assertSame( logicalHandle1, logicalHandle2 );
@@ -908,7 +909,7 @@
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
// Checks that previous LogicalAssert failed
assertNull( logicalHandle3 );
@@ -924,7 +925,7 @@
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
// Checks that previous LogicalAssert failed
assertNull( logicalHandle3 );
@@ -936,7 +937,7 @@
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation)tuple1.getObject() );
// Checks that previous LogicalAssert succeeded as there are no more
// stated strings in the working memory
@@ -1019,7 +1020,7 @@
false,
true,
rule1,
- tuple1.getActivation() );
+ (Activation) tuple1.getObject() );
cheese.setType( "cheddar" );
cheese.setPrice( 20 );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -423,7 +423,11 @@
// assert tuple
this.node.assertLeftTuple( tuple0,
- this.context,
+ new PropagationContextImpl( 0,
+ PropagationContext.ASSERTION,
+ null,
+ null,
+ f0 ),
this.workingMemory );
assertEquals( 0,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryElementNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryElementNodeTest.java 2010-05-19 20:17:40 UTC (rev 32971)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryElementNodeTest.java 2010-05-19 22:24:17 UTC (rev 32972)
@@ -27,7 +27,7 @@
import org.drools.common.InternalWorkingMemory;
import org.drools.common.PropagationContextImpl;
import org.drools.reteoo.EvalConditionNode.EvalMemory;
-import org.drools.reteoo.QueryElementNode.UnificationNodeQueryResultsCollector;
+import org.drools.reteoo.QueryElementNode.UnificationNodeViewChangedEventListener;
import org.drools.reteoo.builder.BuildContext;
import org.drools.rule.Declaration;
import org.drools.rule.Pattern;
@@ -159,13 +159,13 @@
ObjectTypeConf typeConf) {
if( object instanceof DroolsQuery ) {
DroolsQuery query = ( DroolsQuery ) object;
- UnificationNodeQueryResultsCollector collector = ( UnificationNodeQueryResultsCollector ) query.getQueryResultCollector();
+ UnificationNodeViewChangedEventListener collector = ( UnificationNodeViewChangedEventListener ) query.getQueryResultCollector();
for ( int i = 0; i < 3; i++ ) {
Object[] args = query.getElements();
((Variable)args[0]).setValue( "string_0_" + i );
((Variable)args[2]).setValue( "string_2_" + i );
((Variable)args[5]).setValue( "string_5_" + i );
- collector.add( null, null, this );
+ collector.rowAdded( rule, null, null, this );
}
} else {
super.insert( handle, object, rule, activation, typeConf );
More information about the jboss-svn-commits
mailing list