final PropagationContext context,
final InternalWorkingMemory workingMemory) {
final FromMemory memory = (FromMemory) workingMemory.getNodeMemory( this );
memory.betaMemory.getTupleMemory().add( leftTuple );
final LinkedList list = new LinkedList();
this.betaConstraints.updateFromTuple( memory.betaMemory.getContext(),
workingMemory,
leftTuple );
for ( final java.util.Iterator it = this.dataProvider.getResults( leftTuple,
workingMemory,
context,
memory.providerContext ); 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,
memory.alphaContexts[i] ) ) {
// next iteration
isAllowed = false;
break;
}
}
if ( !isAllowed ) {
continue;
}
}
if ( this.betaConstraints.isAllowedCachedLeft( memory.betaMemory.getContext(),
object ) ) {
final InternalFactHandle handle = workingMemory.getFactHandleFactory().newFactHandle( object );
list.add( new LinkedListEntry( handle ) );
this.sink.propagateAssertTuple( leftTuple,
handle,
context,
workingMemory );
}
}
this.betaConstraints.resetTuple( memory.betaMemory.getContext() );
if ( !list.isEmpty() ) {
memory.betaMemory.getCreatedHandles().put( leftTuple,
list );
}
}