From: <jbo...@li...> - 2006-05-08 03:15:37
|
Author: mar...@jb... Date: 2006-05-07 23:15:30 -0400 (Sun, 07 May 2006) New Revision: 4121 Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java Log: -TerminalNode should be stateless so moved cached xor group to TerminalNode 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 2006-05-08 02:55:31 UTC (rev 4120) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java 2006-05-08 03:15:30 UTC (rev 4121) @@ -53,8 +53,8 @@ /** The rule to invoke upon match. */ private final Rule rule; private final TupleSource tupleSource; - private XorGroup xorGroup; + // ------------------------------------------------------------ // Constructors // ------------------------------------------------------------ @@ -133,11 +133,12 @@ this.rule ); if ( this.rule.getXorGroup() != null ) { + final TerminalNodeMemory memory = (TerminalNodeMemory) workingMemory.getNodeMemory( this ); // Lazy cache xorGroup - if ( this.xorGroup == null ) { - this.xorGroup = workingMemory.getAgenda().getXorGroup( this.rule.getXorGroup() ); + if ( memory.getXorGroup() == null ) { + memory.setXorGroup( workingMemory.getAgenda().getXorGroup( this.rule.getXorGroup() ) ); } - this.xorGroup.addActivation( item ); + memory.getXorGroup().addActivation( item ); } agenda.scheduleItem( item ); @@ -184,10 +185,10 @@ if ( this.rule.getXorGroup() != null ) { // Lazy cache xorGroup - if ( this.xorGroup == null ) { - this.xorGroup = workingMemory.getAgenda().getXorGroup( this.rule.getXorGroup() ); + if ( memory.getXorGroup() == null ) { + memory.setXorGroup( workingMemory.getAgenda().getXorGroup( this.rule.getXorGroup() ) ); } - this.xorGroup.addActivation( item ); + memory.getXorGroup().addActivation( item ); } // Makes sure the Lifo is added to the AgendaGroup priority queue @@ -325,6 +326,8 @@ class TerminalNodeMemory { private AgendaGroupImpl agendaGroup; + + private XorGroup xorGroup; public AgendaGroupImpl getAgendaGroup() { return this.agendaGroup; @@ -333,5 +336,15 @@ public void setAgendaGroup(final AgendaGroupImpl agendaGroup) { this.agendaGroup = agendaGroup; } + + public XorGroup getXorGroup() { + return this.xorGroup; + } + + public void setXorGroup(XorGroup xorGroup) { + this.xorGroup = xorGroup; + } + + } } |