gerlowskija commented on code in PR #1933: URL: https://github.com/apache/solr/pull/1933#discussion_r1331761409
########## solr/core/src/java/org/apache/solr/handler/admin/api/UnloadCoreAPI.java: ########## @@ -17,60 +17,89 @@ package org.apache.solr.handler.admin.api; -import static org.apache.solr.client.solrj.SolrRequest.METHOD.POST; -import static org.apache.solr.handler.ClusterAPI.wrapParams; +import static org.apache.solr.client.solrj.impl.BinaryResponseParser.BINARY_CONTENT_TYPE_V2; import static org.apache.solr.security.PermissionNameProvider.Name.CORE_EDIT_PERM; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import org.apache.solr.api.Command; -import org.apache.solr.api.EndPoint; -import org.apache.solr.api.PayloadObj; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.parameters.RequestBody; +import javax.inject.Inject; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import org.apache.solr.client.api.model.SolrJerseyResponse; import org.apache.solr.common.annotation.JsonProperty; -import org.apache.solr.common.params.CoreAdminParams; -import org.apache.solr.common.util.ReflectMapWriter; +import org.apache.solr.core.CoreContainer; +import org.apache.solr.core.CoreDescriptor; import org.apache.solr.handler.admin.CoreAdminHandler; +import org.apache.solr.jersey.JacksonReflectMapWriter; +import org.apache.solr.jersey.PermissionName; +import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.response.SolrQueryResponse; +import org.apache.solr.util.TestInjection; /** - * V2 API for renaming an existing Solr core. + * V2 API for unloading an existing Solr core. * - * <p>The new API (POST /v2/cores/coreName {'unload': {...}}) is equivalent to the v1 - * /admin/cores?action=unload command. + * <p>The new API (POST /v2/cores/coreName/unload is equivalent to the v1 /admin/cores?action=unload + * command. */ -@EndPoint( - path = {"/cores/{core}"}, - method = POST, - permission = CORE_EDIT_PERM) -public class UnloadCoreAPI { - private static final String V2_UNLOAD_CORE_CMD = "unload"; +@Path("/cores/{coreName}/unload") +public class UnloadCoreAPI extends CoreAdminAPIBase { - private final CoreAdminHandler coreHandler; - - public UnloadCoreAPI(CoreAdminHandler coreHandler) { - this.coreHandler = coreHandler; + @Inject + public UnloadCoreAPI( + CoreContainer coreContainer, + CoreAdminHandler.CoreAdminAsyncTracker coreAdminAsyncTracker, + SolrQueryRequest solrQueryRequest, + SolrQueryResponse solrQueryResponse) { + super(coreContainer, coreAdminAsyncTracker, solrQueryRequest, solrQueryResponse); } - @Command(name = V2_UNLOAD_CORE_CMD) - public void unloadCore(PayloadObj<UnloadCorePayload> obj) throws Exception { - final UnloadCorePayload v2Body = obj.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); - v1Params.put( - CoreAdminParams.ACTION, - CoreAdminParams.CoreAdminAction.UNLOAD.name().toLowerCase(Locale.ROOT)); - v1Params.put( - CoreAdminParams.CORE, obj.getRequest().getPathTemplateValues().get(CoreAdminParams.CORE)); - - coreHandler.handleRequestBody(wrapParams(obj.getRequest(), v1Params), obj.getResponse()); + @POST + @Produces({"application/json", "application/xml", BINARY_CONTENT_TYPE_V2}) + @PermissionName(CORE_EDIT_PERM) + public SolrJerseyResponse unloadCore( + @PathParam("coreName") String coreName, + @Schema(description = "The POJO for representing additional Unload core params") @RequestBody + UnloadCoreRequestBody unloadCoreRequestBody) + throws Exception { + ensureRequiredParameterProvided("coreName", coreName); + SolrJerseyResponse solrJerseyResponse = instantiateJerseyResponse(SolrJerseyResponse.class); + return handlePotentiallyAsynchronousTask( + solrJerseyResponse, + coreName, + unloadCoreRequestBody.async, Review Comment: [-1] We should check whether the request body is null first, so that an NPE isn't triggered if users choose not to provide a request body. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org