package ${package}; import org.lilyproject.repository.spi.RecordUpdateHook; import org.lilyproject.repository.api.FieldTypes; import org.lilyproject.repository.api.Record; import org.lilyproject.repository.api.Repository; import org.lilyproject.repository.api.RepositoryException; import org.lilyproject.util.repo.RecordEvent; import org.lilyproject.plugin.PluginRegistry; import javax.annotation.PreDestroy; public class SampleRecordUpdateHook implements RecordUpdateHook { private PluginRegistry pluginRegistry; /** Name should be unique among all RecordUpdateHook's */ private String NAME = "${groupId}.${artifactId}"; public SampleRecordUpdateHook(PluginRegistry pluginRegistry) { this.pluginRegistry = pluginRegistry; pluginRegistry.addPlugin(RecordUpdateHook.class, NAME, this); } @PreDestroy public void destroy() { // Use same arguments as for addPlugin pluginRegistry.removePlugin(RecordUpdateHook.class, NAME, this); } @Override public void beforeUpdate(Record record, Record originalRecord, Repository repository, FieldTypes fieldTypes, RecordEvent recordEvent) throws RepositoryException, InterruptedException { System.out.println("Record update hook is called for record: " + record.getId()); } @Override public void beforeCreate(Record newRecord, Repository repository, FieldTypes fieldTypes, RecordEvent recordEvent) throws RepositoryException, InterruptedException { System.out.println("Record update hook is called for record: " + newRecord.getId()); } @Override public void beforeDelete(Record originalRecord, Repository repository, FieldTypes fieldTypes, RecordEvent recordEvent) throws RepositoryException, InterruptedException { System.out.println("Record update hook is called for record: " + originalRecord.getId()); } }