/** * Special comparator that allows FactHandles to be keys, but always checks * like for like. */ public boolean equal(final Object o1, final Object o2) { if ( o1 instanceof InternalFactHandle ) { return ((InternalFactHandle) o1).getId() == ((InternalFactHandle) o2).getId(); } Object left = o1; final InternalFactHandle handle = ((InternalFactHandle) o2); return left == handle.getObject(); }
public void reverse(Object workingMemoryContext, Object context, Tuple leftTuple, InternalFactHandle handle, Declaration[] declarations, Declaration[] innerDeclarations, WorkingMemory workingMemory) throws Exception { final Object value = ((MVELAccumulatorFunctionContext) context).reverseSupport.remove( Integer.valueOf( handle.getId() ) ); this.function.reverse( ((MVELAccumulatorFunctionContext) context).context, value ); }
public void reverse(Object workingMemoryContext, Object context, Tuple leftTuple, InternalFactHandle handle, Declaration[] declarations, Declaration[] innerDeclarations, WorkingMemory workingMemory) throws Exception { final Object value = ((JavaAccumulatorFunctionContext) context).reverseSupport.remove( Integer.valueOf( handle.getId() ) ); this.function.reverse( ((JavaAccumulatorFunctionContext) context).context, value ); }
protected String toExternalString() { StringBuilder builder = new StringBuilder(); builder.append( String.format( "%08X", System.identityHashCode( this ) ) ).append( ":" ); int[] ids = new int[this.index+1]; LeftTuple entry = this; while( entry != null ) { ids[entry.getIndex()] = entry.getLastHandle().getId(); entry = entry.getParent(); } builder.append( Arrays.toString( ids ) ) .append( " sink=" ) .append( this.sink.getClass().getSimpleName() ) .append( "(" ).append( sink.getId() ).append( ")" ); return builder.toString(); }
/** * @see org.drools.event.WorkingMemoryEventListener */ public void objectInserted(final ObjectInsertedEvent event) { filterLogEvent( new ObjectLogEvent( LogEvent.INSERTED, ((InternalFactHandle) event.getFactHandle()).getId(), event.getObject().toString() ) ); }
public void removeLogicalDependency(final Activation activation, final LogicalDependency node, final PropagationContext context) { final InternalFactHandle handle = (InternalFactHandle) node.getJustified(); final BeliefSet beliefSet = (BeliefSet) this.justifiedMap.get( handle.getId() ); if ( beliefSet != null ) { beliefSystem.delete( node, beliefSet, context ); } }
/** * @see org.drools.event.WorkingMemoryEventListener */ public void objectUpdated(final ObjectUpdatedEvent event) { filterLogEvent( new ObjectLogEvent( LogEvent.UPDATED, ((InternalFactHandle) event.getFactHandle()).getId(), event.getObject().toString() ) ); }
public static int[] createTupleArray(final LeftTuple leftTuple) { int[] tuple = new int[leftTuple.size()]; // tuple iterations happens backwards int i = tuple.length; for( LeftTuple entry = leftTuple; entry != null && i > 0; entry = entry.getParent() ) { // have to decrement i before assignment tuple[--i] = entry.getLastHandle().getId(); } return tuple; }
/** * @see org.drools.event.WorkingMemoryEventListener */ public void objectRetracted(final ObjectRetractedEvent event) { filterLogEvent( new ObjectLogEvent( LogEvent.RETRACTED, ((InternalFactHandle) event.getFactHandle()).getId(), event.getOldObject().toString() ) ); }
public void write(MarshallerWriteContext context) throws IOException { context.writeShort( WorkingMemoryAction.WorkingMemoryReteExpireAction ); context.writeInt( this.factHandle.getId() ); context.writeInt( this.node.getId() ); }
public void write(MarshallerWriteContext context) throws IOException { context.writeShort( WorkingMemoryAction.LogicalRetractCallback ); context.writeInt( this.handle.getId() ); context.writeLong( this.context.getPropagationNumber() ); context.writeInt( context.terminalTupleMap.get( this.activation.getTuple() ) ); }
public int compare(org.drools.spi.Activation o1, org.drools.spi.Activation o2) { int result = o1.getRule().getName().compareTo(o2.getRule().getName()); if (result == 0) { LeftTuple t1 = o1.getTuple(); LeftTuple t2 = o2.getTuple(); while (result == 0 && t1 != null && t2 != null) { result = t1.getLastHandle().getId() - t2.getLastHandle().getId(); t1 = t1.getParent(); t2 = t2.getParent(); } } return result; } }
public static ProtobufMessages.Tuple createTuple( final LeftTuple leftTuple ) { ProtobufMessages.Tuple.Builder _tuple = ProtobufMessages.Tuple.newBuilder(); for( LeftTuple entry = leftTuple; entry != null ; entry = entry.getParent() ) { _tuple.addHandleId( entry.getLastHandle().getId() ); } return _tuple.build(); }
public ProtobufMessages.ActionQueue.Action serialize(MarshallerWriteContext context) { return ProtobufMessages.ActionQueue.Action.newBuilder() .setType( ProtobufMessages.ActionQueue.ActionType.EXPIRE ) .setExpire( ProtobufMessages.ActionQueue.Expire.newBuilder() .setHandleId( this.factHandle.getId() ) .setNodeId( this.node.getId() ) .build() ) .build(); }
public void write(JobContext jobCtx, MarshallerWriteContext outputCtx) throws IOException { outputCtx.writeShort( PersisterEnums.EXPIRE_TIMER ); // ExpireJob, no state ExpireJobContext ejobCtx = (ExpireJobContext) jobCtx; WorkingMemoryReteExpireAction expireAction = ejobCtx.getExpireAction(); outputCtx.writeInt( expireAction.getFactHandle().getId() ); outputCtx.writeUTF( expireAction.getNode().getEntryPoint().getEntryPointId() ); outputCtx.writeUTF( ((ClassObjectType) expireAction.getNode().getObjectType()).getClassType().getName() ); DefaultJobHandle jobHandle = (DefaultJobHandle) ejobCtx.getJobHandle(); PointInTimeTrigger trigger = (PointInTimeTrigger) jobHandle.getTimerJobInstance().getTrigger(); outputCtx.writeLong( trigger.hasNextFireTime().getTime() ); }
public ProtobufMessages.ActionQueue.Action serialize(MarshallerWriteContext context) { LogicalRetract _retract = ProtobufMessages.ActionQueue.LogicalRetract.newBuilder() .setHandleId( this.handle.getId() ) .setActivation( PersisterHelper.createActivation( this.activation.getRule().getPackageName(), this.activation.getRule().getName(), this.activation.getTuple() ) ) .build(); return ProtobufMessages.ActionQueue.Action.newBuilder() .setType( ProtobufMessages.ActionQueue.ActionType.LOGICAL_RETRACT ) .setLogicalRetract( _retract ) .build(); }