package com.perforce.hws.plugin.perforce.routes;
import com.perforce.hws.core.p4base.ListingMethods;
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.utils.HWSSettings;
import com.perforce.hws.utils.ModelConversion;
import com.perforce.hws.utils.UsesServerHandles;
import static java.util.stream.Collectors.toList;
/**
* GET /{server}/paths
*/
public class PerforceListPathsRoute implements
spark.Route,
ResultMapMethods,
ModelConversion,
ListingMethods,
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");
return withServerHandle(server, sessionData, settings, serverHandle -> {
// This route isn't using splats at the moment due to restrictions by
// the OpenAPI specification that we use to generate client SDKs.
String path = null;
if (request.queryParams("path") != null) {
path = request.queryParams("path");
}
java.util.List<ResultMap> results = listPath(serverHandle, path);
java.util.function.Supplier<String> offsetSupplier = offsetSupplier(serverHandle);
return results.stream()
.map(m -> toLocation(m, offsetSupplier))
.collect(toList());
});
}
}