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

Reply via email to