__log.debug("ActivityRecovery: Retrying invoke activity " + _self.aId);
Date future = new Date(new Date().getTime() +
(failureHandling == null ? 0L : failureHandling.retryDelay * 1000));
final TimerResponseChannel timerChannel = newChannel(TimerResponseChannel.class);
getBpelRuntimeContext().registerTimer(timerChannel, future);
object(false, new TimerResponseChannelListener(timerChannel) {
private static final long serialVersionUID = -261911108068231376L;
public void onTimeout() {
instance(INVOKE.this);
}
public void onCancel() {
INVOKE.this.requireRecovery();
}
}.or(new TerminationChannelListener(_self.self) {
private static final long serialVersionUID = -4416795170896911290L;
public void terminate() {
_self.parent.completed(null, CompensationHandler.emptySet());
object(new TimerResponseChannelListener(timerChannel) {
private static final long serialVersionUID = 4822348066868313717L;
public void onTimeout() { }
public void onCancel() { }
});
}