final PropagationContext context,
final InternalWorkingMemory workingMemory) {
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
memory.getTupleMemory().add( leftTuple );
final LinkedList list = new LinkedList();
this.betaConstraints.updateFromTuple( workingMemory,
leftTuple );
for ( final java.util.Iterator it = this.dataProvider.getResults( leftTuple,
workingMemory,
context ); it.hasNext(); ) {
final Object object = it.next();
if ( this.alphaConstraints != null ) {
// First alpha node filters
boolean isAllowed = true;
for ( int i = 0, length = this.alphaConstraints.length; i < length; i++ ) {
if ( !this.alphaConstraints[i].isAllowed( object,
workingMemory ) ) {
// next iteration
isAllowed = false;
break;
}
}
if ( !isAllowed ) {
continue;
}
}
if ( this.betaConstraints.isAllowedCachedLeft( object ) ) {
final InternalFactHandle handle = workingMemory.getFactHandleFactory().newFactHandle( object );
list.add( new LinkedListEntry( handle ) );
this.sink.propagateAssertTuple( leftTuple,
handle,
context,
workingMemory );
}
}
if ( !list.isEmpty() ) {
memory.getCreatedHandles().put( leftTuple,
list );
}
}