package li.strolch.runtime.privilege; import li.strolch.privilege.handler.SystemUserAction; import li.strolch.privilege.model.PrivilegeContext; import li.strolch.service.api.AbstractService; import li.strolch.service.api.Service; import li.strolch.service.api.ServiceArgument; import li.strolch.service.api.ServiceHandler; import li.strolch.service.api.ServiceResult; /** * {@link SystemUserAction} to run a {@link Service} as a system user * * @author Robert von Burg <eitch@eitchnet.ch> * * @param <T> * @param <U> */ public class RunAsAgent<T extends ServiceArgument, U extends ServiceResult> extends SystemUserAction { private ServiceHandler svcHandler; private AbstractService<T, U> svc; private T arg; private U result; public RunAsAgent(ServiceHandler svcHandler, AbstractService<T, U> svc, T arg) { this.svcHandler = svcHandler; this.svc = svc; this.arg = arg; } public U getResult() { return result; } @Override public void execute(PrivilegeContext privilegeContext) { this.result = svcHandler.doService(privilegeContext.getCertificate(), svc, arg); } }