package org.fenixedu.bennu.scheduler.api; import javax.ws.rs.GET; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.fenixedu.bennu.core.groups.Group; import org.fenixedu.bennu.core.rest.BennuRestResource; import org.fenixedu.bennu.io.domain.LocalFileSystemStorage; import org.fenixedu.bennu.scheduler.domain.SchedulerSystem; import pt.ist.fenixframework.Atomic; import pt.ist.fenixframework.Atomic.TxMode; import com.google.gson.JsonElement; @Path("/bennu-scheduler/config") public class SchedulerConfigResource extends BennuRestResource { @GET @Produces(MediaType.APPLICATION_JSON) public JsonElement getLoggingStorage() { accessControl(Group.managers()); return view(SchedulerSystem.getInstance()); } @PUT @Path("/{oid}") @Produces(MediaType.APPLICATION_JSON) public JsonElement changeLoggingStorage(@PathParam("oid") String loggingStorageExternalId) { accessControl(Group.managers()); innerSetLoggingStorage(loggingStorageExternalId); return getLoggingStorage(); } @Atomic(mode = TxMode.WRITE) public void innerSetLoggingStorage(String loggingStorageExternalId) { LocalFileSystemStorage storage = readDomainObject(loggingStorageExternalId); SchedulerSystem.getInstance().setLoggingStorage(storage); } }