Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@
*/
public class RetryCronTriggerPersistenceDelegate implements TriggerPersistenceDelegate, StdJDBCConstants {

private static final String TTYPE_RETRY_CRON = "R_CRON";

private static final String COL_RETRIES_COUNT = "retries_count";

private static final String COL_MAX_ATTEMPTS = "max_attempts";
Expand Down Expand Up @@ -63,7 +61,7 @@ public void initialize(String theTablePrefix, String schedName) {

@Override
public String getHandledTriggerTypeDiscriminator() {
return TTYPE_RETRY_CRON;
return "R_CRON";
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
*/
package ru.finex.quartz.retry.trigger.impl;

import org.quartz.spi.OperableTrigger;

/**
*
* @author HOME
*/
public interface MisfireHandler {
void handleMisfire(OperableTrigger trigger, org.quartz.Calendar cal);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package ru.finex.quartz.retry.trigger.impl;

import lombok.extern.slf4j.Slf4j;

/**
*
* @author HOME
*/
@Slf4j
public class MisfireInsDefault extends MisfireInstruction{
private int misfireInstruction;

public MisfireInsDefault(int misfireInstruction) {
this.misfireInstruction = misfireInstruction;
}

@Override
public void getMisfireBehavior(RetryCronScheduleBuilder cb) {
log.warn("Unrecognized misfire policy {}. Derived builder will use the default cron " +
"trigger behavior (MISFIRE_INSTRUCTION_FIRE_ONCE_NOW)", misfireInstruction);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package ru.finex.quartz.retry.trigger.impl;

import java.util.Date;
import org.quartz.Calendar;
import org.quartz.spi.OperableTrigger;

/**
*
* @author HOME
*/
public class MisfireInsFireOnceNow extends MisfireInstruction implements MisfireHandler{

@Override
public void getMisfireBehavior(RetryCronScheduleBuilder cb){
cb.withMisfireHandlingInstructionFireAndProceed();
};

@Override
public void handleMisfire(OperableTrigger trigger, Calendar cal) {
trigger.setNextFireTime(new Date());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package ru.finex.quartz.retry.trigger.impl;

import org.quartz.Calendar;
import org.quartz.spi.OperableTrigger;

/**
*
* @author HOME
*/
public class MisfireInsIngnoreMisfirePolicy extends MisfireInstruction implements MisfireHandler{

@Override
public void getMisfireBehavior(RetryCronScheduleBuilder cb){
cb.withMisfireHandlingInstructionIgnoreMisfires();
};

@Override
public void handleMisfire(OperableTrigger trigger, Calendar cal) {
// No action needed for IGNORE_MISFIRE_POLICY
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package ru.finex.quartz.retry.trigger.impl;

import java.util.Date;
import org.quartz.Calendar;
import org.quartz.spi.OperableTrigger;

/**
*
* @author HOME
*/
public class MisfireInstDoNothing extends MisfireInstruction implements MisfireHandler{

@Override
public void getMisfireBehavior(RetryCronScheduleBuilder cb){
cb.withMisfireHandlingInstructionDoNothing();
};

@Override
public void handleMisfire(OperableTrigger trigger, Calendar cal) {
Date newFireTime = trigger.getFireTimeAfter(new Date());
while (newFireTime != null && cal != null && !cal.isTimeIncluded(newFireTime.getTime())) {
newFireTime = trigger.getFireTimeAfter(newFireTime);
}
trigger.setNextFireTime(newFireTime);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package ru.finex.quartz.retry.trigger.impl;

import static org.quartz.Trigger.*;
import org.quartz.spi.OperableTrigger;
import static ru.finex.quartz.retry.trigger.RetryCronTrigger.*;

/**
*
* @author HOME
*/
public abstract class MisfireInstruction {

public static MisfireInstruction createMisfireHandler(int misfireInstruction) {

if (misfireInstruction==MISFIRE_INSTRUCTION_DO_NOTHING){
return new MisfireInstDoNothing();
}else if(misfireInstruction==MISFIRE_INSTRUCTION_FIRE_ONCE_NOW){
return new MisfireInsFireOnceNow();
}else if(misfireInstruction== MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY){
return new MisfireInsIngnoreMisfirePolicy();
}else{
return new MisfireInsDefault(misfireInstruction);
}

}
public abstract void getMisfireBehavior(RetryCronScheduleBuilder cb);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package ru.finex.quartz.retry.trigger.impl;

import java.util.Date;
import org.quartz.Calendar;
import org.quartz.spi.OperableTrigger;

/**
*
* @author HOME
*/
public class MisfireSmartPolicy implements MisfireHandler{

@Override
public void handleMisfire(OperableTrigger trigger, Calendar cal) {
trigger.setNextFireTime(new Date());
}

}
Loading