[jboss-svn-commits] JBL Code SVN: r18912 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/reteoo and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Mar 12 22:07:39 EDT 2008
Author: tirelli
Date: 2008-03-12 22:07:39 -0400 (Wed, 12 Mar 2008)
New Revision: 18912
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BaseNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.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/LeftInputAdapterNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/BaseNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSource.java
Log:
Fixing OTN optimization
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BaseNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BaseNode.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BaseNode.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -55,7 +55,14 @@
public abstract void attach();
public abstract void attach(InternalWorkingMemory[] workingMemories);
-
+
+ /**
+ * A method that is called for all nodes whose network bellow them
+ * changed, after the change is complete, providing them with an oportunity
+ * for state update
+ */
+ public abstract void networkUpdated();
+
public void remove(RuleRemovalContext context,
ReteooBuilder builder,
BaseNode node,
@@ -93,6 +100,6 @@
}
public String toString() {
- return "[" + this.getClass().getName() + "(" + this.id + ")]";
+ return "[" + this.getClass().getSimpleName() + "(" + this.id + ")]";
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -109,10 +109,15 @@
* @see org.drools.reteoo.BaseNode#attach()
*/
public void attach() {
+ this.rightInput.addObjectSink( this );
this.leftInput.addTupleSink( this );
- this.rightInput.addObjectSink( this );
}
+ public void networkUpdated() {
+ this.rightInput.networkUpdated();
+ this.leftInput.networkUpdated();
+ }
+
public List getRules() {
final List list = new ArrayList();
@@ -145,12 +150,12 @@
PropagationContext.RULE_ADDITION,
null,
null );
+ this.rightInput.updateSink( this,
+ propagationContext,
+ workingMemory );
this.leftInput.updateSink( this,
propagationContext,
workingMemory );
- this.rightInput.updateSink( this,
- propagationContext,
- workingMemory );
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -113,6 +113,10 @@
}
}
+ public void networkUpdated() {
+ this.tupleSource.networkUpdated();
+ }
+
// ------------------------------------------------------------
// Instance methods
// ------------------------------------------------------------
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 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -155,6 +155,10 @@
}
}
+ public void networkUpdated() {
+ this.tupleSource.networkUpdated();
+ }
+
protected void doRemove(final RuleRemovalContext context,
final ReteooBuilder builder,
final BaseNode node,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -97,6 +97,10 @@
}
}
+ public void networkUpdated() {
+ this.objectSource.networkUpdated();
+ }
+
/**
* Takes the asserted <code>FactHandleImpl</code> received from the <code>ObjectSource</code> and puts it
* in a new <code>ReteTuple</code> before propagating to the <code>TupleSinks</code>
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -130,6 +130,10 @@
public abstract void updateSink(ObjectSink sink,
PropagationContext context,
InternalWorkingMemory workingMemory);
+
+ public void networkUpdated() {
+ this.objectSource.networkUpdated();
+ }
public ObjectSinkPropagator getSinkPropagator() {
return this.sink;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -27,6 +27,7 @@
import org.drools.reteoo.builder.BuildContext;
import org.drools.rule.Declaration;
import org.drools.rule.EntryPoint;
+import org.drools.rule.EvalCondition;
import org.drools.spi.Constraint;
import org.drools.spi.ObjectType;
import org.drools.spi.PropagationContext;
@@ -191,7 +192,6 @@
context,
workingMemory );
}
- this.skipOnModify = canSkipOnModify( this.sink.getSinks() );
}
/**
@@ -220,6 +220,10 @@
}
}
+ public void networkUpdated() {
+ this.skipOnModify = canSkipOnModify( this.sink.getSinks() );
+ }
+
/**
* OTN needs to override remove to avoid releasing the node ID, since OTN are
* never removed from the rulebase in the current implementation
@@ -318,6 +322,8 @@
hasConstraints = true;
} else if ( sinks[i] instanceof BetaNode && ((BetaNode) sinks[i]).getConstraints().length > 0 ) {
hasConstraints = this.usesDeclaration( ((BetaNode) sinks[i]).getConstraints() );
+ } else if ( sinks[i] instanceof EvalConditionNode ) {
+ hasConstraints = this.usesDeclaration( ((EvalConditionNode)sinks[i]).getCondition() );
}
if ( !hasConstraints && sinks[i] instanceof ObjectSource ) {
hasConstraints = !this.canSkipOnModify( ((ObjectSource) sinks[i]).getSinkPropagator().getSinks() );
@@ -348,6 +354,15 @@
return usesDecl;
}
+ private boolean usesDeclaration(final EvalCondition condition) {
+ boolean usesDecl = false;
+ final Declaration[] declarations = condition.getRequiredDeclarations();
+ for ( int j = 0; !usesDecl && j < declarations.length; j++ ) {
+ usesDecl = (declarations[j].getPattern().getObjectType() == this.objectType);
+ }
+ return usesDecl;
+ }
+
/**
* @return the entryPoint
*/
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -150,6 +150,10 @@
}
}
+ public void networkUpdated() {
+ this.tupleSource.networkUpdated();
+ }
+
protected void doRemove(final RuleRemovalContext context,
final ReteooBuilder builder,
final BaseNode node,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -167,6 +167,10 @@
throw new UnsupportedOperationException( "cannot call attach() from the root Rete node" );
}
+ public void networkUpdated() {
+ // nothing to do
+ }
+
protected void doRemove(final RuleRemovalContext context,
final ReteooBuilder builder,
final BaseNode node,
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 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -148,6 +148,10 @@
workingMemory );
}
}
+
+ public void networkUpdated() {
+ this.tupleSource.networkUpdated();
+ }
public void updateSink(final ObjectSink sink,
final PropagationContext context,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -432,6 +432,10 @@
}
}
+ public void networkUpdated() {
+ this.tupleSource.networkUpdated();
+ }
+
protected void doRemove(final RuleRemovalContext context,
final ReteooBuilder builder,
final BaseNode node,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -16,11 +16,13 @@
package org.drools.reteoo;
+import org.drools.common.NetworkNode;
+
/**
* A markup interface for terminal nodes
*
* @author etirelli
*/
-public interface TerminalNode {
+public interface TerminalNode extends NetworkNode {
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -181,6 +181,8 @@
((BaseNode) terminal).attach( context.getWorkingMemories() );
}
+ ((BaseNode) terminal).networkUpdated();
+
return terminal;
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -65,7 +65,7 @@
};
//workingMemory.addEventListener(listener );
- final InputStream is = getClass().getResourceAsStream( "/manners32.dat" );
+ final InputStream is = getClass().getResourceAsStream( "/manners128.dat" );
final List list = getInputObjects( is );
for ( final Iterator it = list.iterator(); it.hasNext(); ) {
final Object object = it.next();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/BaseNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/BaseNodeTest.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/BaseNodeTest.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -75,6 +75,12 @@
return true;
}
+ @Override
+ public void networkUpdated() {
+ // TODO Auto-generated method stub
+
+ }
+
}
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -159,4 +159,10 @@
}
+ @Override
+ public void networkUpdated() {
+ // TODO Auto-generated method stub
+
+ }
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSource.java 2008-03-13 02:04:10 UTC (rev 18911)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSource.java 2008-03-13 02:07:39 UTC (rev 18912)
@@ -64,4 +64,10 @@
}
+ @Override
+ public void networkUpdated() {
+ // TODO Auto-generated method stub
+
+ }
+
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list