Migrate a GSH scripted daemon to compiled Java
Today vs compiled
A scripted daemon (OtherJobScript) runs a GSH/Groovy body today:
otherJob.myDaemon.class = edu.internet2.middleware.grouper.app.loader.OtherJobScript
otherJob.myDaemon.quartzCron = 0 0 6 * * ?
otherJob.myDaemon.scriptType = gsh
otherJob.myDaemon.scriptSource = ... groovy ... # or otherJob.myDaemon.fileName
To convert: create a compiled GSH template (templateType=daemon, templateMode=compiled) whose body extends GrouperTemplateDaemon and implements runDaemon, then point the daemon at it with scriptType=compiledJava and a gshTemplateConfigId:
otherJob.myDaemon.class = edu.internet2.middleware.grouper.app.loader.OtherJobScript
otherJob.myDaemon.quartzCron = 0 0 6 * * ?
otherJob.myDaemon.scriptType = compiledJava
otherJob.myDaemon.gshTemplateConfigId = myDaemonTemplate
Status and counts go on the loader log the framework passes in (otherJobTemplateInput.getHib3GrouperLoaderLog()); throw to fail the job. There is no gsh_builtin_* scaffolding — you have the input bean directly.
Before (interpreted gsh daemon body)
// runs with scriptType=gsh; gsh_builtin_* variables are prepended
int updated = 0;
// ... do work ...
gsh_builtin_hib3GrouperLoaderLog.addUpdateCount(updated);
After (compiled GrouperTemplateDaemon)
package edu.institution.grouper.gsh;
import edu.internet2.middleware.grouper.app.gsh.template.GrouperTemplateDaemon;
import edu.internet2.middleware.grouper.app.loader.OtherJobTemplateInput;
import edu.internet2.middleware.grouper.app.loader.db.Hib3GrouperLoaderLog;
public class MyDaemonTemplate extends GrouperTemplateDaemon {
@Override
public void runDaemon(OtherJobTemplateInput otherJobTemplateInput) {
Hib3GrouperLoaderLog loaderLog = otherJobTemplateInput.getHib3GrouperLoaderLog();
int updated = 0;
// ... do work ...
loaderLog.addUpdateCount(updated);
loaderLog.setJobMessage("updated " + updated);
}
}