class ReschedulingProcessor extends Processor {
    {
        setRescheduleDelaySeconds(-1L);
    }
    public long getRescheduleDelaySeconds() {
        return (Long) kp.get("rescheduleDelaySeconds");
    }
    /**
     * amount of time to wait before forcing a URI to be rescheduled
     * default of -1 means "don't reschedule"
     */
    public void setRescheduleDelaySeconds(long rescheduleDelaySeconds) {
        kp.put("rescheduleDelaySeconds",rescheduleDelaySeconds);
    }

    public ReschedulingProcessor() {
        super();
    }

    @Override
    protected boolean shouldProcess(CrawlURI curi) {
        return true;
    }
    
    @Override
    protected void innerProcess(CrawlURI curi) {<FILL_FUNCTION_BODY>}
}

        if(curi.isPrerequisite()) {
            // never resched prereqs; they get rescheduled as needed
            curi.setRescheduleTime(-1); 
            return; 
        }
        long rds = getRescheduleDelaySeconds();
        if(rds>0) {
            curi.setRescheduleTime(System.currentTimeMillis()+(1000*rds));
        } else {
            curi.setRescheduleTime(-1); 
        }
    
<methods>public non-sealed void <init>() ,public void doCheckpoint(org.archive.checkpointing.Checkpoint) throws java.io.IOException,public void finishCheckpoint(org.archive.checkpointing.Checkpoint) ,public static java.lang.String flattenVia(org.archive.modules.CrawlURI) ,public java.lang.String getBeanName() ,public boolean getEnabled() ,public org.archive.spring.KeyedProperties getKeyedProperties() ,public static long getRecordedSize(org.archive.modules.CrawlURI) ,public org.archive.modules.deciderules.DecideRule getShouldProcessRule() ,public long getURICount() ,public static boolean hasHttpAuthenticationCredential(org.archive.modules.CrawlURI) ,public boolean isRunning() ,public static boolean isSuccess(org.archive.modules.CrawlURI) ,public org.archive.modules.ProcessResult process(org.archive.modules.CrawlURI) throws java.lang.InterruptedException,public java.lang.String report() ,public void setBeanName(java.lang.String) ,public void setEnabled(boolean) ,public void setRecoveryCheckpoint(org.archive.checkpointing.Checkpoint) ,public void setShouldProcessRule(org.archive.modules.deciderules.DecideRule) ,public void start() ,public void startCheckpoint(org.archive.checkpointing.Checkpoint) ,public void stop() <variables>protected java.lang.String beanName,protected boolean isRunning,protected org.archive.spring.KeyedProperties kp,protected org.archive.checkpointing.Checkpoint recoveryCheckpoint,protected java.util.concurrent.atomic.AtomicLong uriCount