package org.karmaexchange.bootstrap; import java.io.PrintWriter; import lombok.RequiredArgsConstructor; import org.karmaexchange.util.AdminUtil; import org.karmaexchange.util.UserService; import org.karmaexchange.util.AdminUtil.AdminTaskType; @RequiredArgsConstructor public abstract class BootstrapTask { protected final PrintWriter statusWriter; public final void execute() { AdminUtil.setCurrentUser(AdminTaskType.BOOTSTRAP); try { performTask(); } finally { UserService.clearCurrentUser(); } } protected abstract void performTask(); }