// Path: src/main/java/com/indeed/proctor/webapp/extensions/AfterBackgroundJobExecute.java
// public interface AfterBackgroundJobExecute {
//     <T> void afterExecute(final BackgroundJob<T> job, T result);
// }
// 
// Path: src/main/java/com/indeed/proctor/webapp/extensions/BeforeBackgroundJobExecute.java
// public interface BeforeBackgroundJobExecute {
//     <T> void beforeExecute(final BackgroundJob<T> job);
// }


import com.google.common.collect.Lists;
import com.indeed.proctor.webapp.extensions.AfterBackgroundJobExecute;
import com.indeed.proctor.webapp.extensions.BeforeBackgroundJobExecute;
import org.apache.log4j.Logger;
import javax.annotation.Nonnull;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
    }

    public static class ResultUrl {
        private final String href;
        private final String text;
        private final String target;

        public ResultUrl(final String href,
                         final String text,
                         final String target) {
            this.href = href;
            this.text = text;
            this.target = target;
        }

        public String getHref() {
            return href;
        }

        public String getTarget() {
            return target;
        }

        public String getText() {
            return text;
        }
    }

    protected abstract List<BeforeBackgroundJobExecute> getBeforeBackgroundJobExecutes();

// Path: src/main/java/com/indeed/proctor/webapp/extensions/AfterBackgroundJobExecute.java
// public interface AfterBackgroundJobExecute {
//     <T> void afterExecute(final BackgroundJob<T> job, T result);
// }
// 
// Path: src/main/java/com/indeed/proctor/webapp/extensions/BeforeBackgroundJobExecute.java
// public interface BeforeBackgroundJobExecute {
//     <T> void beforeExecute(final BackgroundJob<T> job);
// }


// Path: src/main/java/com/indeed/proctor/webapp/jobs/BackgroundJob.java
import com.google.common.collect.Lists;
import com.indeed.proctor.webapp.extensions.AfterBackgroundJobExecute;
import com.indeed.proctor.webapp.extensions.BeforeBackgroundJobExecute;
import org.apache.log4j.Logger;
import javax.annotation.Nonnull;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;

    }

    public static class ResultUrl {
        private final String href;
        private final String text;
        private final String target;

        public ResultUrl(final String href,
                         final String text,
                         final String target) {
            this.href = href;
            this.text = text;
            this.target = target;
        }

        public String getHref() {
            return href;
        }

        public String getTarget() {
            return target;
        }

        public String getText() {
            return text;
        }
    }

    protected abstract List<BeforeBackgroundJobExecute> getBeforeBackgroundJobExecutes();

    protected abstract List<AfterBackgroundJobExecute> getAfterBackgroundJobExecutes();