Migrate a GSH provisioner to compiled Java

Migrate a GSH provisioner to compiled Java

Today vs compiled

A GSH provisioner is a provisioner whose logic is a GSH template:

provisioner.myProvisioner.class = edu.internet2.middleware.grouper.app.gshTemplateProvisioner.GshTemplateProvisionerFactory provisioner.myProvisioner.gshTemplateConfigId = myProvisionerTemplate

Today the referenced template (myProvisionerTemplate) is templateMode=interpreted, templateType=provisioner, and its body extends GshTemplateV2 and constructs the provisioner and attaches it with gshTemplateOutput.assignGrouperProvisioner(...).

To convert, set that template to templateMode=compiled and rewrite the body so the template class is the provisioner — extend GshTemplateProvisionerBase directly. The assignGrouperProvisioner wrapper is dropped; the factory returns your class directly. The provisioner.myProvisioner.* config is unchanged.

Before (interpreted: GshTemplateV2 wrapper that attaches the provisioner)

class MyProvisionerTemplate extends GshTemplateV2 { public void gshRunLogic(GshTemplateV2input in, GshTemplateV2output out) { GrouperProvisioner provisioner = new MyProvisioner(); // a subclass of GshTemplateProvisionerBase with a target DAO out.getGsh_builtin_gshTemplateOutput().assignGrouperProvisioner(provisioner); } }

After (compiled: the template class is the provisioner)

package edu.institution.grouper.provisioner; import edu.internet2.middleware.grouper.app.gshTemplateProvisioner.GshTemplateProvisionerBase; import edu.internet2.middleware.grouper.app.provisioning.targetDao.GrouperProvisionerTargetDaoBase; public class MyProvisioner extends GshTemplateProvisionerBase { @Override protected Class<? extends GrouperProvisionerTargetDaoBase> grouperTargetDaoClass() { return MyProvisionerTargetDao.class; } // ... the rest of your provisioner (configuration class, translation, target DAO, etc.) ... }