[New] Added StrolchJob for recurring jobs
This commit is contained in:
parent
d9db935bbb
commit
d0aa763f6a
|
@ -0,0 +1,71 @@
|
|||
package li.strolch.job;
|
||||
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import li.strolch.agent.api.ComponentContainer;
|
||||
import li.strolch.agent.api.StrolchAgent;
|
||||
import li.strolch.persistence.api.StrolchTransaction;
|
||||
import li.strolch.privilege.base.PrivilegeException;
|
||||
import li.strolch.privilege.model.Certificate;
|
||||
import li.strolch.runtime.StrolchConstants;
|
||||
import li.strolch.runtime.privilege.PrivilegedRunnable;
|
||||
|
||||
public abstract class StrolchJob implements Runnable {
|
||||
|
||||
protected static final Logger logger = LoggerFactory.getLogger(StrolchJob.class);
|
||||
|
||||
private StrolchAgent agent;
|
||||
|
||||
public StrolchJob(StrolchAgent agent) {
|
||||
this.agent = agent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the agent
|
||||
*/
|
||||
protected StrolchAgent getAgent() {
|
||||
return this.agent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the {@link ComponentContainer}
|
||||
*/
|
||||
protected ComponentContainer getContainer() {
|
||||
return getAgent().getContainer();
|
||||
}
|
||||
|
||||
protected ScheduledExecutorService getScheduledExecutor() {
|
||||
return getAgent().getScheduledExecutor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs the given {@link PrivilegedRunnable} as the privileged system user
|
||||
* {@link StrolchConstants#SYSTEM_USER_AGENT}
|
||||
*
|
||||
* @param runnable
|
||||
* the runnable to perform
|
||||
*
|
||||
* @throws PrivilegeException
|
||||
*/
|
||||
protected void runAsAgent(PrivilegedRunnable runnable) throws PrivilegeException {
|
||||
getContainer().getPrivilegeHandler().runAsAgent(runnable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens a {@link StrolchTransaction} for the default realm and certificate
|
||||
*
|
||||
* @param cert
|
||||
* the certificate authorizing the transaction
|
||||
*
|
||||
* @return the newly created transaction
|
||||
*/
|
||||
protected StrolchTransaction openTx(Certificate cert) {
|
||||
return getContainer().getRealm(cert).openTx(cert, this.getClass());
|
||||
}
|
||||
|
||||
public abstract Future<?> schedule();
|
||||
}
|
Loading…
Reference in New Issue