package com.perforce.hws.plugin.perforce.routes;
import com.perforce.hws.core.p4base.HasGson;
import com.perforce.hws.core.p4base.P4Methods;
import com.perforce.hws.core.p4base.ResultMap;
import com.perforce.hws.core.p4base.ResultMapMethods;
import com.perforce.hws.core.sessions.SessionData;
import com.perforce.hws.route.UsesJsonRequests;
import com.perforce.hws.utils.HWSSettings;
import com.perforce.hws.utils.ModelConversion;
import com.perforce.hws.utils.UsesServerHandles;
import com.perforce.p4client.models.GroupCommand;
/**
* PATCH /p4/:api/groups/:group
*/
public class PerforceUpdateGroupRoute implements
spark.Route,
P4Methods,
ResultMapMethods,
HasGson,
GroupSpecMethods,
ModelConversion,
UsesJsonRequests,
UsesServerHandles {
@Override
public Object handle(spark.Request request, spark.Response response) throws Exception {
SessionData sessionData = request.attribute("sessionData");
HWSSettings settings = request.attribute("settings");
String server = request.params("server");
String group = request.params("group");
GroupCommand groupCommand = readModel(request, GroupCommand.class);
return withServerHandle(server, sessionData, settings, serverHandle -> {
java.util.Map<String, Object> updates = toRequestMap(groupCommand);
java.util.List<ResultMap> results = exec(serverHandle, "group", "-o", group);
ResultMap resultMap = firstResultOrFail(results);
GroupCommand saved = toGroupCommand(resultMap);
java.util.Map<String, Object> savedMap = toRequestMap(saved);
savedMap.putAll(updates);
GroupCommand savedGroup = toGroupCommand(savedMap);
String groupSpec = toGroupSpec(savedGroup);
return toCommandResponse(execInputString(serverHandle, groupSpec, "group", "-i"));
});
}
}