[jboss-svn-commits] JBL Code SVN: r34241 - in labs/jbossrules/trunk: drools-camel/src/main/java/org/drools/camel/component and 17 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jul 28 00:34:35 EDT 2010
Author: mark.proctor at jboss.com
Date: 2010-07-28 00:34:31 -0400 (Wed, 28 Jul 2010)
New Revision: 34241
Added:
labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/ChangeCollector.java
labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/Cheese.java
labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/Person.java
labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/TestVariable.java
labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/XStreamBatchExecutionTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DisconnectedWorkingMemoryEntryPoint.java
Removed:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DisconnectedFactHandle.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/InitialFactHandle.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/InitialFactHandleDummyObject.java
Modified:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactoryService.java
labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/DroolsPolicy.java
labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamHelper.java
labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamJson.java
labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamXml.java
labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointTest.java
labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatefulSessionTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/StandardQueryViewChangedEventListener.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectInEntryPointCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/ModifyCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/RetractCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.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/DefaultFactHandle.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EventFactHandle.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalFactHandle.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/NamedEntryPoint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/ObjectFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/QueryElementFactHandle.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceChangeScannerImpl.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/FromNode.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/ReteooFactHandleFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.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/RightInputAdapterNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamHelper.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamJSon.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/DroolsJaxbContextHelper.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/TemporalEvaluatorFactoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/EqualityKeyTest.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/CompositeObjectSinkAdapterTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/DefaultFactHandleFactoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FactHandleTest.java
Log:
JBRULES-2601 Remove DisconnectedFactHandle and make DefaultFactHandle capable of being disconnected
-DisconnectedFactHandle now removed
-DefaultFactHandle can now work in a disconnected manner
-Cleanup of InitialFact, removing InitialFactHandle, seems no need for it.
-Cleanup of WorkingMemoryEntryPoint, so it nearly always comes as a constructor
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactoryService.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactoryService.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -24,7 +24,7 @@
import com.sun.tools.xjc.Options;
/**
- * KnowledgeBuilderFactoryService is used by the KnowledgeBuilderFacotry to "provide" it's concrete implementation.
+ * KnowledgeBuilderFactoryService is used by the KnowledgeBuilderFactory to "provide" it's concrete implementation.
*
* This class is not considered stable and may change, the user is protected from this change by using
* the Factory api, which is considered stable.
Modified: labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/DroolsPolicy.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/DroolsPolicy.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/DroolsPolicy.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -64,7 +64,6 @@
import org.drools.command.runtime.rule.RetractCommand;
import org.drools.command.runtime.rule.ModifyCommand.SetterImpl;
import org.drools.common.DefaultFactHandle;
-import org.drools.common.DisconnectedFactHandle;
import org.drools.core.util.StringUtils;
import org.drools.runtime.CommandExecutor;
import org.drools.runtime.impl.ExecutionResultImpl;
@@ -367,7 +366,7 @@
public static final String[] JAXB_ANNOTATED_CMD = {BatchExecutionCommand.class.getName(), SetGlobalCommand.class.getName(), GetGlobalCommand.class.getName(), FireAllRulesCommand.class.getName(), InsertElementsCommand.class.getName(),
InsertObjectCommand.class.getName(), ModifyCommand.class.getName(), SetterImpl.class.getName(), QueryCommand.class.getName(), RetractCommand.class.getName(), AbortWorkItemCommand.class.getName(), SignalEventCommand.class.getName(),
- StartProcessCommand.class.getName(), BatchExecutionCommand.class.getName(), ExecutionResultImpl.class.getName(), DefaultFactHandle.class.getName(), JaxbListWrapper.class.getName(), DisconnectedFactHandle.class.getName(),
+ StartProcessCommand.class.getName(), BatchExecutionCommand.class.getName(), ExecutionResultImpl.class.getName(), DefaultFactHandle.class.getName(), JaxbListWrapper.class.getName(),
FlatQueryResults.class.getName(), CompleteWorkItemCommand.class.getName(), GetObjectsCommand.class.getName()};
}
Modified: labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamHelper.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamHelper.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -40,7 +40,6 @@
import org.drools.command.runtime.rule.RetractCommand;
import org.drools.command.runtime.rule.ModifyCommand.SetterImpl;
import org.drools.common.DefaultFactHandle;
-import org.drools.common.DisconnectedFactHandle;
import org.drools.runtime.impl.ExecutionResultImpl;
import org.drools.runtime.rule.impl.FlatQueryResults;
import org.drools.runtime.rule.impl.NativeQueryResults;
@@ -92,8 +91,6 @@
NativeQueryResults.class.getName() );
map.put( "fact-handle",
DefaultFactHandle.class.getName() );
- map.put( "fact-handle",
- DisconnectedFactHandle.class.getName() );
dataFormat.setAliases( map );
}
Modified: labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamJson.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamJson.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamJson.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -43,7 +43,7 @@
import org.drools.command.runtime.rule.ModifyCommand;
import org.drools.command.runtime.rule.QueryCommand;
import org.drools.command.runtime.rule.RetractCommand;
-import org.drools.common.DisconnectedFactHandle;
+import org.drools.common.DefaultFactHandle;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.help.impl.CommandsObjectContainer;
import org.drools.runtime.help.impl.ObjectsObjectContainer;
@@ -194,7 +194,7 @@
}
reader.moveUp();
}
- return new RowItemContainer( new DisconnectedFactHandle( externalForm ),
+ return new RowItemContainer( new DefaultFactHandle( externalForm ),
object );
}
@@ -368,7 +368,7 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext unmarshallingContext) {
reader.moveDown();
- DisconnectedFactHandle factHandle = new DisconnectedFactHandle( reader.getValue() );
+ DefaultFactHandle factHandle = new DefaultFactHandle( reader.getValue() );
reader.moveUp();
return factHandle;
}
@@ -465,7 +465,7 @@
reader.moveDown();
String name = reader.getNodeName();
if ( "fact-handle".equals( name ) ) {
- factHandle = new DisconnectedFactHandle( reader.getValue() );
+ factHandle = new DefaultFactHandle( reader.getValue() );
} else if ( "out-identifier".equals( "out-identifier" ) ) {
outIdentifier = reader.getValue();
}
@@ -504,7 +504,7 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
reader.moveDown();
- FactHandle factHandle = new DisconnectedFactHandle( reader.getValue() );
+ FactHandle factHandle = new DefaultFactHandle( reader.getValue() );
reader.moveUp();
Command cmd = CommandFactory.newRetract( factHandle );
@@ -546,7 +546,7 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
reader.moveDown();
- FactHandle factHandle = new DisconnectedFactHandle( reader.getValue() );
+ FactHandle factHandle = new DefaultFactHandle( reader.getValue() );
reader.moveUp();
List<Setter> setters = new ArrayList();
@@ -754,7 +754,7 @@
reader.moveUp();
facts.put( identifier,
- new DisconnectedFactHandle( externalForm ) );
+ new DefaultFactHandle( externalForm ) );
} else if ( reader.getNodeName().equals( "fact-handles" ) ) {
List list = new ArrayList();
String identifier = null;
@@ -764,7 +764,7 @@
reader.moveUp();
while ( reader.hasMoreChildren() ) {
reader.moveDown();
- FactHandle factHandle = new DisconnectedFactHandle( (String) readItem( reader,
+ FactHandle factHandle = new DefaultFactHandle( (String) readItem( reader,
context,
null ) );
list.add( factHandle );
Modified: labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamXml.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamXml.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamXml.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -45,7 +45,7 @@
import org.drools.command.runtime.rule.ModifyCommand;
import org.drools.command.runtime.rule.QueryCommand;
import org.drools.command.runtime.rule.RetractCommand;
-import org.drools.common.DisconnectedFactHandle;
+import org.drools.common.DefaultFactHandle;
import org.drools.rule.Declaration;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.impl.ExecutionResultImpl;
@@ -215,7 +215,7 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
- FactHandle factHandle = new DisconnectedFactHandle( reader.getAttribute( "fact-handle" ) );
+ FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
List<Setter> setters = new ArrayList();
while ( reader.hasMoreChildren() ) {
@@ -256,7 +256,7 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
- FactHandle factHandle = new DisconnectedFactHandle( reader.getAttribute( "fact-handle" ) );
+ FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
Command cmd = CommandFactory.newRetract( factHandle );
@@ -407,7 +407,7 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
- FactHandle factHandle = new DisconnectedFactHandle( reader.getAttribute( "fact-handle" ) );
+ FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
String identifierOut = reader.getAttribute( "out-identifier" );
GetObjectCommand cmd = new GetObjectCommand( factHandle );
@@ -867,13 +867,13 @@
} else if ( reader.getNodeName().equals( "fact-handle" ) ) {
String identifier = reader.getAttribute( "identifier" );
facts.put( identifier,
- new DisconnectedFactHandle( reader.getAttribute( "external-form" ) ) );
+ new DefaultFactHandle( reader.getAttribute( "external-form" ) ) );
} else if ( reader.getNodeName().equals( "fact-handles" ) ) {
String identifier = reader.getAttribute( "identifier" );
List<FactHandle> list = new ArrayList();
while ( reader.hasMoreChildren() ) {
reader.moveDown();
- list.add( new DisconnectedFactHandle( reader.getAttribute( "external-form" ) ) );
+ list.add( new DefaultFactHandle( reader.getAttribute( "external-form" ) ) );
reader.moveUp();
}
facts.put( identifier,
@@ -979,7 +979,7 @@
reader.moveUp();
reader.moveDown();
- FactHandle handle = new DisconnectedFactHandle( reader.getAttribute( "external-form" ) );
+ FactHandle handle = new DefaultFactHandle( reader.getAttribute( "external-form" ) );
reader.moveUp();
objects.add( object );
Added: labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/ChangeCollector.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/ChangeCollector.java (rev 0)
+++ labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/ChangeCollector.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -0,0 +1,52 @@
+package org.drools;
+
+
+import org.drools.event.rule.WorkingMemoryEventListener;
+import org.drools.event.rule.ObjectInsertedEvent;
+import org.drools.event.rule.ObjectUpdatedEvent;
+import org.drools.event.rule.ObjectRetractedEvent;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Michael Neale
+ */
+public class ChangeCollector implements WorkingMemoryEventListener {
+
+ private List<String> retracted;
+ private List changes;
+
+
+
+
+ public List<String> getRetracted() {
+ return retracted;
+ }
+
+
+ public List getChanges() {
+ return changes;
+ }
+
+
+ public void objectInserted(ObjectInsertedEvent event) {
+
+ }
+
+ public void objectUpdated(ObjectUpdatedEvent event) {
+ if (changes == null) changes = new ArrayList();
+ if (event.getObject() instanceof Cheese) {
+ Cheese c = (Cheese) event.getObject();
+ changes.add(c);
+ }
+ }
+
+ public void objectRetracted(ObjectRetractedEvent event) {
+ if (retracted == null) retracted = new ArrayList<String>();
+ if (event.getOldObject() instanceof Cheese) {
+ Cheese c = (Cheese) event.getOldObject();
+ retracted.add(c.getType());
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/Cheese.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/Cheese.java (rev 0)
+++ labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/Cheese.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -0,0 +1,123 @@
+package org.drools;
+
+
+
+import java.io.Serializable;
+import java.util.Date;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class Cheese
+ implements
+ Serializable {
+
+ public static final String STILTON = "stilton";
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 400L;
+ private String type;
+ private int price;
+ private int oldPrice;
+ private Date usedBy;
+
+ public Cheese() {
+
+ }
+
+ public Cheese(final String type) {
+ super();
+ this.type = type;
+ this.price = 0;
+ }
+
+ public Cheese(final String type,
+ final int price) {
+ super();
+ this.type = type;
+ this.price = price;
+ }
+
+ public Cheese(final String type,
+ final int price,
+ final int oldPrice ) {
+ super();
+ this.type = type;
+ this.price = price;
+ this.oldPrice = oldPrice;
+ }
+
+ public int getPrice() {
+ return this.price;
+ }
+
+ public String getType() {
+ return this.type;
+ }
+
+ public void setType(final String type) {
+ this.type = type;
+ }
+
+ public void setPrice(final int price) {
+ this.price = price;
+ }
+
+ public String toString() {
+ return "Cheese( type='" + this.type + "', price=" + this.price + " )";
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + price;
+ result = PRIME * result + ((type == null) ? 0 : type.hashCode());
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if ( this == obj ) return true;
+ if ( obj == null ) return false;
+ if ( getClass() != obj.getClass() ) return false;
+ final Cheese other = (Cheese) obj;
+ if ( price != other.price ) return false;
+ if ( type == null ) {
+ if ( other.type != null ) return false;
+ } else if ( !type.equals( other.type ) ) return false;
+ return true;
+ }
+
+ public int getOldPrice() {
+ return oldPrice;
+ }
+
+ public void setOldPrice(int oldPrice) {
+ this.oldPrice = oldPrice;
+ }
+
+ public Date getUsedBy() {
+ return usedBy;
+ }
+
+ public void setUsedBy(Date usedBy) {
+ this.usedBy = usedBy;
+ }
+
+
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/Person.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/Person.java (rev 0)
+++ labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/Person.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -0,0 +1,270 @@
+package org.drools;
+
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+
+public class Person
+ implements
+ Serializable {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 400L;
+ private String name;
+ private String likes;
+ private int age;
+ private BigDecimal bigDecimal;
+ private BigInteger bigInteger;
+ private String hair;
+
+ private char sex;
+
+ private boolean alive;
+
+ private String status;
+
+ private Cheese cheese;
+
+ private List addresses = new ArrayList();
+
+// public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+// name = (String)in.readObject();
+// likes = (String)in.readObject();
+// age = in.readInt();
+// bigDecimal = (BigDecimal)in.readObject();
+// bigInteger = (BigInteger)in.readObject();
+// hair = (String)in.readObject();
+// sex = in.readChar();
+// alive = in.readBoolean();
+// status = (String)in.readObject();
+// cheese = (Cheese)in.readObject();
+// addresses = (List)in.readObject();
+// }
+//
+// public void writeExternal(ObjectOutput out) throws IOException {
+// out.writeObject(name);
+// out.writeObject(likes);
+// out.writeObject(bigDecimal);
+// out.writeObject(bigInteger);
+// out.writeObject(hair);
+// out.writeChar(sex);
+// out.writeBoolean(alive);
+// out.writeObject(status);
+// out.writeObject(cheese);
+// out.writeObject(addresses);
+// }
+
+ public List getAddresses() {
+ return addresses;
+ }
+
+ public void setAddresses(List addresses) {
+ this.addresses = addresses;
+ }
+
+ public Person() {
+
+ }
+
+ public Person(String name,
+ int age) {
+ super();
+ this.name = name;
+ this.age = age;
+ }
+
+ public Person(final String name) {
+ this( name,
+ "",
+ 0 );
+ }
+
+ public Person(final String name,
+ final String likes) {
+ this( name,
+ likes,
+ 0 );
+ }
+
+ public Person(final String name,
+ final String likes,
+ final int age) {
+ this.name = name;
+ this.likes = likes;
+ this.age = age;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#getStatus()
+ */
+ public String getStatus() {
+ return this.status;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#setStatus(java.lang.String)
+ */
+ public void setStatus(final String status) {
+ this.status = status;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#getLikes()
+ */
+ public String getLikes() {
+ return this.likes;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#getName()
+ */
+ public String getName() {
+ return this.name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#getAge()
+ */
+ public int getAge() {
+ return this.age;
+ }
+
+ public void setAge(final int age) {
+ this.age = age;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#isAlive()
+ */
+ public boolean isAlive() {
+ return this.alive;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#setAlive(boolean)
+ */
+ public void setAlive(final boolean alive) {
+ this.alive = alive;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#getSex()
+ */
+ public char getSex() {
+ return this.sex;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#setSex(char)
+ */
+ public void setSex(final char sex) {
+ this.sex = sex;
+ }
+
+ public String getHair() {
+ return this.hair;
+ }
+
+ public void setHair(final String hair) {
+ this.hair = hair;
+ }
+
+ public String toString() {
+ return "[Person name='" + this.name + "']";
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + this.age;
+ result = PRIME * result + (this.alive ? 1231 : 1237);
+ result = PRIME * result + ((this.name == null) ? 0 : this.name.hashCode());
+ result = PRIME * result + this.sex;
+ return result;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public boolean equals(final Object obj) {
+ if ( this == obj ) {
+ return true;
+ }
+ if ( obj == null ) {
+ return false;
+ }
+ if ( getClass() != obj.getClass() ) {
+ return false;
+ }
+ final Person other = (Person) obj;
+ if ( this.age != other.age ) {
+ return false;
+ }
+ if ( this.alive != other.alive ) {
+ return false;
+ }
+ if ( this.name == null ) {
+ if ( other.name != null ) {
+ return false;
+ }
+ } else if ( !this.name.equals( other.name ) ) {
+ return false;
+ }
+ if ( this.sex != other.sex ) {
+ return false;
+ }
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#getBigDecimal()
+ */
+ public BigDecimal getBigDecimal() {
+ return this.bigDecimal;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#setBigDecimal(java.math.BigDecimal)
+ */
+ public void setBigDecimal(final BigDecimal bigDecimal) {
+ this.bigDecimal = bigDecimal;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#getBigInteger()
+ */
+ public BigInteger getBigInteger() {
+ return this.bigInteger;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.PersonInterface#setBigInteger(java.math.BigInteger)
+ */
+ public void setBigInteger(final BigInteger bigInteger) {
+ this.bigInteger = bigInteger;
+ }
+
+ public void setLikes(final String likes) {
+ this.likes = likes;
+ }
+
+ public Cheese getCheese() {
+ return this.cheese;
+ }
+
+ public void setCheese(final Cheese cheese) {
+ this.cheese = cheese;
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/TestVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/TestVariable.java (rev 0)
+++ labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/TestVariable.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -0,0 +1,23 @@
+package org.drools;
+/**
+ *
+ */
+
+
+public class TestVariable {
+
+ private String name;
+
+ public TestVariable(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointTest.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointTest.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointTest.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -41,7 +41,7 @@
import org.drools.command.runtime.BatchExecutionCommand;
import org.drools.command.runtime.rule.GetObjectCommand;
import org.drools.command.runtime.rule.InsertObjectCommand;
-import org.drools.common.DisconnectedFactHandle;
+import org.drools.common.DefaultFactHandle;
import org.drools.pipeline.camel.Person;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
@@ -74,7 +74,7 @@
}
public void testSessionGetObject() throws Exception {
- FactHandle factHandle = new DisconnectedFactHandle(handle);
+ FactHandle factHandle = new DefaultFactHandle(handle);
GetObjectCommand cmd = (GetObjectCommand) CommandFactory.newGetObject(factHandle);
cmd.setOutIdentifier("rider");
Modified: labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -64,7 +64,6 @@
import org.drools.command.runtime.rule.RetractCommand;
import org.drools.command.runtime.rule.ModifyCommand.SetterImpl;
import org.drools.common.DefaultFactHandle;
-import org.drools.common.DisconnectedFactHandle;
import org.drools.impl.KnowledgeBaseImpl;
import org.drools.io.ResourceFactory;
import org.drools.pipeline.camel.Person;
@@ -138,7 +137,7 @@
BatchExecutionCommand cmd = new BatchExecutionCommand();
cmd.setLookup( "ksession1" );
- cmd.getCommands().add( new GetObjectCommand( new DisconnectedFactHandle( handle ),
+ cmd.getCommands().add( new GetObjectCommand( new DefaultFactHandle( handle ),
"hadrian" ) );
StringWriter xmlReq = new StringWriter();
Added: labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/XStreamBatchExecutionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/XStreamBatchExecutionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/XStreamBatchExecutionTest.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -0,0 +1,2026 @@
+package org.drools.camel.component;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.naming.Context;
+
+import junit.framework.TestCase;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+import org.custommonkey.xmlunit.Diff;
+import org.custommonkey.xmlunit.XMLAssert;
+import org.custommonkey.xmlunit.XMLUnit;
+import org.custommonkey.xmlunit.examples.RecursiveElementNameAndTextQualifier;
+import org.drools.Cheese;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.Person;
+import org.drools.builder.DirectoryLookupFactoryService;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.builder.ResourceType;
+import org.drools.command.Command;
+import org.drools.command.runtime.rule.ModifyCommand;
+import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalRuleBase;
+import org.drools.definition.KnowledgePackage;
+import org.drools.grid.ExecutionNode;
+import org.drools.grid.local.LocalConnection;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.io.Resource;
+import org.drools.io.ResourceFactory;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.context.variable.VariableScopeInstance;
+import org.drools.runtime.CommandExecutor;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.help.BatchExecutionHelper;
+import org.drools.runtime.process.ProcessInstance;
+import org.drools.runtime.process.WorkItem;
+import org.drools.runtime.process.WorkItemHandler;
+import org.drools.runtime.process.WorkItemManager;
+import org.drools.runtime.process.WorkflowProcessInstance;
+import org.drools.runtime.rule.FactHandle;
+import org.drools.runtime.rule.QueryResultsRow;
+import org.xml.sax.SAXException;
+
+import com.thoughtworks.xstream.XStream;
+
+public class XStreamBatchExecutionTest extends ContextTestSupport {
+ protected ExecutionNode node;
+ protected CommandExecutor exec;
+
+
+ protected Context createJndiContext() throws Exception {
+ Context context = super.createJndiContext();
+
+ LocalConnection connection = new LocalConnection();
+ node = connection.getExecutionNode(null);
+ node.setId("node");
+ context.bind("node", node);
+ node.get(DirectoryLookupFactoryService.class).register("ksession1", this.exec);
+ return context;
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() throws Exception {
+ from("direct:exec").policy( new DroolsPolicy() ).unmarshal( "xstream" ).to("drools://node/ksession1").marshal( "xstream" );
+ from("direct:unmarshal").policy( new DroolsPolicy() ).unmarshal( "xstream" );
+ from("direct:marshal").policy( new DroolsPolicy() ).marshal( "xstream" );
+ }
+ };
+ }
+
+ public void setExec(CommandExecutor exec) {
+ this.exec = exec;
+ try {
+ super.setUp();
+ } catch ( Exception e ) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ XMLUnit.setIgnoreComments( true );
+ XMLUnit.setIgnoreWhitespace( true );
+ XMLUnit.setIgnoreAttributeOrder( true );
+ XMLUnit.setNormalizeWhitespace( true );
+ XMLUnit.setNormalize( true );
+ }
+
+ private void assertXMLEqual(String expectedXml,
+ String resultXml) {
+ try {
+ Diff diff = new Diff( expectedXml,
+ resultXml );
+ diff.overrideElementQualifier( new RecursiveElementNameAndTextQualifier() );
+ XMLAssert.assertXMLEqual( diff,
+ true );
+ } catch ( Exception e ) {
+ throw new RuntimeException( "XML Assertion failure",
+ e );
+ }
+ }
+
+ public void testListenForChanges() throws Exception {
+
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "import org.drools.ChangeCollector \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese(price==25) \n";
+ str += " \n";
+ str += " then \n";
+ str += "end\n";
+
+ str += "rule rule2 \n";
+ str += " when \n";
+ str += " p : Person(name=='mic') \n";
+ str += " c : Cheese(price != 42) \n";
+ str += " \n";
+ str += " then \n";
+ str += " c.setPrice( 42 ); \n";
+ str += " update(c); \n";
+ str += "end\n";
+
+ str += "rule rule3 \n";
+ str += " when \n";
+ str += " p : Person(name=='mark') \n";
+ str += " c : Cheese(price == 42) \n";
+ str += " \n";
+ str += " then \n";
+ str += " retract(c); \n";
+ str += "end\n";
+
+ str += "rule ruleBootStrap \n";
+ str += "salience 10000\n";
+ str += " when \n";
+ str += " $c : ChangeCollector() \n";
+ str += " \n";
+ str += " then \n";
+ str += " kcontext.getKnowledgeRuntime().addEventListener($c); \n";
+ str += "end\n";
+
+ str += "rule ruleCleanup \n";
+ str += "salience -10000\n";
+ str += " when \n";
+ str += " $c : ChangeCollector() \n";
+ str += " \n";
+ str += " then \n";
+ str += " kcontext.getKnowledgeRuntime().removeEventListener($c); \n";
+ str += " retract($c); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert out-identifier='outStilton'>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+ ExecutionResults result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+
+ inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert out-identifier='person'>";
+ inXml += " <org.drools.Person>";
+ inXml += " <name>mic</name>";
+ inXml += " </org.drools.Person>";
+ inXml += " </insert>";
+ inXml += " <insert out-identifier='changes'>";
+ inXml += " <org.drools.ChangeCollector/>";
+ inXml += " </insert>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
+
+ outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ assertTrue( outXml.indexOf( "<changes>" ) > -1 );
+
+ inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert out-identifier='person'>";
+ inXml += " <org.drools.Person>";
+ inXml += " <name>mark</name>";
+ inXml += " </org.drools.Person>";
+ inXml += " </insert>";
+ inXml += " <insert out-identifier='changes'>";
+ inXml += " <org.drools.ChangeCollector/>";
+ inXml += " </insert>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
+
+ outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ assertTrue( outXml.indexOf( "<retracted>" ) > -1 );
+
+ }
+
+
+ public void testInsertWithDefaults() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert out-identifier='outStilton'>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+ ExecutionResults result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+
+ Cheese stilton = (Cheese) result.getValue( "outStilton" );
+ assertEquals( 30,
+ stilton.getPrice() );
+
+ FactHandle factHandle = (FactHandle) result.getFactHandle( "outStilton" );
+ stilton = (Cheese) ksession.getObject( factHandle );
+ assertEquals( 30,
+ stilton.getPrice() );
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n";
+ expectedXml += " <result identifier=\"outStilton\">\n";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " <price>30</price>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " </result>\n";
+ expectedXml += " <fact-handle identifier=\"outStilton\" external-form=\"" + ((InternalFactHandle) result.getFactHandle( "outStilton" )).toExternalForm() + "\" /> \n";
+ expectedXml += "</execution-results>\n";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+ }
+
+ public void testInsertWithReturnObjectFalse() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert out-identifier='outStilton' return-object='false'>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+ ExecutionResults result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+
+ assertNull( result.getValue( "outStilton" ) );
+
+ FactHandle factHandle = (FactHandle) result.getFactHandle( "outStilton" );
+ Cheese stilton = (Cheese) ksession.getObject( factHandle );
+ assertEquals( 30,
+ stilton.getPrice() );
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n";
+ expectedXml += " <fact-handle identifier=\"outStilton\" external-form=\"" + ((InternalFactHandle) result.getFactHandle( "outStilton" )).toExternalForm() + "\" /> \n";
+ expectedXml += "</execution-results>\n";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+ }
+
+ public void testGetObject() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert out-identifier='outStilton'>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+ ExecutionResults result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+
+ Cheese stilton = (Cheese) result.getValue( "outStilton" );
+ assertEquals( 30,
+ stilton.getPrice() );
+
+ FactHandle factHandle = (FactHandle) result.getFactHandle( "outStilton" );
+ inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <get-object out-identifier='outStilton' fact-handle='" + factHandle.toExternalForm() + "' />";
+ inXml += "</batch-execution>";
+ outXml = template.requestBody("direct:exec", inXml, String.class);
+ result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+ stilton = (Cheese) result.getValue( "outStilton" );
+ assertEquals( 30,
+ stilton.getPrice() );
+ }
+
+ public void testRetractObject() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert out-identifier='outStilton'>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+ ExecutionResults result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+
+ Cheese stilton = (Cheese) result.getValue( "outStilton" );
+ assertEquals( 30,
+ stilton.getPrice() );
+
+ FactHandle factHandle = (FactHandle) result.getFactHandle( "outStilton" );
+ inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <retract fact-handle='" + factHandle.toExternalForm() + "' />";
+ inXml += "</batch-execution>";
+ template.requestBody("direct:exec", inXml, String.class);
+
+ inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <get-object out-identifier='outStilton' fact-handle='" + factHandle.toExternalForm() + "' />";
+ inXml += "</batch-execution>";
+
+ outXml = template.requestBody("direct:exec", inXml, String.class);
+ result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+ assertNull( result.getValue( "outStilton" ) );
+ }
+
+ public void testModifyObject() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert out-identifier='outStilton'>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+ ExecutionResults result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+ Cheese stilton = (Cheese) result.getValue( "outStilton" );
+ assertEquals( 30,
+ stilton.getPrice() );
+
+ FactHandle factHandle = ((FactHandle) result.getFactHandle( "outStilton" ));
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n";
+ expectedXml += " <result identifier=\"outStilton\">\n";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " <price>30</price>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " </result>\n";
+ expectedXml += " <fact-handle identifier=\"outStilton\" external-form=\"" + factHandle.toExternalForm() + "\" /> \n";
+ expectedXml += "</execution-results>\n";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+
+ inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <modify fact-handle='" + factHandle.toExternalForm() + "'> <set accessor='oldPrice' value='\"42\"' /><set accessor='price' value='50' /></modify>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
+ template.requestBody("direct:exec", inXml, String.class);
+
+
+ inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <get-object out-identifier='outCheddar' fact-handle='" + factHandle.toExternalForm() + "' />";
+ inXml += "</batch-execution>";
+ setExec( ksession );
+
+ outXml = template.requestBody("direct:exec", inXml, String.class);
+ result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+
+ Cheese cheddar = (Cheese) result.getValue( "outCheddar" );
+ assertEquals( 42,
+ cheddar.getOldPrice() );
+ assertEquals( 55,
+ cheddar.getPrice() );
+
+ //now test for code injection:
+ ModifyCommand.ALLOW_MODIFY_EXPRESSIONS = false;
+ inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <modify fact-handle='" + factHandle.toExternalForm() + "'> <set accessor='type' value='44\"; System.exit(1);' /><set accessor='price' value='50' /></modify>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
+
+ outXml = template.requestBody("direct:exec", inXml, String.class);
+ result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+
+ result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+ ModifyCommand.ALLOW_MODIFY_EXPRESSIONS = true;
+
+ }
+
+ public void testInsertElements() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+ str += " list.add( $c );";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <set-global identifier='list' out='true' return-objects='true'>";
+ inXml += " <list/>";
+ inXml += " </set-global>";
+ inXml += " <insert-elements>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>30</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert-elements>";
+ inXml += "</batch-execution>";
+
+ StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n";
+ expectedXml += " <result identifier='list'>\n";
+ expectedXml += " <list>\n";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <price>35</price>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <price>30</price>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " </list>\n";
+ expectedXml += " </result>\n";
+ expectedXml += "</execution-results>\n";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+
+ ExecutionResults result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+
+ List list = (List) result.getValue( "list" );
+ Cheese stilton25 = new Cheese( "stilton",
+ 30 );
+ Cheese stilton30 = new Cheese( "stilton",
+ 35 );
+
+ Set expectedList = new HashSet();
+ expectedList.add( stilton25 );
+ expectedList.add( stilton30 );
+
+ assertEquals( expectedList,
+ new HashSet( list ) );
+ }
+
+ public void testFactHandleReturn() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " System.err.println(42); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <get-global identifier='list' out-identifier='out-list'/>";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ FactHandle fh = ksession.insert( new Person( "mic",
+ 42 ) );
+ List<FactHandle> list = new ArrayList<FactHandle>();
+ list.add( fh );
+
+ ksession.setGlobal( "list",
+ list );
+
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ System.err.println( outXml );
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n" + " <result identifier=\"out-list\">\n" + " <list>\n" + " <fact-handle external-form=\"" + fh.toExternalForm() + "\"/>\n" + " </list>\n" + " </result>\n" + "</execution-results>";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+
+ }
+//
+// public void testInsertElementsWithReturnObjects() throws Exception {
+// String str = "";
+// str += "package org.drools \n";
+// str += "import org.drools.Cheese \n";
+// str += "global java.util.List list \n";
+// str += "rule rule1 \n";
+// str += " when \n";
+// str += " $c : Cheese() \n";
+// str += " \n";
+// str += " then \n";
+// str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+// str += " list.add( $c );";
+// str += "end\n";
+//
+// String inXml = "";
+// inXml += "<batch-execution>";
+// inXml += " <set-global identifier='list' out='true' >";
+// inXml += " <list/>";
+// inXml += " </set-global>";
+// inXml += " <insert-elements out-identifier='myfacts' return-objects='true'>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>25</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>30</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " </insert-elements>";
+// inXml += " <fire-all-rules/>";
+// inXml += "</batch-execution>";
+//
+// StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+// getPipelineStateful( ksession ).insert( inXml,
+// resultHandler );
+// String outXml = (String) resultHandler.getObject();
+//
+// Collection< ? extends FactHandle> factHandles = ksession.getFactHandles();
+//
+// String expectedXml = "";
+// expectedXml += "<execution-results>\n";
+// expectedXml += " <result identifier='list'>\n";
+// expectedXml += " <list>\n";
+// expectedXml += " <org.drools.Cheese>\n";
+// expectedXml += " <type>stilton</type>\n";
+// expectedXml += " <price>35</price>\n";
+// expectedXml += " <oldPrice>0</oldPrice>\n";
+// expectedXml += " </org.drools.Cheese>\n";
+// expectedXml += " <org.drools.Cheese>\n";
+// expectedXml += " <type>stilton</type>\n";
+// expectedXml += " <price>30</price>\n";
+// expectedXml += " <oldPrice>0</oldPrice>\n";
+// expectedXml += " </org.drools.Cheese>\n";
+// expectedXml += " </list>\n";
+// expectedXml += " </result>\n";
+//
+// expectedXml += " <result identifier=\"myfacts\">\n";
+// expectedXml += " <list>\n";
+// expectedXml += " <org.drools.Cheese reference=\"../../../result/list/org.drools.Cheese[2]\"/>\n";
+// expectedXml += " <org.drools.Cheese reference=\"../../../result/list/org.drools.Cheese\"/>\n";
+// expectedXml += " </list>\n";
+// expectedXml += " </result>\n";
+// expectedXml += " <fact-handles identifier=\"myfacts\">\n";
+// for ( FactHandle factHandle : factHandles ) {
+// if ( ((Cheese) ksession.getObject( factHandle )).getPrice() == 30 ) {
+// expectedXml += " <fact-handle external-form=\"" + factHandle.toExternalForm() + "\"/>\n";
+// }
+// }
+//
+// for ( FactHandle factHandle : factHandles ) {
+// if ( ((Cheese) ksession.getObject( factHandle )).getPrice() == 35 ) {
+// expectedXml += " <fact-handle external-form=\"" + factHandle.toExternalForm() + "\"/>\n";
+// }
+// }
+// expectedXml += " </fact-handles>\n";
+//
+// expectedXml += "</execution-results>\n";
+//
+// assertXMLEqual( expectedXml,
+// outXml );
+//
+// ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+//
+// List list = (List) result.getValue( "list" );
+// Cheese stilton25 = new Cheese( "stilton",
+// 30 );
+// Cheese stilton30 = new Cheese( "stilton",
+// 35 );
+//
+// Set expectedList = new HashSet();
+// expectedList.add( stilton25 );
+// expectedList.add( stilton30 );
+//
+// assertEquals( expectedList,
+// new HashSet( list ) );
+// }
+//
+// public void testSetGlobal() throws Exception {
+// String str = "";
+// str += "package org.drools \n";
+// str += "import org.drools.Cheese \n";
+// str += "global java.util.List list1 \n";
+// str += "global java.util.List list2 \n";
+// str += "global java.util.List list3 \n";
+// str += "rule rule1 \n";
+// str += " when \n";
+// str += " $c : Cheese() \n";
+// str += " \n";
+// str += " then \n";
+// str += " $c.setPrice( 30 ); \n";
+// str += " list1.add( $c ); \n";
+// str += " list2.add( $c ); \n";
+// str += " list3.add( $c ); \n";
+// str += "end\n";
+//
+// String inXml = "";
+// inXml += "<batch-execution>";
+// inXml += " <set-global identifier='list1'>";
+// inXml += " <list/>";
+// inXml += " </set-global>";
+// inXml += " <set-global identifier='list2' out='true'>";
+// inXml += " <list/>";
+// inXml += " </set-global>";
+// inXml += " <set-global identifier='list3' out-identifier='outList3'>";
+// inXml += " <list/>";
+// inXml += " </set-global>";
+// inXml += " <insert>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>5</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " </insert>";
+// inXml += "</batch-execution>";
+//
+// StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+// getPipeline( ksession ).insert( inXml,
+// resultHandler );
+//
+// String outXml = (String) resultHandler.getObject();
+//
+// String expectedXml = "";
+// expectedXml += "<execution-results>\n";
+// expectedXml += " <result identifier='list2'>\n";
+// expectedXml += " <list>\n";
+// expectedXml += " <org.drools.Cheese>\n";
+// expectedXml += " <type>stilton</type>\n";
+// expectedXml += " <price>30</price>\n";
+// expectedXml += " <oldPrice>0</oldPrice>\n";
+// expectedXml += " </org.drools.Cheese>\n";
+// expectedXml += " </list>\n";
+// expectedXml += " </result>\n";
+// expectedXml += " <result identifier='outList3'>\n";
+// expectedXml += " <list>\n";
+// expectedXml += " <org.drools.Cheese reference='../../../result/list/org.drools.Cheese'/>\n";
+// expectedXml += " </list>\n";
+// expectedXml += " </result>\n";
+// expectedXml += "</execution-results>\n";
+//
+// assertXMLEqual( expectedXml,
+// outXml );
+//
+// ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+// Cheese stilton = new Cheese( "stilton",
+// 30 );
+//
+// assertNull( result.getValue( "list1" ) );
+//
+// List list2 = (List) result.getValue( "list2" );
+// assertEquals( 1,
+// list2.size() );
+// assertEquals( stilton,
+// list2.get( 0 ) );
+//
+// List list3 = (List) result.getValue( "outList3" );
+// assertEquals( 1,
+// list3.size() );
+// assertEquals( stilton,
+// list3.get( 0 ) );
+// }
+//
+// public void testGetGlobal() throws Exception {
+// String str = "";
+// str += "package org.drools \n";
+// str += "import org.drools.Cheese \n";
+// str += "global java.util.List list \n";
+// str += "rule rule1 \n";
+// str += " when \n";
+// str += " $c : Cheese() \n";
+// str += " \n";
+// str += " then \n";
+// str += " list.add( $c ); \n";
+// str += "end\n";
+//
+// String inXml = "";
+// inXml += "<batch-execution>";
+// inXml += " <set-global identifier='list'>";
+// inXml += " <list/>";
+// inXml += " </set-global>";
+// inXml += " <insert>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>25</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " </insert>";
+// inXml += " <get-global identifier='list' out-identifier='out-list'/>";
+// inXml += "</batch-execution>";
+//
+// StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+// getPipeline( ksession ).insert( inXml,
+// resultHandler );
+// String outXml = (String) resultHandler.getObject();
+//
+// String expectedXml = "";
+// expectedXml += "<execution-results>\n";
+// expectedXml += " <result identifier=\"out-list\">\n";
+// expectedXml += " <list>\n";
+// expectedXml += " <org.drools.Cheese>\n";
+// expectedXml += " <type>stilton</type>\n";
+// expectedXml += " <price>25</price>\n";
+// expectedXml += " <oldPrice>0</oldPrice>\n";
+// expectedXml += " </org.drools.Cheese>\n";
+// expectedXml += " </list>\n";
+// expectedXml += " </result>\n";
+// expectedXml += "</execution-results>\n";
+//
+// assertXMLEqual( expectedXml,
+// outXml );
+// }
+//
+// public void testGetObjects() throws Exception {
+// String str = "";
+// str += "package org.drools \n";
+// str += "import org.drools.Cheese \n";
+// str += "rule rule1 \n";
+// str += " when \n";
+// str += " $c : Cheese() \n";
+// str += " \n";
+// str += " then \n";
+// str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+// str += "end\n";
+//
+// String inXml = "";
+// inXml += "<batch-execution>";
+// inXml += " <insert-elements>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>25</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>30</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " </insert-elements>";
+// inXml += " <get-objects out-identifier='list' />";
+// inXml += "</batch-execution>";
+//
+// StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+// getPipeline( ksession ).insert( inXml,
+// resultHandler );
+// String outXml = (String) resultHandler.getObject();
+//
+// String expectedXml = "";
+// expectedXml += "<execution-results>";
+// expectedXml += " <result identifier='list'>";
+// expectedXml += " <list>";
+// expectedXml += " <org.drools.Cheese>";
+// expectedXml += " <type>stilton</type>";
+// expectedXml += " <price>30</price>";
+// expectedXml += " <oldPrice>0</oldPrice>";
+// expectedXml += " </org.drools.Cheese>";
+// expectedXml += " <org.drools.Cheese>";
+// expectedXml += " <type>stilton</type>";
+// expectedXml += " <price>35</price>";
+// expectedXml += " <oldPrice>0</oldPrice>";
+// expectedXml += " </org.drools.Cheese>";
+// expectedXml += " </list>";
+// expectedXml += " </result>";
+// expectedXml += "</execution-results>";
+//
+// assertXMLEqual( expectedXml,
+// outXml );
+//
+// ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+// List list = (List) result.getValue( "list" );
+// Cheese stilton25 = new Cheese( "stilton",
+// 30 );
+// Cheese stilton30 = new Cheese( "stilton",
+// 35 );
+//
+// Set expectedList = new HashSet();
+// expectedList.add( stilton25 );
+// expectedList.add( stilton30 );
+//
+// assertEquals( expectedList,
+// new HashSet( list ) );
+// }
+//
+// public void testQuery() throws Exception {
+// String str = "";
+// str += "package org.drools.test \n";
+// str += "import org.drools.Cheese \n";
+// str += "query cheeses \n";
+// str += " stilton : Cheese(type == 'stilton') \n";
+// str += " cheddar : Cheese(type == 'cheddar', price == stilton.price) \n";
+// str += "end\n";
+// str += "query cheesesWithParams(String a, String b) \n";
+// str += " stilton : Cheese(type == a) \n";
+// str += " cheddar : Cheese(type == b, price == stilton.price) \n";
+// str += "end\n";
+//
+// String inXml = "";
+// inXml += "<batch-execution>";
+// inXml += " <insert>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>1</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " </insert>";
+// inXml += " <insert>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>2</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " </insert>";
+// inXml += " <insert>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>cheddar</type>";
+// inXml += " <price>1</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " </insert>";
+// inXml += " <insert>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>cheddar</type>";
+// inXml += " <price>2</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " </insert>";
+// inXml += " <query out-identifier='cheeses' name='cheeses'/>";
+// inXml += " <query out-identifier='cheeses2' name='cheesesWithParams'>";
+// inXml += " <string>stilton</string>";
+// inXml += " <string>cheddar</string>";
+// inXml += " </query>";
+// inXml += "</batch-execution>";
+//
+// StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+// getPipelineStateful( ksession ).insert( inXml,
+// resultHandler );
+// String outXml = (String) resultHandler.getObject();
+//
+// Iterator<QueryResultsRow> it1 = ksession.getQueryResults( "cheeses" ).iterator();
+// Iterator<QueryResultsRow> it2 = ksession.getQueryResults( "cheesesWithParams",
+// new String[]{"stilton", "cheddar"} ).iterator();
+// QueryResultsRow row = null;
+//
+// String expectedXml = "";
+// expectedXml += "<execution-results>\n";
+// expectedXml += " <result identifier='cheeses'>\n";
+// expectedXml += " <query-results>\n";
+// expectedXml += " <identifiers>\n";
+// expectedXml += " <identifier>stilton</identifier>\n";
+// expectedXml += " <identifier>cheddar</identifier>\n";
+// expectedXml += " </identifiers>\n";
+// expectedXml += " <row>\n";
+// row = it1.next();
+// expectedXml += " <org.drools.Cheese>\n";
+// expectedXml += " <type>stilton</type>\n";
+// expectedXml += " <price>1</price>\n";
+// expectedXml += " <oldPrice>0</oldPrice>\n";
+// expectedXml += " </org.drools.Cheese>\n";
+// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />";
+// expectedXml += " <org.drools.Cheese>\n";
+// expectedXml += " <type>cheddar</type>\n";
+// expectedXml += " <price>1</price>\n";
+// expectedXml += " <oldPrice>0</oldPrice>\n";
+// expectedXml += " </org.drools.Cheese>\n";
+// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "cheddar" ).toExternalForm() + "' />";
+// expectedXml += " </row>\n";
+// expectedXml += " <row>\n";
+// row = it1.next();
+// expectedXml += " <org.drools.Cheese>\n";
+// expectedXml += " <type>stilton</type>\n";
+// expectedXml += " <price>2</price>\n";
+// expectedXml += " <oldPrice>0</oldPrice>\n";
+// expectedXml += " </org.drools.Cheese>\n";
+// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />";
+// expectedXml += " <org.drools.Cheese>\n";
+// expectedXml += " <type>cheddar</type>\n";
+// expectedXml += " <price>2</price>\n";
+// expectedXml += " <oldPrice>0</oldPrice>\n";
+// expectedXml += " </org.drools.Cheese>\n";
+// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "cheddar" ).toExternalForm() + "' />";
+// expectedXml += " </row>\n";
+// expectedXml += " </query-results>\n";
+// expectedXml += " </result>\n";
+// expectedXml += " <result identifier='cheeses2'>\n";
+// expectedXml += " <query-results>\n";
+// expectedXml += " <identifiers>\n";
+// expectedXml += " <identifier>stilton</identifier>\n";
+// expectedXml += " <identifier>cheddar</identifier>\n";
+// expectedXml += " </identifiers>\n";
+// expectedXml += " <row>\n";
+// row = it2.next();
+// expectedXml += " <org.drools.Cheese reference=\"../../../../result/query-results/row/org.drools.Cheese\"/>\n";
+// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />";
+// expectedXml += " <org.drools.Cheese reference=\"../../../../result/query-results/row/org.drools.Cheese[2]\"/>\n";
+// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "cheddar" ).toExternalForm() + "' />";
+// expectedXml += " </row>\n";
+// expectedXml += " <row>\n";
+// row = it2.next();
+// expectedXml += " <org.drools.Cheese reference=\"../../../../result/query-results/row[2]/org.drools.Cheese\"/>\n";
+// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />";
+// expectedXml += " <org.drools.Cheese reference=\"../../../../result/query-results/row[2]/org.drools.Cheese[2]\"/>\n";
+// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "cheddar" ).toExternalForm() + "' />";
+// expectedXml += " </row>\n";
+// expectedXml += " </query-results>\n";
+// expectedXml += " </result>\n";
+// expectedXml += "</execution-results>\n";
+//
+// assertXMLEqual( expectedXml,
+// outXml );
+//
+// ExecutionResults batchResult = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+//
+// Cheese stilton1 = new Cheese( "stilton",
+// 1 );
+// Cheese cheddar1 = new Cheese( "cheddar",
+// 1 );
+// Cheese stilton2 = new Cheese( "stilton",
+// 2 );
+// Cheese cheddar2 = new Cheese( "cheddar",
+// 2 );
+//
+// Set set = new HashSet();
+// List list = new ArrayList();
+// list.add( stilton1 );
+// list.add( cheddar1 );
+// set.add( list );
+//
+// list = new ArrayList();
+// list.add( stilton2 );
+// list.add( cheddar2 );
+// set.add( list );
+//
+// org.drools.runtime.rule.QueryResults results = (org.drools.runtime.rule.QueryResults) batchResult.getValue( "cheeses" );
+// assertEquals( 2,
+// results.size() );
+// assertEquals( 2,
+// results.getIdentifiers().length );
+// Set newSet = new HashSet();
+// for ( org.drools.runtime.rule.QueryResultsRow result : results ) {
+// list = new ArrayList();
+// list.add( result.get( "stilton" ) );
+// list.add( result.get( "cheddar" ) );
+// newSet.add( list );
+// }
+// assertEquals( set,
+// newSet );
+// }
+//
+// public void testManualFireAllRules() throws Exception {
+// String str = "";
+// str += "package org.drools \n";
+// str += "import org.drools.Cheese \n";
+// str += "global java.util.List list \n";
+// str += "rule rule1 \n";
+// str += " when \n";
+// str += " $c : Cheese() \n";
+// str += " \n";
+// str += " then \n";
+// str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+// str += " list.add( $c );";
+// str += "end\n";
+//
+// String inXml = "";
+// inXml += "<batch-execution>";
+// inXml += " <set-global identifier='list' out='true'>";
+// inXml += " <list/>";
+// inXml += " </set-global>";
+// inXml += " <insert-elements>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>25</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>30</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " </insert-elements>";
+// inXml += " <fire-all-rules />";
+// inXml += " <insert out-identifier='outBrie'>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>brie</type>";
+// inXml += " <price>10</price>";
+// inXml += " <oldPrice>5</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " </insert>";
+// inXml += "</batch-execution>";
+//
+// StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+// getPipeline( ksession ).insert( inXml,
+// resultHandler );
+// String outXml = (String) resultHandler.getObject();
+//
+// FactHandle factHandle = (FactHandle) ((ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml )).getFactHandle( "outBrie" );
+//
+// String expectedXml = "";
+// expectedXml += "<execution-results>\n";
+// expectedXml += " <result identifier='list'>\n";
+// expectedXml += " <list>\n";
+// expectedXml += " <org.drools.Cheese>\n";
+// expectedXml += " <type>stilton</type>\n";
+// expectedXml += " <price>35</price>\n";
+// expectedXml += " <oldPrice>0</oldPrice>\n";
+// expectedXml += " </org.drools.Cheese>\n";
+// expectedXml += " <org.drools.Cheese>\n";
+// expectedXml += " <type>stilton</type>\n";
+// expectedXml += " <price>30</price>\n";
+// expectedXml += " <oldPrice>0</oldPrice>\n";
+// expectedXml += " </org.drools.Cheese>\n";
+// expectedXml += " </list>\n";
+// expectedXml += " </result>\n";
+// expectedXml += " <result identifier='outBrie'>\n";
+// expectedXml += " <org.drools.Cheese>\n";
+// expectedXml += " <type>brie</type>\n";
+// expectedXml += " <price>10</price>\n";
+// expectedXml += " <oldPrice>5</oldPrice>\n";
+// expectedXml += " </org.drools.Cheese>\n";
+// expectedXml += " </result>\n";
+// expectedXml += " <fact-handle identifier=\"outBrie\" external-form=\"" + factHandle.toExternalForm() + "\" /> \n";
+// expectedXml += "</execution-results>\n";
+// assertXMLEqual( expectedXml,
+// outXml );
+//
+// ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+//
+// // brie should not have been added to the list
+// List list = (List) result.getValue( "list" );
+// Cheese stilton25 = new Cheese( "stilton",
+// 30 );
+// Cheese stilton30 = new Cheese( "stilton",
+// 35 );
+//
+// Set expectedList = new HashSet();
+// expectedList.add( stilton25 );
+// expectedList.add( stilton30 );
+//
+// assertEquals( expectedList,
+// new HashSet( list ) );
+//
+// // brie should not have changed
+// Cheese brie10 = new Cheese( "brie",
+// 10 );
+// brie10.setOldPrice( 5 );
+// assertEquals( brie10,
+// result.getValue( "outBrie" ) );
+// }
+//
+// public void testProcess() throws SAXException,
+// IOException {
+// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+//
+// String str = "";
+// str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+// str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+// str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+// str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+// str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
+// str += "\n";
+// str += " <header>\n";
+// str += " <imports>\n";
+// str += " <import name=\"org.drools.TestVariable\" />\n";
+// str += " </imports>\n";
+// str += " <globals>\n";
+// str += " <global identifier=\"list\" type=\"java.util.List\" />\n";
+// str += " </globals>\n";
+// str += " <variables>\n";
+// str += " <variable name=\"person\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"TestVariable\" />\n";
+// str += " </variable>\n";
+// str += " </variables>\n";
+// str += " </header>\n";
+// str += "\n";
+// str += " <nodes>\n";
+// str += " <start id=\"1\" name=\"Start\" />\n";
+// str += " <actionNode id=\"2\" name=\"MyActionNode\" >\n";
+// str += " <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n";
+// str += "list.add(person.name);\n";
+// str += "</action>\n";
+// str += " </actionNode>\n";
+// str += " <end id=\"3\" name=\"End\" />\n";
+// str += " </nodes>\n";
+// str += "\n";
+// str += " <connections>\n";
+// str += " <connection from=\"1\" to=\"2\" />\n";
+// str += " <connection from=\"2\" to=\"3\" />\n";
+// str += " </connections>\n" + "\n";
+// str += "</process>";
+//
+// Reader source = new StringReader( str );
+// kbuilder.add( ResourceFactory.newReaderResource( source ),
+// ResourceType.DRF );
+// if ( kbuilder.hasErrors() ) {
+// fail( kbuilder.getErrors().toString() );
+// }
+//
+// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+//
+// StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+// List<String> list = new ArrayList<String>();
+// ksession.setGlobal( "list",
+// list );
+// TestVariable person = new TestVariable( "John Doe" );
+//
+// String inXml = "";
+// inXml += "<batch-execution>";
+// inXml += " <start-process processId='org.drools.actions'>";
+// inXml += " <parameter identifier='person'>";
+// inXml += " <org.drools.TestVariable>";
+// inXml += " <name>John Doe</name>";
+// inXml += " </org.drools.TestVariable>";
+// inXml += " </parameter>";
+// inXml += " </start-process>";
+// inXml += " <get-global identifier='list' out-identifier='out-list'/>";
+// inXml += "</batch-execution>";
+//
+// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+// getPipeline( ksession ).insert( inXml,
+// resultHandler );
+// String outXml = (String) resultHandler.getObject();
+//
+// assertEquals( 1,
+// list.size() );
+// assertEquals( "John Doe",
+// list.get( 0 ) );
+//
+// String expectedXml = "";
+// expectedXml += "<execution-results>\n";
+// expectedXml += " <result identifier=\"out-list\">\n";
+// expectedXml += " <list>\n";
+// expectedXml += " <string>John Doe</string>\n";
+// expectedXml += " </list>\n";
+// expectedXml += " </result>\n";
+// expectedXml += "</execution-results>\n";
+//
+// assertXMLEqual( expectedXml,
+// outXml );
+// }
+//
+// public void testProcessInstanceSignalEvent() throws Exception {
+// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+// String str = "";
+// str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+// str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+// str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+// str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+// str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.event\" package-name=\"org.drools\" version=\"1\" >\n";
+// str += "\n";
+// str += " <header>\n";
+// str += " <variables>\n";
+// str += " <variable name=\"MyVar\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " <value>SomeText</value>\n";
+// str += " </variable>\n";
+// str += " </variables>\n";
+// str += " </header>\n";
+// str += "\n";
+// str += " <nodes>\n";
+// str += " <start id=\"1\" name=\"Start\" />\n";
+// str += " <eventNode id=\"2\" name=\"Event\" variableName=\"MyVar\" >\n";
+// str += " <eventFilters>\n";
+// str += " <eventFilter type=\"eventType\" eventType=\"MyEvent\" />\n";
+// str += " </eventFilters>\n";
+// str += " </eventNode>\n";
+// str += " <join id=\"3\" name=\"Join\" type=\"1\" />\n";
+// str += " <end id=\"4\" name=\"End\" />\n";
+// str += " </nodes>\n";
+// str += "\n";
+// str += " <connections>\n";
+// str += " <connection from=\"1\" to=\"3\" />\n";
+// str += " <connection from=\"2\" to=\"3\" />\n";
+// str += " <connection from=\"3\" to=\"4\" />\n";
+// str += " </connections>\n";
+// str += "\n";
+// str += "</process>";
+//
+// kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+// ResourceType.DRF );
+//
+// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+//
+// StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+//
+// ProcessInstance processInstance = ksession.startProcess( "org.drools.event" );
+// assertEquals( ProcessInstance.STATE_ACTIVE,
+// processInstance.getState() );
+//
+// String inXml = "";
+// inXml += "<signal-event process-instance-id= '" + processInstance.getId() + "' event-type='MyEvent'>";
+// inXml += " <string>MyValue</string>";
+// inXml += "</signal-event>";
+//
+// getPipelineStateful( ksession ).insert( inXml,
+// new ResultHandlerImpl() );
+//
+// assertEquals( ProcessInstance.STATE_COMPLETED,
+// processInstance.getState() );
+// assertEquals( "MyValue",
+// ((VariableScopeInstance) ((org.drools.process.instance.ProcessInstance) processInstance).getContextInstance( VariableScope.VARIABLE_SCOPE )).getVariable( "MyVar" ) );
+// }
+//
+// public void testProcessRuntimeSignalEvent() throws Exception {
+// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+// String str = "";
+// str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+// str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+// str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+// str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+// str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.event\" package-name=\"org.drools\" version=\"1\" >\n";
+// str += "\n";
+// str += " <header>\n";
+// str += " <variables>\n";
+// str += " <variable name=\"MyVar\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " <value>SomeText</value>\n";
+// str += " </variable>\n";
+// str += " </variables>\n";
+// str += " </header>\n";
+// str += "\n";
+// str += " <nodes>\n";
+// str += " <start id=\"1\" name=\"Start\" />\n";
+// str += " <eventNode id=\"2\" name=\"Event\" scope=\"external\" variableName=\"MyVar\" >\n";
+// str += " <eventFilters>\n";
+// str += " <eventFilter type=\"eventType\" eventType=\"MyEvent\" />\n";
+// str += " </eventFilters>\n";
+// str += " </eventNode>\n";
+// str += " <join id=\"3\" name=\"Join\" type=\"1\" />\n";
+// str += " <end id=\"4\" name=\"End\" />\n";
+// str += " </nodes>\n";
+// str += "\n";
+// str += " <connections>\n";
+// str += " <connection from=\"1\" to=\"3\" />\n";
+// str += " <connection from=\"2\" to=\"3\" />\n";
+// str += " <connection from=\"3\" to=\"4\" />\n";
+// str += " </connections>\n";
+// str += "\n";
+// str += "</process>";
+//
+// kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+// ResourceType.DRF );
+//
+// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+//
+// StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+//
+// ProcessInstance processInstance = ksession.startProcess( "org.drools.event" );
+// assertEquals( ProcessInstance.STATE_ACTIVE,
+// processInstance.getState() );
+//
+// String inXml = "";
+// inXml += "<signal-event event-type='MyEvent'>";
+// inXml += " <string>MyValue</string>";
+// inXml += "</signal-event>";
+//
+// getPipelineStateful( ksession ).insert( inXml,
+// new ResultHandlerImpl() );
+//
+// assertEquals( ProcessInstance.STATE_COMPLETED,
+// processInstance.getState() );
+// assertEquals( "MyValue",
+// ((VariableScopeInstance) ((org.drools.process.instance.ProcessInstance) processInstance).getContextInstance( VariableScope.VARIABLE_SCOPE )).getVariable( "MyVar" ) );
+// }
+//
+// public void testCompleteWorkItem() {
+// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+//
+// String str = "";
+// str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+// str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+// str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+// str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+// str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
+// str += "\n";
+// str += " <header>\n";
+// str += " <variables>\n";
+// str += " <variable name=\"UserName\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " <value>John Doe</value>\n";
+// str += " </variable>\n";
+// str += " <variable name=\"Person\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"org.drools.Person\" />\n";
+// str += " </variable>\n";
+// str += " <variable name=\"MyObject\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
+// str += " </variable>\n";
+// str += " <variable name=\"Number\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.IntegerDataType\" />\n";
+// str += " </variable>\n";
+// str += " </variables>\n";
+// str += " </header>\n";
+// str += "\n";
+// str += " <nodes>\n";
+// str += " <start id=\"1\" name=\"Start\" />\n";
+// str += " <workItem id=\"2\" name=\"HumanTask\" >\n";
+// str += " <work name=\"Human Task\" >\n";
+// str += " <parameter name=\"ActorId\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " <value>#{UserName}</value>\n";
+// str += " </parameter>\n";
+// str += " <parameter name=\"Content\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " <value>#{Person.name}</value>\n";
+// str += " </parameter>\n";
+// str += " <parameter name=\"TaskName\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " <value>Do something</value>\n";
+// str += " </parameter>\n";
+// str += " <parameter name=\"Priority\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " </parameter>\n";
+// str += " <parameter name=\"Comment\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " </parameter>\n";
+// str += " <parameter name=\"Attachment\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
+// str += " </parameter>\n";
+// str += " </work>\n";
+// str += " <mapping type=\"in\" from=\"MyObject\" to=\"Attachment\" />";
+// str += " <mapping type=\"in\" from=\"Person.name\" to=\"Comment\" />";
+// str += " <mapping type=\"out\" from=\"Result\" to=\"MyObject\" />";
+// str += " <mapping type=\"out\" from=\"Result.length()\" to=\"Number\" />";
+// str += " </workItem>\n";
+// str += " <end id=\"3\" name=\"End\" />\n";
+// str += " </nodes>\n";
+// str += "\n";
+// str += " <connections>\n";
+// str += " <connection from=\"1\" to=\"2\" />\n";
+// str += " <connection from=\"2\" to=\"3\" />\n";
+// str += " </connections>\n";
+// str += "\n";
+// str += "</process>";
+//
+// Reader source = new StringReader( str );
+// kbuilder.add( ResourceFactory.newReaderResource( source ),
+// ResourceType.DRF );
+//
+// Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
+// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+// kbase.addKnowledgePackages( kpkgs );
+// StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+//
+// TestWorkItemHandler handler = new TestWorkItemHandler();
+// ksession.getWorkItemManager().registerWorkItemHandler( "Human Task",
+// handler );
+// Map<String, Object> parameters = new HashMap<String, Object>();
+// parameters.put( "UserName",
+// "John Doe" );
+// Person person = new Person();
+// person.setName( "John Doe" );
+// parameters.put( "Person",
+// person );
+// WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess( "org.drools.actions",
+// parameters );
+// assertEquals( ProcessInstance.STATE_ACTIVE,
+// processInstance.getState() );
+// WorkItem workItem = handler.getWorkItem();
+// assertNotNull( workItem );
+// assertEquals( "John Doe",
+// workItem.getParameter( "ActorId" ) );
+// assertEquals( "John Doe",
+// workItem.getParameter( "Content" ) );
+// assertEquals( "John Doe",
+// workItem.getParameter( "Comment" ) );
+//
+// assertEquals( WorkItem.PENDING,
+// workItem.getState() );
+//
+// String inXml = "";
+// inXml = "<complete-work-item id='" + workItem.getId() + "' />";
+// getPipelineStateful( ksession ).insert( inXml,
+// new ResultHandlerImpl() );
+//
+// assertEquals( WorkItem.COMPLETED,
+// workItem.getState() );
+//
+// assertEquals( ProcessInstance.STATE_COMPLETED,
+// processInstance.getState() );
+//
+// parameters = new HashMap<String, Object>();
+// parameters.put( "UserName",
+// "Jane Doe" );
+// parameters.put( "MyObject",
+// "SomeString" );
+// person = new Person();
+// person.setName( "Jane Doe" );
+// parameters.put( "Person",
+// person );
+// processInstance = (WorkflowProcessInstance) ksession.startProcess( "org.drools.actions",
+// parameters );
+// assertEquals( ProcessInstance.STATE_ACTIVE,
+// processInstance.getState() );
+// workItem = handler.getWorkItem();
+// assertNotNull( workItem );
+// assertEquals( "Jane Doe",
+// workItem.getParameter( "ActorId" ) );
+// assertEquals( "SomeString",
+// workItem.getParameter( "Attachment" ) );
+// assertEquals( "Jane Doe",
+// workItem.getParameter( "Content" ) );
+// assertEquals( "Jane Doe",
+// workItem.getParameter( "Comment" ) );
+//
+// assertEquals( WorkItem.PENDING,
+// workItem.getState() );
+//
+// inXml = "";
+// inXml += "<complete-work-item id='" + workItem.getId() + "' >";
+// inXml += " <result identifier='Result'>";
+// inXml += " <string>SomeOtherString</string>";
+// inXml += " </result>";
+// inXml += "</complete-work-item>";
+// getPipelineStateful( ksession ).insert( inXml,
+// new ResultHandlerImpl() );
+//
+// assertEquals( WorkItem.COMPLETED,
+// workItem.getState() );
+//
+// assertEquals( ProcessInstance.STATE_COMPLETED,
+// processInstance.getState() );
+// assertEquals( "SomeOtherString",
+// processInstance.getVariable( "MyObject" ) );
+// assertEquals( 15,
+// processInstance.getVariable( "Number" ) );
+// }
+//
+// public void testAbortWorkItem() {
+// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+//
+// String str = "";
+// str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+// str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+// str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+// str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+// str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
+// str += "\n";
+// str += " <header>\n";
+// str += " <variables>\n";
+// str += " <variable name=\"UserName\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " <value>John Doe</value>\n";
+// str += " </variable>\n";
+// str += " <variable name=\"Person\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"org.drools.Person\" />\n";
+// str += " </variable>\n";
+// str += " <variable name=\"MyObject\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
+// str += " </variable>\n";
+// str += " <variable name=\"Number\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.IntegerDataType\" />\n";
+// str += " </variable>\n";
+// str += " </variables>\n";
+// str += " </header>\n";
+// str += "\n";
+// str += " <nodes>\n";
+// str += " <start id=\"1\" name=\"Start\" />\n";
+// str += " <workItem id=\"2\" name=\"HumanTask\" >\n";
+// str += " <work name=\"Human Task\" >\n";
+// str += " <parameter name=\"ActorId\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " <value>#{UserName}</value>\n";
+// str += " </parameter>\n";
+// str += " <parameter name=\"Content\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " <value>#{Person.name}</value>\n";
+// str += " </parameter>\n";
+// str += " <parameter name=\"TaskName\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " <value>Do something</value>\n";
+// str += " </parameter>\n";
+// str += " <parameter name=\"Priority\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " </parameter>\n";
+// str += " <parameter name=\"Comment\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+// str += " </parameter>\n";
+// str += " <parameter name=\"Attachment\" >\n";
+// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
+// str += " </parameter>\n";
+// str += " </work>\n";
+// str += " <mapping type=\"in\" from=\"MyObject\" to=\"Attachment\" />";
+// str += " <mapping type=\"in\" from=\"Person.name\" to=\"Comment\" />";
+// str += " <mapping type=\"out\" from=\"Result\" to=\"MyObject\" />";
+// str += " <mapping type=\"out\" from=\"Result.length()\" to=\"Number\" />";
+// str += " </workItem>\n";
+// str += " <end id=\"3\" name=\"End\" />\n";
+// str += " </nodes>\n";
+// str += "\n";
+// str += " <connections>\n";
+// str += " <connection from=\"1\" to=\"2\" />\n";
+// str += " <connection from=\"2\" to=\"3\" />\n";
+// str += " </connections>\n";
+// str += "\n";
+// str += "</process>";
+//
+// Reader source = new StringReader( str );
+// kbuilder.add( ResourceFactory.newReaderResource( source ),
+// ResourceType.DRF );
+//
+// Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
+// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+// kbase.addKnowledgePackages( kpkgs );
+// StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+//
+// TestWorkItemHandler handler = new TestWorkItemHandler();
+// ksession.getWorkItemManager().registerWorkItemHandler( "Human Task",
+// handler );
+// Map<String, Object> parameters = new HashMap<String, Object>();
+// parameters.put( "UserName",
+// "John Doe" );
+// Person person = new Person();
+// person.setName( "John Doe" );
+// parameters.put( "Person",
+// person );
+// WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess( "org.drools.actions",
+// parameters );
+// assertEquals( ProcessInstance.STATE_ACTIVE,
+// processInstance.getState() );
+// WorkItem workItem = handler.getWorkItem();
+// assertNotNull( workItem );
+//
+// assertEquals( WorkItem.PENDING,
+// workItem.getState() );
+//
+// String inXml = "<abort-work-item id='" + workItem.getId() + "' />";
+// getPipelineStateful( ksession ).insert( inXml,
+// new ResultHandlerImpl() );
+//
+// assertEquals( WorkItem.ABORTED,
+// workItem.getState() );
+// }
+//
+// public static class TestWorkItemHandler
+// implements
+// WorkItemHandler {
+// private WorkItem workItem;
+//
+// public void executeWorkItem(WorkItem workItem,
+// WorkItemManager manager) {
+// this.workItem = workItem;
+// }
+//
+// public void abortWorkItem(WorkItem workItem,
+// WorkItemManager manager) {
+// }
+//
+// public WorkItem getWorkItem() {
+// return workItem;
+// }
+// }
+//
+// public void testInsertObjectWithDeclaredFact() throws Exception {
+// String str = "";
+// str += "package org.foo \n";
+// str += "declare Whee \n\ttype: String\n\tprice: Integer\n\toldPrice: Integer\nend\n";
+// str += "rule rule1 \n";
+// str += " when \n";
+// str += " $c : Whee() \n";
+// str += " \n";
+// str += " then \n";
+// str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+// str += "end\n";
+//
+// String inXml = "";
+// inXml += "<batch-execution>";
+// inXml += " <insert out-identifier='outStilton'>";
+// inXml += " <org.foo.Whee>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>25</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.foo.Whee>";
+// inXml += " </insert>";
+// inXml += " <fire-all-rules />";
+// inXml += "</batch-execution>";
+//
+// StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+// getPipelineStateful( ksession ).insert( inXml,
+// resultHandler );
+// String outXml = (String) resultHandler.getObject();
+//
+// ClassLoader cl = ((InternalRuleBase) ((StatefulKnowledgeSessionImpl) ksession).getRuleBase()).getRootClassLoader();
+// XStream xstream = BatchExecutionHelper.newXStreamMarshaller();
+// xstream.setClassLoader( cl );
+// FactHandle factHandle = (FactHandle) ((ExecutionResults) xstream.fromXML( outXml )).getFactHandle( "outStilton" );
+//
+// String expectedXml = "";
+// expectedXml += "<execution-results>\n";
+// expectedXml += " <result identifier=\"outStilton\">\n";
+// expectedXml += " <org.foo.Whee>\n";
+// expectedXml += " <type>stilton</type>\n";
+// expectedXml += " <oldPrice>0</oldPrice>\n";
+// expectedXml += " <price>30</price>\n";
+// expectedXml += " </org.foo.Whee>\n";
+// expectedXml += " </result>\n";
+// expectedXml += " <fact-handle identifier=\"outStilton\" external-form=\"" + factHandle.toExternalForm() + "\" /> \n";
+// expectedXml += "</execution-results>\n";
+//
+// assertXMLEqual( expectedXml,
+// outXml );
+//
+// }
+//
+// public void testInsertObjectStateful() throws Exception {
+// String str = "";
+// str += "package org.foo \n";
+// str += "declare Whee \n\ttype: String\n\tprice: Integer\n\toldPrice: Integer\nend\n";
+// str += "rule rule1 \n";
+// str += " when \n";
+// str += " $c : Whee(price < 30) \n";
+// str += " \n";
+// str += " then \n";
+// str += " $c.setPrice( $c.getPrice() + 5 ); \n update($c);\n";
+// str += "end\n";
+// str += "query results\n";
+// str += " w: Whee(price == 30)";
+// str += "end\n";
+//
+// String inXml = "";
+// inXml += "<batch-execution>";
+// inXml += " <insert>";
+// inXml += " <org.foo.Whee>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>25</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.foo.Whee>";
+// inXml += " </insert>";
+// inXml += "</batch-execution>";
+//
+// StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+// getPipelineStateful( ksession ).insert( inXml,
+// resultHandler );
+//
+// getPipelineStateful( ksession ).insert( "<batch-execution><query out-identifier='matchingthings' name='results'/></batch-execution>",
+// resultHandler );
+// String outXml = (String) resultHandler.getObject();
+//
+// //we have not fired the rules yet
+// assertFalse( outXml.indexOf( "<price>30</price>" ) > -1 );
+//
+// //lets send a command to execute them then
+// inXml = "";
+// inXml += "<batch-execution>";
+// inXml += " <fire-all-rules max='100'/>";
+// inXml += "</batch-execution>";
+// getPipelineStateful( ksession ).insert( inXml,
+// resultHandler );
+// //ksession.fireAllRules();
+//
+// //ok lets try that again...
+// getPipelineStateful( ksession ).insert( "<batch-execution><query out-identifier='matchingthings' name='results'/></batch-execution>",
+// resultHandler );
+// outXml = (String) resultHandler.getObject();
+// assertTrue( outXml.indexOf( "<price>30</price>" ) > -1 );
+// }
+//
+// public void testVsmPipeline() throws Exception {
+// String str = "";
+// str += "package org.drools \n";
+// str += "import org.drools.Cheese \n";
+// str += "rule rule1 \n";
+// str += " when \n";
+// str += " $c : Cheese() \n";
+// str += " \n";
+// str += " then \n";
+// str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+// str += "end\n";
+//
+// String inXml = "";
+// inXml += "<batch-execution lookup=\"ksession1\" >";
+// inXml += " <insert out-identifier='outStilton'>";
+// inXml += " <org.drools.Cheese>";
+// inXml += " <type>stilton</type>";
+// inXml += " <price>25</price>";
+// inXml += " <oldPrice>0</oldPrice>";
+// inXml += " </org.drools.Cheese>";
+// inXml += " </insert>";
+// inXml += " <fire-all-rules />";
+// inXml += "</batch-execution>";
+//
+// LocalConnection connection = new LocalConnection();
+// ExecutionNode node = connection.getExecutionNode(null);
+//
+// StatefulKnowledgeSession ksession = getExecutionNodeSessionStateful(node, ResourceFactory.newByteArrayResource( str.getBytes() ) );
+//
+// node.get(DirectoryLookupFactoryService.class).register("ksession1", ksession);
+//
+// XStreamResolverStrategy xstreamStrategy = new XStreamResolverStrategy() {
+// public XStream lookup(String name) {
+// return BatchExecutionHelper.newXStreamMarshaller();
+// }
+// };
+//
+// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+// getPipelineSessionStateful(node, xstreamStrategy).insert(inXml, resultHandler);
+// String outXml = (String) resultHandler.getObject();
+//
+// ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+// Cheese stilton = (Cheese) result.getValue( "outStilton" );
+// assertEquals( 30,
+// stilton.getPrice() );
+//
+// FactHandle factHandle = (FactHandle) result.getFactHandle( "outStilton" );
+// stilton = (Cheese) ksession.getObject( factHandle );
+// assertEquals( 30,
+// stilton.getPrice() );
+//
+// String expectedXml = "";
+// expectedXml += "<execution-results>\n";
+// expectedXml += " <result identifier=\"outStilton\">\n";
+// expectedXml += " <org.drools.Cheese>\n";
+// expectedXml += " <type>stilton</type>\n";
+// expectedXml += " <oldPrice>0</oldPrice>\n";
+// expectedXml += " <price>30</price>\n";
+// expectedXml += " </org.drools.Cheese>\n";
+// expectedXml += " </result>\n";
+// expectedXml += " <fact-handle identifier=\"outStilton\" external-form=\"" + ((InternalFactHandle) result.getFactHandle( "outStilton" )).toExternalForm() + "\" /> \n";
+// expectedXml += "</execution-results>\n";
+//
+// assertXMLEqual( expectedXml,
+// outXml );
+// }
+//
+// private Pipeline getPipeline(StatelessKnowledgeSession ksession) {
+// Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+//
+// Action assignResult = PipelineFactory.newAssignObjectAsResult();
+// assignResult.setReceiver( executeResultHandler );
+//
+// Transformer outTransformer = PipelineFactory.newXStreamToXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
+// outTransformer.setReceiver( assignResult );
+//
+// KnowledgeRuntimeCommand batchExecution = PipelineFactory.newCommandExecutor();
+// batchExecution.setReceiver( outTransformer );
+//
+// Transformer inTransformer = PipelineFactory.newXStreamFromXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
+// inTransformer.setReceiver( batchExecution );
+//
+// Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
+// pipeline.setReceiver( inTransformer );
+//
+// return pipeline;
+// }
+//
+// private Pipeline getPipelineSessionStateful(ExecutionNode node, XStreamResolverStrategy xstreamResolverStrategy) {
+// Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+//
+// Action assignResult = PipelineFactory.newAssignObjectAsResult();
+// assignResult.setReceiver( executeResultHandler );
+//
+// //Transformer outTransformer = PipelineFactory.newXStreamToXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
+// Transformer outTransformer = new XStreamToXmlGridTransformer();
+// outTransformer.setReceiver( assignResult );
+//
+// KnowledgeRuntimeCommand batchExecution = PipelineFactory.newCommandExecutor();
+// batchExecution.setReceiver( outTransformer );
+//
+// //Transformer inTransformer = PipelineFactory.newXStreamFromXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
+// Transformer inTransformer = new XStreamFromXmlGridTransformer( xstreamResolverStrategy );
+// inTransformer.setReceiver( batchExecution );
+//
+//// Transformer domTransformer = new ToXmlNodeTransformer();
+//// domTransformer.setReceiver( inTransformer );
+//
+// //Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+// Pipeline pipeline = new ExecutionNodePipelineImpl( node );
+//
+// pipeline.setReceiver( inTransformer );
+//
+// return pipeline;
+// }
+//
+// private Pipeline getPipelineStateful(StatefulKnowledgeSession ksession) {
+// Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+//
+// Action assignResult = PipelineFactory.newAssignObjectAsResult();
+// assignResult.setReceiver( executeResultHandler );
+//
+// Transformer outTransformer = PipelineFactory.newXStreamToXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
+// outTransformer.setReceiver( assignResult );
+//
+// KnowledgeRuntimeCommand batchExecution = PipelineFactory.newCommandExecutor();
+// batchExecution.setReceiver( outTransformer );
+//
+// Transformer inTransformer = PipelineFactory.newXStreamFromXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
+// inTransformer.setReceiver( batchExecution );
+//
+// Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+// pipeline.setReceiver( inTransformer );
+//
+// return pipeline;
+// }
+//
+// public static class ResultHandlerImpl
+// implements
+// ResultHandler {
+// Object object;
+//
+// public void handleResult(Object object) {
+// this.object = object;
+// }
+//
+// public Object getObject() {
+// return this.object;
+// }
+// }
+//
+ private StatelessKnowledgeSession getSession2(Resource resource) throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( resource,
+ ResourceType.DRL );
+
+ if ( kbuilder.hasErrors() ) {
+ System.out.println( kbuilder.getErrors() );
+ }
+
+ assertFalse( kbuilder.hasErrors() );
+ Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+
+ kbase.addKnowledgePackages( pkgs );
+ StatelessKnowledgeSession session = kbase.newStatelessKnowledgeSession();
+
+ return session;
+ }
+
+ private StatefulKnowledgeSession getSessionStateful(Resource resource) throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( resource,
+ ResourceType.DRL );
+
+ if ( kbuilder.hasErrors() ) {
+ System.out.println( kbuilder.getErrors() );
+ }
+
+ assertFalse( kbuilder.hasErrors() );
+ Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+
+ kbase.addKnowledgePackages( pkgs );
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+
+ return session;
+ }
+//
+// private StatefulKnowledgeSession getExecutionNodeSessionStateful(ExecutionNode node, Resource resource) throws Exception {
+// KnowledgeBuilder kbuilder = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+// kbuilder.add( resource,
+// ResourceType.DRL );
+//
+// if ( kbuilder.hasErrors() ) {
+// System.out.println( kbuilder.getErrors() );
+// }
+//
+// assertFalse( kbuilder.hasErrors() );
+// Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
+//
+// KnowledgeBase kbase = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+//
+// kbase.addKnowledgePackages( pkgs );
+// StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+//
+// return session;
+// }
+
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -52,7 +52,6 @@
import org.drools.command.runtime.rule.RetractCommand;
import org.drools.command.runtime.rule.ModifyCommand.SetterImpl;
import org.drools.common.DefaultFactHandle;
-import org.drools.common.DisconnectedFactHandle;
import org.drools.common.InternalRuleBase;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageRegistry;
@@ -62,7 +61,6 @@
import org.drools.rule.builder.dialect.java.JavaDialect;
import org.drools.runtime.impl.ExecutionResultImpl;
import org.drools.runtime.rule.impl.FlatQueryResults;
-import org.drools.runtime.rule.impl.NativeQueryResults;
import org.drools.xml.jaxb.util.JaxbListWrapper;
import org.xml.sax.InputSource;
import org.xml.sax.SAXParseException;
@@ -97,7 +95,6 @@
ExecutionResultImpl.class.getName() ,
DefaultFactHandle.class.getName(),
JaxbListWrapper.class.getName(),
- DisconnectedFactHandle.class.getName(),
FlatQueryResults.class.getName(),
CompleteWorkItemCommand.class.getName(),
GetObjectsCommand.class.getName()
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -103,7 +103,6 @@
import org.drools.common.AbstractWorkingMemory;
import org.drools.common.DefaultAgenda;
import org.drools.common.DefaultFactHandle;
-import org.drools.common.DisconnectedFactHandle;
import org.drools.common.InternalFactHandle;
import org.drools.compiler.DescrBuildError;
import org.drools.compiler.DrlParser;
@@ -1780,11 +1779,11 @@
DefaultFactHandle helloHandle = (DefaultFactHandle) ksession.insert( "hello" );
DefaultFactHandle goodbyeHandle = (DefaultFactHandle) ksession.insert( "goodbye" );
- org.drools.runtime.rule.FactHandle key = new DisconnectedFactHandle( helloHandle.toExternalForm() );
+ org.drools.runtime.rule.FactHandle key = new DefaultFactHandle( helloHandle.toExternalForm() );
assertEquals( "hello",
ksession.getObject( key ) );
- key = new DisconnectedFactHandle( goodbyeHandle.toExternalForm() );
+ key = new DefaultFactHandle( goodbyeHandle.toExternalForm() );
assertEquals( "goodbye",
ksession.getObject( key ) );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatefulSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatefulSessionTest.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatefulSessionTest.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -14,7 +14,6 @@
import org.drools.builder.ResourceType;
import org.drools.command.Command;
import org.drools.command.CommandFactory;
-import org.drools.common.DisconnectedFactHandle;
import org.drools.compiler.PackageBuilder;
import org.drools.concurrent.Future;
import org.drools.io.ResourceFactory;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/StandardQueryViewChangedEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/StandardQueryViewChangedEventListener.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/StandardQueryViewChangedEventListener.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -19,7 +19,7 @@
import java.util.ArrayList;
import java.util.List;
-import org.drools.common.DisconnectedFactHandle;
+import org.drools.common.DefaultFactHandle;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.reteoo.LeftTuple;
@@ -51,11 +51,12 @@
// 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() );
+ handles[entry.getIndex()] = new DefaultFactHandle( handle.getId(),
+ handle.getEntryPoint().getEntryPointId() ,
+ handle.getIdentityHashCode(),
+ handle.getObjectHashCode(),
+ handle.getRecency(),
+ handle.getObject() );
entry = entry.getParent();
}
@@ -73,11 +74,12 @@
newArgs[i] = args[i];
}
}
- handles[entry.getIndex()] = new DisconnectedFactHandle( handle.getId(),
- handle.getIdentityHashCode(),
- handle.getObjectHashCode(),
- handle.getRecency(),
- new ArrayElements( newArgs ) );
+ handles[entry.getIndex()] = new DefaultFactHandle( handle.getId(),
+ handle.getEntryPoint().getEntryPointId(),
+ handle.getIdentityHashCode(),
+ handle.getObjectHashCode(),
+ handle.getRecency(),
+ new ArrayElements( newArgs ) );
this.results.add( handles );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -23,7 +23,7 @@
import org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
-import org.drools.common.DisconnectedFactHandle;
+import org.drools.common.DefaultFactHandle;
import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
@@ -58,7 +58,7 @@
@XmlAttribute(name="fact-handle", required=true)
public void setFactHandleFromString(String factHandleId) {
- factHandle = new DisconnectedFactHandle(factHandleId);
+ factHandle = new DefaultFactHandle(factHandleId);
}
public String getFactHandleFromString() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectInEntryPointCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectInEntryPointCommand.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectInEntryPointCommand.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -24,7 +24,7 @@
import org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
-import org.drools.common.DisconnectedFactHandle;
+import org.drools.common.DefaultFactHandle;
import org.drools.runtime.impl.ExecutionResultImpl;
import org.drools.runtime.rule.FactHandle;
import org.drools.runtime.rule.WorkingMemoryEntryPoint;
@@ -59,7 +59,7 @@
WorkingMemoryEntryPoint ep = ((KnowledgeCommandContext) context).getWorkingMemoryEntryPoint();
FactHandle factHandle = ep.insert(object);
- DisconnectedFactHandle disconectedHandle = new DisconnectedFactHandle(factHandle.toExternalForm());
+ DefaultFactHandle disconectedHandle = new DefaultFactHandle(factHandle.toExternalForm());
if (outIdentifier != null) {
if (this.returnObject) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/ModifyCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/ModifyCommand.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/ModifyCommand.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -34,7 +34,7 @@
import org.drools.command.Setter;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
-import org.drools.common.DisconnectedFactHandle;
+import org.drools.common.DefaultFactHandle;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
import org.drools.xml.jaxb.util.JaxbListAdapter;
@@ -86,7 +86,7 @@
@XmlAttribute(name="fact-handle", required=true)
public void setFactHandleFromString(String factHandleId) {
- handle = new DisconnectedFactHandle(factHandleId);
+ handle = new DefaultFactHandle(factHandleId);
}
public String getFactHandleFromString() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/RetractCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/RetractCommand.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/RetractCommand.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -23,7 +23,7 @@
import org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
-import org.drools.common.DisconnectedFactHandle;
+import org.drools.common.DefaultFactHandle;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
@@ -53,7 +53,7 @@
@XmlAttribute(name="fact-handle", required=true)
public void setFactHandleFromString(String factHandleId) {
- handle = new DisconnectedFactHandle(factHandleId);
+ handle = new DefaultFactHandle(factHandleId);
}
public String getFactHandleFromString() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -20,6 +20,7 @@
import java.util.concurrent.atomic.AtomicLong;
import org.drools.reteoo.ObjectTypeConf;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
import org.drools.spi.FactHandleFactory;
public abstract class AbstractFactHandleFactory
@@ -54,7 +55,8 @@
*/
public final InternalFactHandle newFactHandle(final Object object,
final ObjectTypeConf conf,
- final InternalWorkingMemory workingMemory) {
+ final InternalWorkingMemory workingMemory,
+ final WorkingMemoryEntryPoint wmEntryPoint) {
// @FIXME make id re-cycling thread safe
// if ( !this.factHandlePool.isEmpty() ) {
// return newFactHandle( this.factHandlePool.pop(),
@@ -66,7 +68,8 @@
return newFactHandle( this.id.incrementAndGet(),
object,
conf,
- workingMemory );
+ workingMemory,
+ wmEntryPoint );
}
/* (non-Javadoc)
@@ -75,12 +78,14 @@
protected final InternalFactHandle newFactHandle(final int id,
final Object object,
final ObjectTypeConf conf,
- final InternalWorkingMemory workingMemory) {
+ final InternalWorkingMemory workingMemory,
+ final WorkingMemoryEntryPoint wmEntryPoint) {
return newFactHandle( id,
object,
this.counter.incrementAndGet(),
conf,
- workingMemory );
+ workingMemory,
+ wmEntryPoint );
}
/* (non-Javadoc)
@@ -90,7 +95,8 @@
final Object object,
final long recency,
final ObjectTypeConf conf,
- final InternalWorkingMemory workingMemory);
+ final InternalWorkingMemory workingMemory,
+ final WorkingMemoryEntryPoint wmEntryPoint);
/* (non-Javadoc)
* @see org.drools.reteoo.FactHandleFactory#increaseFactHandleRecency(org.drools.FactHandle)
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-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -78,8 +78,7 @@
import org.drools.process.instance.event.SignalManager;
import org.drools.process.instance.timer.TimerManager;
import org.drools.reteoo.EntryPointNode;
-import org.drools.reteoo.InitialFactHandle;
-import org.drools.reteoo.InitialFactHandleDummyObject;
+import org.drools.reteoo.InitialFactImpl;
import org.drools.reteoo.LIANodePropagation;
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.ObjectTypeConf;
@@ -289,7 +288,7 @@
public AbstractWorkingMemory(final int id,
final InternalRuleBase ruleBase,
final FactHandleFactory handleFactory,
- final InitialFactHandle initialFactHandle,
+ final InternalFactHandle initialFactHandle,
final long propagationContext,
final SessionConfiguration config,
final Environment environment) {
@@ -308,7 +307,7 @@
public AbstractWorkingMemory(final int id,
final InternalRuleBase ruleBase,
final FactHandleFactory handleFactory,
- final InitialFactHandle initialFactHandle,
+ final InternalFactHandle initialFactHandle,
final long propagationContext,
final SessionConfiguration config,
final Environment environment,
@@ -347,9 +346,10 @@
this.sequential = conf.isSequential();
if ( initialFactHandle == null ) {
- this.initialFactHandle = new InitialFactHandle( handleFactory.newFactHandle( new InitialFactHandleDummyObject(),
- null,
- this ) );
+ this.initialFactHandle = handleFactory.newFactHandle( InitialFactImpl.getInstance(),
+ null,
+ this,
+ this);
} else {
this.initialFactHandle = initialFactHandle;
}
@@ -1142,8 +1142,8 @@
InternalFactHandle handle;
handle = this.handleFactory.newFactHandle( object,
typeConf,
+ this,
this );
- handle.setEntryPoint( this );
this.objectStore.addHandle( handle,
object );
return handle;
@@ -1264,7 +1264,7 @@
}
// the handle might have been disconnected, so reconnect if it has
- if ( factHandle instanceof DisconnectedFactHandle ) {
+ if ( handle.isDisconnected() ) {
handle = this.objectStore.reconnect( handle );
}
@@ -1369,7 +1369,7 @@
this.ruleBase.executeQueuedActions();
// the handle might have been disconnected, so reconnect if it has
- if ( factHandle instanceof DisconnectedFactHandle ) {
+ if ( ((InternalFactHandle)factHandle).isDisconnected() ) {
factHandle = this.objectStore.reconnect( factHandle );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -24,8 +24,10 @@
import javax.xml.bind.annotation.XmlRootElement;
import org.drools.FactHandle;
+import org.drools.core.util.StringUtils;
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.RightTuple;
+import org.drools.rule.EntryPoint;
import org.drools.runtime.rule.WorkingMemoryEntryPoint;
/**
@@ -52,7 +54,7 @@
private Object object;
private EqualityKey key;
private int objectHashCode;
- private transient int identityHashCode;
+ private int identityHashCode;
public RightTuple firstRightTuple;
public RightTuple lastRightTuple;
@@ -70,9 +72,11 @@
public DefaultFactHandle(final int id,
final Object object) {
+ // this is only used by tests, left as legacy as so many test rely on it.
this( id,
object,
- id );
+ id,
+ new DisconnectedWorkingMemoryEntryPoint( EntryPoint.DEFAULT.getEntryPointId() ) );
}
/**
@@ -83,22 +87,33 @@
*/
public DefaultFactHandle(final int id,
final Object object,
- final long recency) {
+ final long recency,
+ final WorkingMemoryEntryPoint wmEntryPoint) {
this.id = id;
+ this.entryPoint = wmEntryPoint;
this.recency = recency;
this.object = object;
this.objectHashCode = object.hashCode();
setIdentityHashCode();
}
- public DefaultFactHandle(final int id,
- final int objectHashCode,
- final long recency) {
+ public DefaultFactHandle(String externalFormat) {
+ createFromExternalFormat( externalFormat );
+ }
+
+ public DefaultFactHandle(int id,
+ String wmEntryPointId,
+ int identityHashCode,
+ int objectHashCode,
+ long recency,
+ Object object) {
this.id = id;
+ this.entryPoint = (wmEntryPointId == null) ? null : new DisconnectedWorkingMemoryEntryPoint( wmEntryPointId );
+ this.identityHashCode = identityHashCode;
+ this.objectHashCode = objectHashCode;
this.recency = recency;
- this.objectHashCode = objectHashCode;
- setIdentityHashCode();
- }
+ this.object = object;
+ }
// ----------------------------------------------------------------------
// Instance members
@@ -118,6 +133,24 @@
return this.id == ((DefaultFactHandle) object).id;
}
+
+
+ public void disconnect() {
+ this.key = null;
+ this.firstLeftTuple = null;
+ this.firstRightTuple = null;
+ this.lastLeftTuple = null;
+ this.lastRightTuple = null;
+ this.entryPoint = (this.entryPoint == null) ? null : new DisconnectedWorkingMemoryEntryPoint( this.entryPoint.getEntryPointId() );
+ }
+
+ public boolean isDisconnected() {
+ if ( this.entryPoint instanceof DisconnectedWorkingMemoryEntryPoint ) {
+ return true;
+ } else {
+ return false;
+ }
+ }
public int getObjectHashCode() {
return this.objectHashCode;
@@ -148,7 +181,7 @@
* @see FactHandle
*/
public String toExternalForm() {
- return "0:" + this.id + ":" + getIdentityHashCode() + ":" + getObjectHashCode() + ":" + getRecency();
+ return "0:" + this.id + ":" + getIdentityHashCode() + ":" + getObjectHashCode() + ":" + getRecency() + ":" + ((this.entryPoint != null) ? this.entryPoint.getEntryPointId() : "null" );
}
@XmlAttribute(name="external-form")
@@ -257,8 +290,7 @@
}
public DefaultFactHandle clone() {
- DefaultFactHandle clone = new DefaultFactHandle(this.id, this.object, this.recency);
- clone.entryPoint = this.entryPoint;
+ DefaultFactHandle clone = new DefaultFactHandle(this.id, this.object, this.recency, this.entryPoint);
clone.key = this.key;
clone.firstLeftTuple = this.firstLeftTuple;
clone.lastLeftTuple = this.lastLeftTuple;
@@ -288,4 +320,17 @@
private Object toExternalString() {
return "[F:"+this.getId()+" first="+System.identityHashCode( firstLeftTuple )+" last="+System.identityHashCode( lastLeftTuple )+" ]";
}
+
+ private void createFromExternalFormat(String externalFormat) {
+ String[] elements = externalFormat.split( ":" );
+ if ( elements.length != 6 ) {
+ throw new IllegalArgumentException( "externalFormat did not have enough elements" );
+ }
+
+ this.id = Integer.parseInt( elements[1] );
+ this.identityHashCode = Integer.parseInt( elements[2] );
+ this.objectHashCode = Integer.parseInt( elements[3] );
+ this.recency = Long.parseLong( elements[4] );
+ this.entryPoint = StringUtils.isEmpty( elements[5] ) ? null : new DisconnectedWorkingMemoryEntryPoint( elements[5].trim() );
+ }
}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DisconnectedFactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DisconnectedFactHandle.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DisconnectedFactHandle.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -1,202 +0,0 @@
-/**
- * Copyright 2010 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.common;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.drools.reteoo.LeftTuple;
-import org.drools.reteoo.RightTuple;
-import org.drools.runtime.rule.WorkingMemoryEntryPoint;
-
- at XmlAccessorType(XmlAccessType.NONE)
- at XmlRootElement(name="fact-handle")
-public class DisconnectedFactHandle
- implements
- InternalFactHandle {
-
- private int id;
- private int identityHashCode;
- private int objectHashCode;
- private long recency;
- private Object object;
-
- protected DisconnectedFactHandle() {}
-
- public DisconnectedFactHandle(int id,
- int identityHashCode,
- int objectHashCode,
- long recency,
- Object object) {
- this( id, identityHashCode, objectHashCode, recency );
- this.object = object;
- }
-
- public DisconnectedFactHandle(int id,
- int identityHashCode,
- int objectHashCode,
- long recency) {
- this.id = id;
- this.identityHashCode = identityHashCode;
- this.objectHashCode = objectHashCode;
- this.recency = recency;
- }
-
- public DisconnectedFactHandle(String externalFormat) {
- createFromExternalFormat(externalFormat);
- }
-
- public int getId() {
- return this.id;
- }
-
- public int getIdentityHashCode() {
- return this.identityHashCode;
- }
-
- public int getObjectHashCode() {
- return this.objectHashCode;
- }
-
- public long getRecency() {
- return this.recency;
- }
-
- public LeftTuple getLastLeftTuple() {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public Object getObject() {
- if ( this.object != null ) {
- return this.object;
- }
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public WorkingMemoryEntryPoint getEntryPoint() {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public EqualityKey getEqualityKey() {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public RightTuple getRightTuple() {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public void invalidate() {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public boolean isEvent() {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public boolean isValid() {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public void setEntryPoint(WorkingMemoryEntryPoint ep) {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public void setEqualityKey(EqualityKey key) {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public void setFirstLeftTuple(LeftTuple leftTuple) {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public void setObject(Object object) {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public void setRecency(long recency) {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public void setRightTuple(RightTuple rightTuple) {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public DefaultFactHandle clone() {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public String toExternalForm() {
- return "0:" + this.id + ":" + this.identityHashCode + ":" + this.objectHashCode + ":" + this.recency;
- }
-
- @XmlAttribute(name="external-form")
- public String getExternalForm() {
- return toExternalForm();
- }
-
- public void setExternalForm(String externalForm) {
- createFromExternalFormat(externalForm);
- }
-
- public LeftTuple getFirstLeftTuple() {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
-
- public RightTuple getFirstRightTuple() {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
-
- public RightTuple getLastRightTuple() {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
-
- public void setFirstRightTuple(RightTuple rightTuple) {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
-
- public void setLastLeftTuple(LeftTuple leftTuple) {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
-
- public void setLastRightTuple(RightTuple rightTuple) {
- throw new UnsupportedOperationException( "DisonnectedFactHandle does not support this method" );
- }
-
- public String toTupleTree(int indent) {
- return null;
- }
-
- private void createFromExternalFormat(String externalFormat) {
- String[] elements = externalFormat.split( ":" );
- if ( elements.length != 5 ) {
- throw new IllegalArgumentException( "externalFormat did not have enough elements" );
- }
-
- this.id = Integer.parseInt( elements[1] );
- this.identityHashCode = Integer.parseInt( elements[2] );
- this.objectHashCode = Integer.parseInt( elements[3] );
- this.recency = Long.parseLong( elements[4] );
- }
-
-}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DisconnectedWorkingMemoryEntryPoint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DisconnectedWorkingMemoryEntryPoint.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DisconnectedWorkingMemoryEntryPoint.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -0,0 +1,62 @@
+package org.drools.common;
+
+import java.util.Collection;
+
+import org.drools.runtime.ObjectFilter;
+import org.drools.runtime.rule.FactHandle;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
+
+public class DisconnectedWorkingMemoryEntryPoint implements WorkingMemoryEntryPoint {
+
+ private String id;
+
+ public DisconnectedWorkingMemoryEntryPoint(String id) {
+ this.id = id;
+ }
+
+ public String getEntryPointId() {
+ return this.id;
+ }
+
+ public long getFactCount() {
+ throw new UnsupportedOperationException( "This method is not supported for disconnected objects" );
+ }
+
+ public FactHandle getFactHandle(Object object) {
+ throw new UnsupportedOperationException( "This method is not supported for disconnected objects" );
+ }
+
+ public <T extends FactHandle> Collection<T> getFactHandles() {
+ throw new UnsupportedOperationException( "This method is not supported for disconnected objects" );
+ }
+
+ public <T extends FactHandle> Collection<T> getFactHandles(ObjectFilter filter) {
+ throw new UnsupportedOperationException( "This method is not supported for disconnected objects" );
+ }
+
+ public Object getObject(FactHandle factHandle) {
+ throw new UnsupportedOperationException( "This method is not supported for disconnected objects" );
+ }
+
+ public Collection<Object> getObjects() {
+ throw new UnsupportedOperationException( "This method is not supported for disconnected objects" );
+ }
+
+ public Collection<Object> getObjects(ObjectFilter filter) {
+ throw new UnsupportedOperationException( "This method is not supported for disconnected objects" );
+ }
+
+ public FactHandle insert(Object object) {
+ throw new UnsupportedOperationException( "This method is not supported for disconnected objects" );
+ }
+
+ public void retract(FactHandle handle) {
+ throw new UnsupportedOperationException( "This method is not supported for disconnected objects" );
+ }
+
+ public void update(FactHandle handle,
+ Object object) {
+ throw new UnsupportedOperationException( "This method is not supported for disconnected objects" );
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EventFactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EventFactHandle.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EventFactHandle.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -17,6 +17,7 @@
package org.drools.common;
import org.drools.FactHandle;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
public class EventFactHandle extends DefaultFactHandle {
@@ -37,31 +38,7 @@
this.duration = 0;
}
- public EventFactHandle(final int id,
- final Object object) {
- super( id,
- object );
- this.startTimestamp = 0;
- this.duration = 0;
- }
-
/**
- * Construct.
- *
- * @param id
- * Handle id.
- */
- public EventFactHandle(final int id,
- final Object object,
- final long recency) {
- super( id,
- object,
- recency );
- this.startTimestamp = 0;
- this.duration = 0;
- }
-
- /**
* Creates a new event fact handle.
*
* @param id this event fact handle ID
@@ -74,10 +51,12 @@
final Object object,
final long recency,
final long timestamp,
- final long duration) {
+ final long duration,
+ final WorkingMemoryEntryPoint wmEntryPoint) {
super( id,
object,
- recency );
+ recency,
+ wmEntryPoint );
this.startTimestamp = timestamp;
this.duration = duration;
}
@@ -160,7 +139,8 @@
getObject(),
getRecency(),
startTimestamp,
- duration );
+ duration,
+ getEntryPoint() );
clone.activationsCount = activationsCount;
clone.expired = expired;
clone.setEntryPoint( getEntryPoint() );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalFactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalFactHandle.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalFactHandle.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -46,6 +46,8 @@
public int getObjectHashCode();
+ public boolean isDisconnected();
+
/**
* Returns true if this FactHandle represents
* and Event or false if this FactHandle represents
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/NamedEntryPoint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/NamedEntryPoint.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/NamedEntryPoint.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -133,8 +133,8 @@
handle = this.handleFactory.newFactHandle( object,
typeConf,
- wm );
- handle.setEntryPoint( this );
+ wm,
+ this );
this.objectStore.addHandle( handle,
object );
if ( dynamic ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/ObjectFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/ObjectFactory.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/ObjectFactory.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -20,9 +20,6 @@
@XmlRegistry
public class ObjectFactory {
- public DisconnectedFactHandle createDisconnectedFactHandle() {
- return new DisconnectedFactHandle();
- }
public DefaultFactHandle createDefaultFactHandle() {
return new DefaultFactHandle();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/QueryElementFactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/QueryElementFactHandle.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/QueryElementFactHandle.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -158,4 +158,8 @@
return null;
}
+ public boolean isDisconnected() {
+ return true;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -30,6 +30,7 @@
import org.drools.command.impl.KnowledgeCommandContext;
import org.drools.command.runtime.BatchExecutionCommand;
import org.drools.command.runtime.rule.FireAllRulesCommand;
+import org.drools.common.InternalFactHandle;
import org.drools.common.InternalRuleBase;
import org.drools.event.AgendaEventSupport;
import org.drools.event.RuleFlowEventSupport;
@@ -40,8 +41,7 @@
import org.drools.impl.StatefulKnowledgeSessionImpl.AgendaEventListenerWrapper;
import org.drools.impl.StatefulKnowledgeSessionImpl.ProcessEventListenerWrapper;
import org.drools.impl.StatefulKnowledgeSessionImpl.WorkingMemoryEventListenerWrapper;
-import org.drools.reteoo.InitialFactHandle;
-import org.drools.reteoo.InitialFactHandleDummyObject;
+import org.drools.reteoo.InitialFactImpl;
import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.reteoo.ReteooWorkingMemory.WorkingMemoryReteAssertAction;
import org.drools.rule.EntryPoint;
@@ -130,11 +130,11 @@
wm.setAgendaEventSupport( this.agendaEventSupport );
wm.setRuleFlowEventSupport( this.ruleFlowEventSupport );
- final InitialFactHandleDummyObject initialFact = new InitialFactHandleDummyObject();
- final InitialFactHandle handle = new InitialFactHandle( wm.getFactHandleFactory().newFactHandle( initialFact,
- wm.getObjectTypeConfigurationRegistry().getObjectTypeConf( EntryPoint.DEFAULT,
- initialFact ),
- wm ) );
+ final InternalFactHandle handle = wm.getFactHandleFactory().newFactHandle( InitialFactImpl.getInstance(),
+ wm.getObjectTypeConfigurationRegistry().getObjectTypeConf( EntryPoint.DEFAULT,
+ InitialFactImpl.getInstance() ),
+ wm,
+ wm);
wm.queueWorkingMemoryAction( new WorkingMemoryReteAssertAction( handle,
false,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceChangeScannerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceChangeScannerImpl.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceChangeScannerImpl.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -34,318 +34,292 @@
import org.drools.io.ResourceChangeScannerConfiguration;
import org.drools.io.internal.InternalResource;
-public class ResourceChangeScannerImpl implements ResourceChangeScanner {
+public class ResourceChangeScannerImpl
+ implements
+ ResourceChangeScanner {
- private Map<Resource, Set<ResourceChangeNotifier>> resources;
- private Set<Resource> directories;
- private SystemEventListener listener;
- private int interval;
+ private Map<Resource, Set<ResourceChangeNotifier>> resources;
+ private Set<Resource> directories;
+ private SystemEventListener listener;
+ private int interval;
- public ResourceChangeScannerImpl() {
- this.listener = SystemEventListenerFactory.getSystemEventListener();
- this.resources = new HashMap<Resource, Set<ResourceChangeNotifier>>();
- this.directories = new HashSet<Resource>();
- this.setInterval(60);
+ public ResourceChangeScannerImpl() {
+ this.listener = SystemEventListenerFactory.getSystemEventListener();
+ this.resources = new HashMap<Resource, Set<ResourceChangeNotifier>>();
+ this.directories = new HashSet<Resource>();
+ this.setInterval( 60 );
this.listener.info( "ResourceChangeScanner created with default interval=60" );
- }
+ }
- public void setSystemEventListener(SystemEventListener listener) {
- this.listener = listener;
- }
+ public void setSystemEventListener(SystemEventListener listener) {
+ this.listener = listener;
+ }
- public void configure(ResourceChangeScannerConfiguration configuration) {
- this.setInterval(((ResourceChangeScannerConfigurationImpl) configuration).getInterval());
+ public void configure(ResourceChangeScannerConfiguration configuration) {
+ this.setInterval( ((ResourceChangeScannerConfigurationImpl) configuration).getInterval() );
this.listener.info( "ResourceChangeScanner reconfigured with interval=" + getInterval() );
- // restart it if it's already running.
- if (this.scannerScheduler != null && this.scannerScheduler.isRunning()) {
- stop();
- start();
- }
- }
+ // restart it if it's already running.
+ if ( this.scannerScheduler != null && this.scannerScheduler.isRunning() ) {
+ stop();
+ start();
+ }
+ }
- public ResourceChangeScannerConfiguration newResourceChangeScannerConfiguration() {
- return new ResourceChangeScannerConfigurationImpl();
- }
+ public ResourceChangeScannerConfiguration newResourceChangeScannerConfiguration() {
+ return new ResourceChangeScannerConfigurationImpl();
+ }
- public ResourceChangeScannerConfiguration newResourceChangeScannerConfiguration(
- Properties properties) {
- return new ResourceChangeScannerConfigurationImpl(properties);
- }
+ public ResourceChangeScannerConfiguration newResourceChangeScannerConfiguration(Properties properties) {
+ return new ResourceChangeScannerConfigurationImpl( properties );
+ }
- public void subscribeNotifier(ResourceChangeNotifier notifier,
- Resource resource) {
- synchronized (this.resources) {
- if (((InternalResource) resource).isDirectory()) {
- this.directories.add(resource);
- }
- Set<ResourceChangeNotifier> notifiers = this.resources
- .get(resource);
- if (notifiers == null) {
- notifiers = new HashSet<ResourceChangeNotifier>();
- this.resources.put(resource, notifiers);
- }
- this.listener.debug("ResourceChangeScanner subcribing notifier="
- + notifier + " to resource=" + resource);
- notifiers.add(notifier);
- }
- }
+ public void subscribeNotifier(ResourceChangeNotifier notifier,
+ Resource resource) {
+ synchronized ( this.resources ) {
+ if ( ((InternalResource) resource).isDirectory() ) {
+ this.directories.add( resource );
+ }
+ Set<ResourceChangeNotifier> notifiers = this.resources.get( resource );
+ if ( notifiers == null ) {
+ notifiers = new HashSet<ResourceChangeNotifier>();
+ this.resources.put( resource,
+ notifiers );
+ }
+ this.listener.debug( "ResourceChangeScanner subcribing notifier=" + notifier + " to resource=" + resource );
+ notifiers.add( notifier );
+ }
+ }
- public void unsubscribeNotifier(ResourceChangeNotifier notifier,
- Resource resource) {
- synchronized (this.resources) {
- Set<ResourceChangeNotifier> notifiers = this.resources
- .get(resource);
- if (notifiers == null) {
- return;
- }
- this.listener.debug("ResourceChangeScanner unsubcribing notifier="
- + notifier + " to resource=" + resource);
- notifiers.remove(notifier);
- if (notifiers.isEmpty()) {
- this.listener.debug("ResourceChangeScanner resource="
- + resource + " now has no subscribers");
- this.resources.remove(resource);
- this.directories.remove(resource); // don't bother with
- // isDirectory check, as
- // doing a remove is
- // harmless if it doesn't
- // exist
- }
- }
- }
+ public void unsubscribeNotifier(ResourceChangeNotifier notifier,
+ Resource resource) {
+ synchronized ( this.resources ) {
+ Set<ResourceChangeNotifier> notifiers = this.resources.get( resource );
+ if ( notifiers == null ) {
+ return;
+ }
+ this.listener.debug( "ResourceChangeScanner unsubcribing notifier=" + notifier + " to resource=" + resource );
+ notifiers.remove( notifier );
+ if ( notifiers.isEmpty() ) {
+ this.listener.debug( "ResourceChangeScanner resource=" + resource + " now has no subscribers" );
+ this.resources.remove( resource );
+ this.directories.remove( resource ); // don't bother with
+ // isDirectory check, as
+ // doing a remove is
+ // harmless if it doesn't
+ // exist
+ }
+ }
+ }
- public void scan() {
- this.listener.debug("ResourceChangeScanner attempt to scan "
- + this.resources.size() + " resources");
+ public void scan() {
+ this.listener.debug( "ResourceChangeScanner attempt to scan " + this.resources.size() + " resources" );
- synchronized (this.resources) {
- Map<ResourceChangeNotifier, ChangeSet> notifications = new HashMap<ResourceChangeNotifier, ChangeSet>();
+ synchronized ( this.resources ) {
+ Map<ResourceChangeNotifier, ChangeSet> notifications = new HashMap<ResourceChangeNotifier, ChangeSet>();
- List<Resource> removed = new ArrayList<Resource>();
+ List<Resource> removed = new ArrayList<Resource>();
- // detect modified and added
- for (Resource resource : this.directories) {
- this.listener.debug("ResourceChangeScanner scanning directory="
- + resource);
- for (Resource child : ((InternalResource) resource)
- .listResources()) {
- if (((InternalResource) child).isDirectory()) {
- continue; // ignore sub directories
- }
- if (!this.resources.containsKey(child)) {
+ // detect modified and added
+ for ( Resource resource : this.directories ) {
+ this.listener.debug( "ResourceChangeScanner scanning directory=" + resource );
+ for ( Resource child : ((InternalResource) resource).listResources() ) {
+ if ( ((InternalResource) child).isDirectory() ) {
+ continue; // ignore sub directories
+ }
+ if ( !this.resources.containsKey( child ) ) {
- this.listener
- .debug("ResourceChangeScanner new resource="
- + child);
- // child is new
- ((InternalResource) child)
- .setResourceType(((InternalResource) resource)
- .getResourceType());
- Set<ResourceChangeNotifier> notifiers = this.resources
- .get(resource); // get notifiers for this
- // directory
- for (ResourceChangeNotifier notifier : notifiers) {
- ChangeSetImpl changeSet = (ChangeSetImpl) notifications
- .get(notifier);
- if (changeSet == null) {
- // lazy initialise changeSet
- changeSet = new ChangeSetImpl();
- notifications.put(notifier, changeSet);
- }
- if (changeSet.getResourcesAdded().isEmpty()) {
- changeSet
- .setResourcesAdded(new ArrayList<Resource>());
- }
- changeSet.getResourcesAdded().add(child);
- notifier.subscribeChildResource(resource, child);
- }
- }
- }
- }
+ this.listener.debug( "ResourceChangeScanner new resource=" + child );
+ // child is new
+ ((InternalResource) child).setResourceType( ((InternalResource) resource).getResourceType() );
+ Set<ResourceChangeNotifier> notifiers = this.resources.get( resource ); // get notifiers for this
+ // directory
+ for ( ResourceChangeNotifier notifier : notifiers ) {
+ ChangeSetImpl changeSet = (ChangeSetImpl) notifications.get( notifier );
+ if ( changeSet == null ) {
+ // lazy initialise changeSet
+ changeSet = new ChangeSetImpl();
+ notifications.put( notifier,
+ changeSet );
+ }
+ if ( changeSet.getResourcesAdded().isEmpty() ) {
+ changeSet.setResourcesAdded( new ArrayList<Resource>() );
+ }
+ changeSet.getResourcesAdded().add( child );
+ notifier.subscribeChildResource( resource,
+ child );
+ }
+ }
+ }
+ }
- for (Entry<Resource, Set<ResourceChangeNotifier>> entry : this.resources
- .entrySet()) {
- Resource resource = entry.getKey();
- Set<ResourceChangeNotifier> notifiers = entry.getValue();
+ for ( Entry<Resource, Set<ResourceChangeNotifier>> entry : this.resources.entrySet() ) {
+ Resource resource = entry.getKey();
+ Set<ResourceChangeNotifier> notifiers = entry.getValue();
- if (!((InternalResource) resource).isDirectory()) {
- // detect if Resource has been removed
- long lastModified = ((InternalResource) resource)
- .getLastModified();
- long lastRead = ((InternalResource) resource).getLastRead();
- if (lastModified == 0) {
- this.listener
- .debug("ResourceChangeScanner removed resource="
- + resource);
- removed.add(resource);
- // resource is no longer present
- // iterate notifiers for this resource and add to each
- // removed
- for (ResourceChangeNotifier notifier : notifiers) {
- ChangeSetImpl changeSet = (ChangeSetImpl) notifications
- .get(notifier);
- if (changeSet == null) {
- // lazy initialise changeSet
- changeSet = new ChangeSetImpl();
- notifications.put(notifier, changeSet);
- }
- if (changeSet.getResourcesRemoved().isEmpty()) {
- changeSet
- .setResourcesRemoved(new ArrayList<Resource>());
- }
- changeSet.getResourcesRemoved().add(resource);
- }
- } else if (lastRead < lastModified && lastRead >= 0) {
- this.listener
- .debug("ResourceChangeScanner modified resource="
- + resource
- + " : "
- + lastRead
- + " : "
- + lastModified);
- // it's modified
- // iterate notifiers for this resource and add to each
- // modified
- for (ResourceChangeNotifier notifier : notifiers) {
- ChangeSetImpl changeSet = (ChangeSetImpl) notifications
- .get(notifier);
- if (changeSet == null) {
- // lazy initialise changeSet
- changeSet = new ChangeSetImpl();
- notifications.put(notifier, changeSet);
- }
- if (changeSet.getResourcesModified().isEmpty()) {
- changeSet
- .setResourcesModified(new ArrayList<Resource>());
- }
- changeSet.getResourcesModified().add(resource);
- }
- }
- }
- }
+ if ( !((InternalResource) resource).isDirectory() ) {
+ // detect if Resource has been removed
+ long lastModified = ((InternalResource) resource).getLastModified();
+ long lastRead = ((InternalResource) resource).getLastRead();
+ if ( lastModified == 0 ) {
+ this.listener.debug( "ResourceChangeScanner removed resource=" + resource );
+ removed.add( resource );
+ // resource is no longer present
+ // iterate notifiers for this resource and add to each
+ // removed
+ for ( ResourceChangeNotifier notifier : notifiers ) {
+ ChangeSetImpl changeSet = (ChangeSetImpl) notifications.get( notifier );
+ if ( changeSet == null ) {
+ // lazy initialise changeSet
+ changeSet = new ChangeSetImpl();
+ notifications.put( notifier,
+ changeSet );
+ }
+ if ( changeSet.getResourcesRemoved().isEmpty() ) {
+ changeSet.setResourcesRemoved( new ArrayList<Resource>() );
+ }
+ changeSet.getResourcesRemoved().add( resource );
+ }
+ } else if ( lastRead < lastModified && lastRead >= 0 ) {
+ this.listener.debug( "ResourceChangeScanner modified resource=" + resource + " : " + lastRead + " : " + lastModified );
+ // it's modified
+ // iterate notifiers for this resource and add to each
+ // modified
+ for ( ResourceChangeNotifier notifier : notifiers ) {
+ ChangeSetImpl changeSet = (ChangeSetImpl) notifications.get( notifier );
+ if ( changeSet == null ) {
+ // lazy initialise changeSet
+ changeSet = new ChangeSetImpl();
+ notifications.put( notifier,
+ changeSet );
+ }
+ if ( changeSet.getResourcesModified().isEmpty() ) {
+ changeSet.setResourcesModified( new ArrayList<Resource>() );
+ }
+ changeSet.getResourcesModified().add( resource );
+ }
+ }
+ }
+ }
- // now iterate and removed the removed resources, we do this so as
- // not to mutate the foreach loop while iterating
- for (Resource resource : removed) {
- this.resources.remove(resource);
- }
+ // now iterate and removed the removed resources, we do this so as
+ // not to mutate the foreach loop while iterating
+ for ( Resource resource : removed ) {
+ this.resources.remove( resource );
+ }
- for (Entry<ResourceChangeNotifier, ChangeSet> entry : notifications
- .entrySet()) {
- ResourceChangeNotifier notifier = entry.getKey();
- ChangeSet changeSet = entry.getValue();
- notifier.publishChangeSet(changeSet);
- }
- }
- }
-
- public void setInterval(int interval) {
- if (interval <= 0 ){
- throw new IllegalArgumentException("Invalid interval time: "+interval+". It should be a positive number bigger than 0");
+ for ( Entry<ResourceChangeNotifier, ChangeSet> entry : notifications.entrySet() ) {
+ ResourceChangeNotifier notifier = entry.getKey();
+ ChangeSet changeSet = entry.getValue();
+ notifier.publishChangeSet( changeSet );
}
+ }
+ }
- this.interval = interval;
- this.listener.info("ResourceChangeScanner reconfigured with interval="
- + getInterval());
+ public void setInterval(int interval) {
+ if ( interval <= 0 ) {
+ throw new IllegalArgumentException( "Invalid interval time: " + interval + ". It should be a positive number bigger than 0" );
+ }
- if (this.scannerScheduler != null && this.scannerScheduler.isRunning()) {
- stop();
- start();
- }
- }
+ this.interval = interval;
+ this.listener.info( "ResourceChangeScanner reconfigured with interval=" + getInterval() );
- public int getInterval() {
- return this.interval;
- }
+ if ( this.scannerScheduler != null && this.scannerScheduler.isRunning() ) {
+ stop();
+ start();
+ }
+ }
- public void start() {
- this.scannerScheduler = new ProcessChangeSet(this.resources, this,
- this.listener, this.interval);
- thread = new Thread(this.scannerScheduler);
- thread.start();
- }
+ public int getInterval() {
+ return this.interval;
+ }
- public void stop() {
- if (this.scannerScheduler != null && this.scannerScheduler.isRunning()) {
- this.scannerScheduler.stop();
- this.thread.interrupt();
- this.scannerScheduler = null;
- }
- }
+ public void start() {
+ this.scannerScheduler = new ProcessChangeSet( this.resources,
+ this,
+ this.listener,
+ this.interval );
+ thread = new Thread( this.scannerScheduler );
+ thread.start();
+ }
- public void reset() {
- this.resources.clear();
- this.directories.clear();
- }
+ public void stop() {
+ if ( this.scannerScheduler != null && this.scannerScheduler.isRunning() ) {
+ this.scannerScheduler.stop();
+ this.thread.interrupt();
+ this.scannerScheduler = null;
+ }
+ }
- private Thread thread;
- private ProcessChangeSet scannerScheduler;
+ public void reset() {
+ this.resources.clear();
+ this.directories.clear();
+ }
- public static class ProcessChangeSet implements Runnable {
- private volatile boolean scan;
- private ResourceChangeScannerImpl scanner;
- private long interval;
- private Map<Resource, Set<ResourceChangeNotifier>> resources;
- private SystemEventListener listener;
+ private Thread thread;
+ private ProcessChangeSet scannerScheduler;
- ProcessChangeSet(Map<Resource, Set<ResourceChangeNotifier>> resources,
- ResourceChangeScannerImpl scanner,
- SystemEventListener listener, int interval) {
- this.resources = resources;
- this.scanner = scanner;
- this.listener = listener;
- this.interval = interval;
- this.scan = true;
- }
+ public static class ProcessChangeSet
+ implements
+ Runnable {
+ private volatile boolean scan;
+ private ResourceChangeScannerImpl scanner;
+ private long interval;
+ private Map<Resource, Set<ResourceChangeNotifier>> resources;
+ private SystemEventListener listener;
- public int getInterval() {
- return (int) this.interval;
- }
+ ProcessChangeSet(Map<Resource, Set<ResourceChangeNotifier>> resources,
+ ResourceChangeScannerImpl scanner,
+ SystemEventListener listener,
+ int interval) {
+ this.resources = resources;
+ this.scanner = scanner;
+ this.listener = listener;
+ this.interval = interval;
+ this.scan = true;
+ }
- public void stop() {
- this.scan = false;
- }
+ public int getInterval() {
+ return (int) this.interval;
+ }
- public boolean isRunning() {
- return this.scan;
- }
+ public void stop() {
+ this.scan = false;
+ }
- public void run() {
- synchronized (this) {
- if (this.scan) {
- this.listener
- .info("ResourceChangeNotification scanner has started");
- }
- while (this.scan) {
- Exception exception = null;
- // System.out.println( "BEFORE : sync this.resources" );
- synchronized (this.resources) {
- // System.out.println( "DURING : sync this.resources" );
- // lock the resources, as we don't want this modified
- // while processing
- this.scanner.scan();
- }
- // System.out.println( "AFTER : SCAN" );
- try {
- this.listener
- .debug("ResourceChangeScanner thread is waiting for "
- + this.interval + " seconds.");
- wait(this.interval * 1000);
- } catch (InterruptedException e) {
- exception = e;
- }
+ public boolean isRunning() {
+ return this.scan;
+ }
- if (this.scan && exception != null) {
- this.listener
- .exception(new RuntimeException(
- "ResourceChangeNotification ChangeSet scanning thread was interrupted, but shutdown was not requested",
- exception));
- }
- }
- this.listener
- .info("ResourceChangeNotification scanner has stopped");
- }
- }
- }
+ public void run() {
+ synchronized ( this ) {
+ if ( this.scan ) {
+ this.listener.info( "ResourceChangeNotification scanner has started" );
+ }
+ while ( this.scan ) {
+ Exception exception = null;
+ // System.out.println( "BEFORE : sync this.resources" );
+ synchronized ( this.resources ) {
+ // System.out.println( "DURING : sync this.resources" );
+ // lock the resources, as we don't want this modified
+ // while processing
+ this.scanner.scan();
+ }
+ // System.out.println( "AFTER : SCAN" );
+ try {
+ this.listener.debug( "ResourceChangeScanner thread is waiting for " + this.interval + " seconds." );
+ wait( this.interval * 1000 );
+ } catch ( InterruptedException e ) {
+ exception = e;
+ }
+
+ if ( this.scan && exception != null ) {
+ this.listener.exception( new RuntimeException( "ResourceChangeNotification ChangeSet scanning thread was interrupted, but shutdown was not requested",
+ exception ) );
+ }
+ }
+ this.listener.info( "ResourceChangeNotification scanner has stopped" );
+ }
+ }
+ }
}
\ No newline at end of file
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-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -32,6 +32,7 @@
import org.drools.common.BinaryHeapQueueAgendaGroup;
import org.drools.common.DefaultAgenda;
import org.drools.common.DefaultFactHandle;
+import org.drools.common.DisconnectedWorkingMemoryEntryPoint;
import org.drools.common.EqualityKey;
import org.drools.common.InternalAgendaGroup;
import org.drools.common.InternalFactHandle;
@@ -55,8 +56,7 @@
import org.drools.reteoo.BetaMemory;
import org.drools.reteoo.BetaNode;
import org.drools.reteoo.EntryPointNode;
-import org.drools.reteoo.InitialFactHandle;
-import org.drools.reteoo.InitialFactHandleDummyObject;
+import org.drools.reteoo.InitialFactImpl;
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.LeftTupleSink;
import org.drools.reteoo.NodeTypeEnums;
@@ -74,6 +74,7 @@
import org.drools.rule.Package;
import org.drools.rule.Rule;
import org.drools.runtime.Environment;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
import org.drools.spi.Activation;
import org.drools.spi.AgendaGroup;
import org.drools.spi.FactHandleFactory;
@@ -170,9 +171,11 @@
FactHandleFactory handleFactory = context.ruleBase.newFactHandleFactory( context.readInt(),
context.readLong() );
- InitialFactHandle initialFactHandle = new InitialFactHandle( new DefaultFactHandle( context.readInt(), //id
- new InitialFactHandleDummyObject(),
- context.readLong() ) ); //recency
+ InternalFactHandle initialFactHandle = new DefaultFactHandle( context.readInt(), //id
+ InitialFactImpl.getInstance(),
+ context.readLong(),
+ null);
+
context.handles.put( initialFactHandle.getId(),
initialFactHandle );
@@ -191,6 +194,7 @@
config,
agenda,
environment );
+ initialFactHandle.setEntryPoint( session.getEntryPoints().get( EntryPoint.DEFAULT.getEntryPointId() ) );
// RuleFlowGroups need to reference the session
for ( RuleFlowGroup group : agenda.getRuleFlowGroupsMap().values() ) {
@@ -363,16 +367,20 @@
int strategyIndex = context.stream.readInt();
ObjectMarshallingStrategy strategy = context.resolverStrategyFactory.getStrategy( strategyIndex );
Object object = strategy.read( context.stream );
+
+ WorkingMemoryEntryPoint entryPoint = null;
+ if(context.readBoolean()){
+ String entryPointId = context.readUTF();
+ if(entryPointId != null && !entryPointId.equals("")){
+ entryPoint = context.wm.getEntryPoints().get(entryPointId);
+ }
+ }
InternalFactHandle handle = new DefaultFactHandle( id,
object,
- recency );
- if(context.readBoolean()){
- String entryPoint = context.readUTF();
- if(entryPoint != null && !entryPoint.equals("")){
- handle.setEntryPoint(context.wm.getEntryPoints().get(entryPoint));
- }
- }
+ recency,
+ entryPoint );
+
return handle;
}
@@ -583,7 +591,8 @@
long recency = stream.readLong();
InternalFactHandle handle = new DefaultFactHandle( id,
parentLeftTuple,
- recency );
+ recency,
+ context.wm.getEntryPoints().get( EntryPoint.DEFAULT.getEntryPointId() ) );
memory.put( parentLeftTuple, handle );
readRightTuples( handle, context );
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-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -52,6 +52,7 @@
import org.drools.process.instance.timer.TimerInstance;
import org.drools.process.instance.timer.TimerManager;
import org.drools.reteoo.BetaNode;
+import org.drools.reteoo.InitialFactImpl;
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.LeftTupleSink;
import org.drools.reteoo.NodeTypeEnums;
@@ -342,7 +343,7 @@
ObjectOutputStream stream = context.stream;
InternalRuleBase ruleBase = context.ruleBase;
- ObjectTypeNode initialFactNode = ruleBase.getRete().getEntryPointNode( EntryPoint.DEFAULT ).getObjectTypeNodes().get( new ClassObjectType( InitialFact.class ) );
+ ObjectTypeNode initialFactNode = ruleBase.getRete().getEntryPointNode( EntryPoint.DEFAULT ).getObjectTypeNodes().get( new ClassObjectType( InitialFactImpl.class ) );
// do we write the fact to the objecttypenode memory
if ( initialFactNode != null ) {
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-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -594,7 +594,8 @@
final InternalFactHandle handle = workingMemory.getFactHandleFactory().newFactHandle( result,
workingMemory.getObjectTypeConfigurationRegistry().getObjectTypeConf( context.getEntryPoint(),
result ),
- workingMemory ); // so far, result is not an event
+ workingMemory,
+ null ); // so far, result is not an event
accctx.result = new RightTuple( handle,
this );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -129,7 +129,8 @@
final InternalFactHandle handle = workingMemory.getFactHandleFactory().newFactHandle( object,
null, // set this to null, otherwise it uses the driver fact's entrypoint
- workingMemory );
+ workingMemory,
+ null );
RightTuple rightTuple = new RightTuple( handle,
null );
@@ -216,7 +217,8 @@
// new match, propagate assert
final InternalFactHandle handle = workingMemory.getFactHandleFactory().newFactHandle( object,
null, // set this to null, otherwise it uses the driver fact's entrypoint
- workingMemory );
+ workingMemory,
+ null );
rightTuple = new RightTuple( handle,
null );
} else {
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/InitialFactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/InitialFactHandle.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/InitialFactHandle.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -1,99 +0,0 @@
-/**
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.reteoo;
-
-import org.drools.common.DefaultFactHandle;
-import org.drools.common.InternalFactHandle;
-
-public class InitialFactHandle extends DefaultFactHandle {
- /**
- *
- */
- private static final long serialVersionUID = 400L;
-
- private InternalFactHandle delegate;
-
- private Object object;
-
- public InitialFactHandle() {
-
- }
-
- public InitialFactHandle(final InternalFactHandle delegate) {
- super();
- this.delegate = delegate;
- this.object = InitialFactImpl.getInstance();
- }
-
- // ----------------------------------------------------------------------
- // Instance members
- // ----------------------------------------------------------------------
-
- /**
- * @see Object
- */
- public boolean equals(final Object object) {
- return this.delegate.equals( object );
- }
-
- /**
- * @see Object
- */
- public int hashCode() {
- return this.delegate.hashCode();
- }
-
- /**
- * @see Object
- */
- public String toString() {
- return toExternalForm();
- }
-
- public long getRecency() {
- return this.delegate.getRecency();
- }
-
- public void setRecency(final long recency) {
- this.delegate.setRecency( recency );
- }
-
- public int getId() {
- return this.delegate.getId();
- }
-
- public void invalidate() {
- this.delegate.invalidate();
- }
-
- public Object getObject() {
- return this.object;
- }
-
- public void setObject(final Object object) {
- // do nothign
- }
-
- public String toExternalForm() {
- return "InitialFact";
- }
-
- public InitialFactHandle clone() {
- return this;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/InitialFactHandleDummyObject.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/InitialFactHandleDummyObject.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/InitialFactHandleDummyObject.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -1,38 +0,0 @@
-/**
- * Copyright 2010 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- *
- */
-package org.drools.reteoo;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-public class InitialFactHandleDummyObject
- implements
- Externalizable {
- private static final long serialVersionUID = 400L;
-
- public void readExternal(ObjectInput in) throws IOException,
- ClassNotFoundException {
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- }
-}
\ No newline at end of file
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-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryElementNode.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -137,7 +137,8 @@
InternalFactHandle handle = workingMemory.getFactHandleFactory().newFactHandle( queryObject,
workingMemory.getObjectTypeConfigurationRegistry().getObjectTypeConf( EntryPoint.DEFAULT,
queryObject ),
- workingMemory );
+ workingMemory,
+ null );
workingMemory.insert( handle,
queryObject,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -24,6 +24,7 @@
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.rule.TypeDeclaration;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
import org.drools.spi.FactHandleFactory;
public class ReteooFactHandleFactory extends AbstractFactHandleFactory {
@@ -47,7 +48,8 @@
final Object object,
final long recency,
final ObjectTypeConf conf,
- final InternalWorkingMemory workingMemory) {
+ final InternalWorkingMemory workingMemory,
+ final WorkingMemoryEntryPoint wmEntryPoint) {
if ( conf != null && conf.isEvent() ) {
TypeDeclaration type = conf.getTypeDeclaration();
long timestamp;
@@ -71,11 +73,13 @@
object,
recency,
timestamp,
- duration );
+ duration,
+ wmEntryPoint );
} else {
return new DefaultFactHandle( id,
object,
- recency );
+ recency,
+ wmEntryPoint );
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -29,6 +29,7 @@
import org.drools.SessionConfiguration;
import org.drools.StatefulSession;
import org.drools.common.InternalAgenda;
+import org.drools.common.InternalFactHandle;
import org.drools.common.InternalRuleBase;
import org.drools.concurrent.AssertObject;
import org.drools.concurrent.AssertObjects;
@@ -87,7 +88,7 @@
final InternalRuleBase ruleBase,
final ExecutorService executorService,
final FactHandleFactory handleFactory,
- final InitialFactHandle initialFactHandle,
+ final InternalFactHandle initialFactHandle,
final long propagationContext,
final SessionConfiguration config,
final InternalAgenda agenda,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -29,6 +29,7 @@
import org.drools.StatelessSession;
import org.drools.StatelessSessionResult;
import org.drools.base.MapGlobalResolver;
+import org.drools.common.InternalFactHandle;
import org.drools.common.InternalRuleBase;
import org.drools.common.InternalStatelessSession;
import org.drools.common.InternalWorkingMemory;
@@ -115,11 +116,11 @@
wm.setGlobalResolver( this.globalResolver );
- final InitialFactHandleDummyObject initialFact = new InitialFactHandleDummyObject();
- final InitialFactHandle handle = new InitialFactHandle( wm.getFactHandleFactory().newFactHandle( initialFact,
- wm.getObjectTypeConfigurationRegistry().getObjectTypeConf( EntryPoint.DEFAULT,
- initialFact ),
- wm ) );
+ final InternalFactHandle handle = wm.getFactHandleFactory().newFactHandle( InitialFactImpl.getInstance(),
+ wm.getObjectTypeConfigurationRegistry().getObjectTypeConf( EntryPoint.DEFAULT,
+ InitialFactImpl.getInstance() ),
+ wm,
+ wm);
wm.queueWorkingMemoryAction( new WorkingMemoryReteAssertAction( handle,
false,
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-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -125,7 +125,7 @@
public ReteooWorkingMemory(final int id,
final InternalRuleBase ruleBase,
final FactHandleFactory handleFactory,
- final InitialFactHandle initialFactHandle,
+ final InternalFactHandle initialFactHandle,
final long propagationContext,
final SessionConfiguration config,
final InternalAgenda agenda,
@@ -174,6 +174,7 @@
InternalFactHandle handle = this.handleFactory.newFactHandle( queryObject,
this.getObjectTypeConfigurationRegistry().getObjectTypeConf( EntryPoint.DEFAULT,
queryObject ),
+ this,
this );
insert( handle,
@@ -226,6 +227,7 @@
InternalFactHandle handle = this.handleFactory.newFactHandle( queryObject,
this.getObjectTypeConfigurationRegistry().getObjectTypeConf( EntryPoint.DEFAULT,
queryObject ),
+ this,
this );
insert( handle,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -122,7 +122,8 @@
final InternalFactHandle handle = workingMemory.getFactHandleFactory().newFactHandle( tuple,
workingMemory.getObjectTypeConfigurationRegistry().getObjectTypeConf( context.getEntryPoint(),
tuple ),
- workingMemory );
+ workingMemory,
+ null );
if ( this.tupleMemoryEnabled ) {
final ObjectHashMap memory = (ObjectHashMap) workingMemory.getNodeMemory( this );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamHelper.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamHelper.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -33,7 +33,6 @@
import org.drools.command.runtime.rule.RetractCommand;
import org.drools.command.runtime.rule.ModifyCommand.SetterImpl;
import org.drools.common.DefaultFactHandle;
-import org.drools.common.DisconnectedFactHandle;
import org.drools.runtime.impl.ExecutionResultImpl;
import org.drools.runtime.rule.impl.FlatQueryResults;
import org.drools.runtime.rule.impl.NativeQueryResults;
@@ -82,7 +81,5 @@
NativeQueryResults.class );
xstream.alias( "fact-handle",
DefaultFactHandle.class );
- xstream.alias( "fact-handle",
- DisconnectedFactHandle.class );
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamJSon.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamJSon.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamJSon.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -42,7 +42,7 @@
import org.drools.command.runtime.rule.ModifyCommand;
import org.drools.command.runtime.rule.QueryCommand;
import org.drools.command.runtime.rule.RetractCommand;
-import org.drools.common.DisconnectedFactHandle;
+import org.drools.common.DefaultFactHandle;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.impl.ExecutionResultImpl;
import org.drools.runtime.rule.FactHandle;
@@ -185,7 +185,7 @@
}
reader.moveUp();
}
- return new RowItemContainer( new DisconnectedFactHandle( externalForm ),
+ return new RowItemContainer( new DefaultFactHandle( externalForm ),
object );
}
@@ -361,7 +361,7 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext unmarshallingContext) {
reader.moveDown();
- DisconnectedFactHandle factHandle = new DisconnectedFactHandle( reader.getValue() );
+ DefaultFactHandle factHandle = new DefaultFactHandle( reader.getValue() );
reader.moveUp();
return factHandle;
}
@@ -458,7 +458,7 @@
reader.moveDown();
String name = reader.getNodeName();
if ( "fact-handle".equals( name ) ) {
- factHandle = new DisconnectedFactHandle( reader.getValue() );
+ factHandle = new DefaultFactHandle( reader.getValue() );
} else if ( "out-identifier".equals( "out-identifier" ) ) {
outIdentifier = reader.getValue();
}
@@ -497,7 +497,7 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
reader.moveDown();
- FactHandle factHandle = new DisconnectedFactHandle( reader.getValue() );
+ FactHandle factHandle = new DefaultFactHandle( reader.getValue() );
reader.moveUp();
Command cmd = CommandFactory.newRetract( factHandle );
@@ -539,7 +539,7 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
reader.moveDown();
- FactHandle factHandle = new DisconnectedFactHandle( reader.getValue() );
+ FactHandle factHandle = new DefaultFactHandle( reader.getValue() );
reader.moveUp();
List<Setter> setters = new ArrayList();
@@ -747,7 +747,7 @@
reader.moveUp();
facts.put( identifier,
- new DisconnectedFactHandle( externalForm ) );
+ new DefaultFactHandle( externalForm ) );
} else if ( reader.getNodeName().equals( "fact-handles" ) ) {
List list = new ArrayList();
String identifier = null;
@@ -757,7 +757,7 @@
reader.moveUp();
while ( reader.hasMoreChildren() ) {
reader.moveDown();
- FactHandle factHandle = new DisconnectedFactHandle( (String) readItem( reader,
+ FactHandle factHandle = new DefaultFactHandle( (String) readItem( reader,
context,
null ) );
list.add( factHandle );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -44,7 +44,7 @@
import org.drools.command.runtime.rule.ModifyCommand;
import org.drools.command.runtime.rule.QueryCommand;
import org.drools.command.runtime.rule.RetractCommand;
-import org.drools.common.DisconnectedFactHandle;
+import org.drools.common.DefaultFactHandle;
import org.drools.rule.Declaration;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.impl.ExecutionResultImpl;
@@ -204,7 +204,7 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
- FactHandle factHandle = new DisconnectedFactHandle( reader.getAttribute( "fact-handle" ) );
+ FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
List<Setter> setters = new ArrayList();
while ( reader.hasMoreChildren() ) {
@@ -245,7 +245,7 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
- FactHandle factHandle = new DisconnectedFactHandle( reader.getAttribute( "fact-handle" ) );
+ FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
Command cmd = CommandFactory.newRetract( factHandle );
@@ -396,7 +396,7 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
- FactHandle factHandle = new DisconnectedFactHandle( reader.getAttribute( "fact-handle" ) );
+ FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
String identifierOut = reader.getAttribute( "out-identifier" );
GetObjectCommand cmd = new GetObjectCommand( factHandle );
@@ -856,13 +856,13 @@
} else if ( reader.getNodeName().equals( "fact-handle" ) ) {
String identifier = reader.getAttribute( "identifier" );
facts.put( identifier,
- new DisconnectedFactHandle( reader.getAttribute( "external-form" ) ) );
+ new DefaultFactHandle( reader.getAttribute( "external-form" ) ) );
} else if ( reader.getNodeName().equals( "fact-handles" ) ) {
String identifier = reader.getAttribute( "identifier" );
List<FactHandle> list = new ArrayList();
while ( reader.hasMoreChildren() ) {
reader.moveDown();
- list.add( new DisconnectedFactHandle( reader.getAttribute( "external-form" ) ) );
+ list.add( new DefaultFactHandle( reader.getAttribute( "external-form" ) ) );
reader.moveUp();
}
facts.put( identifier,
@@ -968,7 +968,7 @@
reader.moveUp();
reader.moveDown();
- FactHandle handle = new DisconnectedFactHandle( reader.getAttribute( "external-form" ) );
+ FactHandle handle = new DefaultFactHandle( reader.getAttribute( "external-form" ) );
reader.moveUp();
objects.add( object );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -20,6 +20,7 @@
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.reteoo.ObjectTypeConf;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
/**
* Factory Interface to return new <code>FactHandle</code>s
@@ -35,7 +36,7 @@
*
* @return The handle.
*/
- public InternalFactHandle newFactHandle(Object object, ObjectTypeConf conf, InternalWorkingMemory workingMemory );
+ public InternalFactHandle newFactHandle(Object object, ObjectTypeConf conf, InternalWorkingMemory workingMemory, WorkingMemoryEntryPoint wmEntryPoint );
/**
* Increases the recency of the FactHandle
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/DroolsJaxbContextHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/DroolsJaxbContextHelper.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/DroolsJaxbContextHelper.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -38,7 +38,6 @@
import org.drools.command.runtime.rule.RetractCommand;
import org.drools.command.runtime.rule.ModifyCommand.SetterImpl;
import org.drools.common.DefaultFactHandle;
-import org.drools.common.DisconnectedFactHandle;
import org.drools.runtime.impl.ExecutionResultImpl;
import org.drools.runtime.rule.impl.FlatQueryResults;
@@ -65,7 +64,6 @@
ExecutionResultImpl.class.getName(),
DefaultFactHandle.class.getName(),
JaxbListWrapper.class.getName(),
- DisconnectedFactHandle.class.getName(),
FlatQueryResults.class.getName(),
CompleteWorkItemCommand.class.getName(),
GetObjectsCommand.class.getName()
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -25,7 +25,7 @@
import javax.xml.bind.annotation.adapters.XmlAdapter;
import org.drools.FactHandle;
-import org.drools.common.DisconnectedFactHandle;
+import org.drools.common.InternalFactHandle;
import org.drools.runtime.rule.impl.FlatQueryResults;
import org.drools.runtime.rule.impl.NativeQueryResults;
@@ -45,10 +45,10 @@
if ( obj instanceof NativeQueryResults ) {
obj = new FlatQueryResults( ((NativeQueryResults )obj).getResults() );
- } else if (obj instanceof FactHandle && !(obj instanceof DisconnectedFactHandle)) {
- obj = new DisconnectedFactHandle(((FactHandle) obj).toExternalForm());
+ } else if (obj instanceof FactHandle ) {
+ obj = ((InternalFactHandle)obj).toExternalForm();
} else if (List.class.isAssignableFrom(vClass) && !JaxbListWrapper.class.equals(vClass)) {
- obj = new JaxbListWrapper( ((List<?>) obj).toArray( new Object[((List<?>) obj).size()]) );;
+ obj = new JaxbListWrapper( ((List<?>) obj).toArray( new Object[((List<?>) obj).size()]) );;
}
ret.add(new JaxbPair(entry.getKey(), obj));
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/TemporalEvaluatorFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/TemporalEvaluatorFactoryTest.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/TemporalEvaluatorFactoryTest.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -48,6 +48,7 @@
import org.drools.base.evaluators.DuringEvaluatorDefinition;
import org.drools.base.evaluators.EvaluatorDefinition;
import org.drools.base.evaluators.EvaluatorRegistry;
+import org.drools.common.DisconnectedWorkingMemoryEntryPoint;
import org.drools.common.EventFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.rule.Declaration;
@@ -77,17 +78,20 @@
"foo",
1,
1,
- 2 );
+ 2,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ));
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
4,
- 3 );
+ 3,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
5,
- 2 );
+ 2,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{drool, "after", foo, Boolean.TRUE},
@@ -162,17 +166,20 @@
"foo",
1,
1,
- 2 );
+ 2,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
2,
- 2 );
+ 2,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
5,
- 3 );
+ 3,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{foo, "before", drool, Boolean.TRUE},
@@ -247,22 +254,26 @@
"foo",
1,
2,
- 3 );
+ 3,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
2,
- 3 );
+ 3,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
2,
- 2 );
+ 2,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle mole = new EventFactHandle( 1,
"mole",
1,
1,
- 2 );
+ 2,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{foo, "coincides", bar, Boolean.TRUE},
@@ -309,22 +320,26 @@
"foo",
1,
2,
- 10 );
+ 10,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
4,
- 7 );
+ 7,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
1,
- 5 );
+ 5,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle mole = new EventFactHandle( 1,
"mole",
1,
7,
- 6 );
+ 6,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{foo, "during", bar, Boolean.FALSE},
@@ -374,22 +389,26 @@
"foo",
1,
2,
- 10 );
+ 10,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
4,
- 7 );
+ 7,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
1,
- 5 );
+ 5,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle mole = new EventFactHandle( 1,
"mole",
1,
7,
- 6 );
+ 6,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{bar, "includes", foo, Boolean.FALSE},
@@ -439,22 +458,26 @@
"foo",
1,
2,
- 10 );
+ 10,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
5,
- 7 );
+ 7,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
2,
- 10 );
+ 10,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle mole = new EventFactHandle( 1,
"mole",
1,
7,
- 6 );
+ 6,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{bar, "finishes", foo, Boolean.TRUE},
@@ -491,22 +514,26 @@
"foo",
1,
2,
- 10 );
+ 10,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
5,
- 7 );
+ 7,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
2,
- 10 );
+ 10,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle mole = new EventFactHandle( 1,
"mole",
1,
7,
- 6 );
+ 6,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{foo, "finishedby", bar, Boolean.TRUE},
@@ -543,22 +570,26 @@
"foo",
1,
2,
- 10 );
+ 10,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
2,
- 7 );
+ 7,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
2,
- 10 );
+ 10,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle mole = new EventFactHandle( 1,
"mole",
1,
1,
- 4 );
+ 4,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{bar, "starts", foo, Boolean.TRUE},
@@ -595,22 +626,26 @@
"foo",
1,
2,
- 10 );
+ 10,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
2,
- 7 );
+ 7,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
2,
- 10 );
+ 10,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle mole = new EventFactHandle( 1,
"mole",
1,
1,
- 6 );
+ 6,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{foo, "startedby", bar, Boolean.TRUE},
@@ -647,22 +682,26 @@
"foo",
1,
2,
- 8 );
+ 8,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
10,
- 7 );
+ 7,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
8,
- 5 );
+ 5,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle mole = new EventFactHandle( 1,
"mole",
1,
11,
- 4 );
+ 4,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{foo, "meets", bar, Boolean.TRUE},
@@ -695,22 +734,26 @@
"foo",
1,
10,
- 8 );
+ 8,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
2,
- 8 );
+ 8,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
5,
- 3 );
+ 3,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle mole = new EventFactHandle( 1,
"mole",
1,
4,
- 7 );
+ 7,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{foo, "metby", bar, Boolean.TRUE},
@@ -743,22 +786,26 @@
"foo",
1,
2,
- 8 );
+ 8,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
7,
- 7 );
+ 7,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
11,
- 5 );
+ 5,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle mole = new EventFactHandle( 1,
"mole",
1,
5,
- 5 );
+ 5,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{foo, "overlaps", bar, Boolean.TRUE},
@@ -805,22 +852,26 @@
"foo",
1,
7,
- 8 );
+ 8,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle bar = new EventFactHandle( 2,
"bar",
1,
2,
- 8 );
+ 8,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle drool = new EventFactHandle( 1,
"drool",
1,
11,
- 5 );
+ 5,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
EventFactHandle mole = new EventFactHandle( 1,
"mole",
1,
7,
- 3 );
+ 3,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
final Object[][] data = {
{foo, "overlappedby", bar, Boolean.TRUE},
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/EqualityKeyTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/EqualityKeyTest.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/EqualityKeyTest.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -25,13 +25,13 @@
public void test1() {
ReteooFactHandleFactory factory = new ReteooFactHandleFactory();
- InternalFactHandle ch1 = factory.newFactHandle( new Cheese ("c", 10), null, null );
+ InternalFactHandle ch1 = factory.newFactHandle( new Cheese ("c", 10), null, null, null );
EqualityKey key = new EqualityKey( ch1 );
assertSame( ch1, key.getFactHandle() );
assertNull( key.getOtherFactHandle() );
- InternalFactHandle ch2 = factory.newFactHandle( new Cheese ("c", 10), null, null );
+ InternalFactHandle ch2 = factory.newFactHandle( new Cheese ("c", 10), null, null, null );
key.addFactHandle( ch2 );
assertEquals( 1, key.getOtherFactHandle().size() );
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-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -129,14 +129,16 @@
this.node.assertLeftTuple( new LeftTuple( this.workingMemory.getFactHandleFactory().newFactHandle( "cheese",
null,
- null ),
+ null,
+ workingMemory ),
null,
true ),
this.context,
this.workingMemory );
this.node.assertLeftTuple( new LeftTuple( this.workingMemory.getFactHandleFactory().newFactHandle( "other cheese",
null,
- null ),
+ null,
+ workingMemory ),
null,
true ),
this.context,
@@ -164,7 +166,8 @@
public void testAssertTuple() {
final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese",
null,
- null );
+ null,
+ workingMemory );
final LeftTuple tuple0 = new LeftTuple( f0,
null,
true );
@@ -184,7 +187,8 @@
// assert tuple, should add left memory
final DefaultFactHandle f1 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "other cheese",
null,
- null );
+ null,
+ workingMemory );
final LeftTuple tuple1 = new LeftTuple( f1,
null,
@@ -212,10 +216,12 @@
public void testAssertTupleWithObjects() {
final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese",
null,
- null );
+ null,
+ workingMemory );
final DefaultFactHandle f1 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "other cheese",
null,
- null );
+ null,
+ workingMemory);
final LeftTuple tuple0 = new LeftTuple( f0,
null,
@@ -269,6 +275,7 @@
public void testRetractTuple() {
final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese",
null,
+ null,
null );
final LeftTuple tuple0 = new LeftTuple( f0,
@@ -358,9 +365,11 @@
final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese",
null,
+ null,
null );
final DefaultFactHandle f1 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "other cheese",
null,
+ null,
null );
final LeftTuple tuple0 = new LeftTuple( f0,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -34,6 +34,7 @@
import org.drools.base.evaluators.Operator;
import org.drools.base.field.LongFieldImpl;
import org.drools.base.field.ObjectFieldImpl;
+import org.drools.common.DisconnectedWorkingMemoryEntryPoint;
import org.drools.common.EmptyBetaConstraints;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
@@ -384,7 +385,8 @@
InternalFactHandle handle = new ReteooFactHandleFactory().newFactHandle( new Cheese(),
null,
- null );
+ null,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ) );
try {
ad.propagateAssertObject( handle,
null,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/DefaultFactHandleFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/DefaultFactHandleFactoryTest.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/DefaultFactHandleFactoryTest.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -43,21 +43,21 @@
*/
public void testNewFactHandle() {
final ReteooFactHandleFactory factory = new ReteooFactHandleFactory();
- DefaultFactHandle handle = (DefaultFactHandle) factory.newFactHandle( "cheese", null, null );
+ DefaultFactHandle handle = (DefaultFactHandle) factory.newFactHandle( "cheese", null, null, null );
assertEquals( 0,
handle.getId() );
assertEquals( 0,
handle.getRecency() );
// issue new handle
- handle = (DefaultFactHandle) factory.newFactHandle( "cheese", null, null );
+ handle = (DefaultFactHandle) factory.newFactHandle( "cheese", null, null, null );
assertEquals( 1,
handle.getId() );
assertEquals( 1,
handle.getRecency() );
// issue new handle, under a different reference so we can destroy later
- final DefaultFactHandle handle2 = (DefaultFactHandle) factory.newFactHandle( "cheese", null, null );
+ final DefaultFactHandle handle2 = (DefaultFactHandle) factory.newFactHandle( "cheese", null, null, null );
assertEquals( 2,
handle2.getId() );
assertEquals( 2,
@@ -69,7 +69,7 @@
handle.getRecency() );
// issue new handle and make sure recency is still inline
- handle = (DefaultFactHandle) factory.newFactHandle( "cheese", null, null );
+ handle = (DefaultFactHandle) factory.newFactHandle( "cheese", null, null, null );
assertEquals( 3,
handle.getId() );
assertEquals( 4,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FactHandleTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FactHandleTest.java 2010-07-28 04:16:04 UTC (rev 34240)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FactHandleTest.java 2010-07-28 04:34:31 UTC (rev 34241)
@@ -35,6 +35,7 @@
import junit.framework.TestCase;
import org.drools.common.DefaultFactHandle;
+import org.drools.common.DisconnectedWorkingMemoryEntryPoint;
public class FactHandleTest extends TestCase {
/*
@@ -55,7 +56,8 @@
public void testFactHandleImpllonglong() {
final DefaultFactHandle f0 = new DefaultFactHandle( 134,
"cheese",
- 678 );
+ 678,
+ new DisconnectedWorkingMemoryEntryPoint( "DEFAULT" ));
assertEquals( 134,
f0.getId() );
assertEquals( 678,
More information about the jboss-svn-commits
mailing list