diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java index 7611b810..5aaa0968 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java @@ -2,6 +2,7 @@ package com.xxl.job.admin.controller; import com.xxl.job.admin.controller.annotation.PermissionLimit; import com.xxl.job.admin.core.conf.XxlJobAdminConfig; +import com.xxl.job.admin.core.util.JacksonUtil; import com.xxl.job.core.biz.AdminBiz; import com.xxl.job.core.biz.model.HandleCallbackParam; import com.xxl.job.core.biz.model.RegistryParam; @@ -32,20 +33,30 @@ public class JobApiController { /** * callback * - * @param callbackParamList + * @param data * @return */ @RequestMapping("/callback") @ResponseBody @PermissionLimit(limit=false) - public ReturnT callback(HttpServletRequest request, @RequestBody List callbackParamList) { - + public ReturnT callback(HttpServletRequest request, @RequestBody(required = false) String data) { + // valid if (XxlJobAdminConfig.getAdminConfig().getAccessToken()!=null && XxlJobAdminConfig.getAdminConfig().getAccessToken().trim().length()>0 && !XxlJobAdminConfig.getAdminConfig().getAccessToken().equals(request.getHeader(XxlJobRemotingUtil.XXL_RPC_ACCESS_TOKEN))) { return new ReturnT(ReturnT.FAIL_CODE, "The access token is wrong."); } + // param + List callbackParamList = null; + try { + callbackParamList = JacksonUtil.readValue(data, List.class, HandleCallbackParam.class); + } catch (Exception e) { } + if (callbackParamList==null || callbackParamList.size()==0) { + return new ReturnT(ReturnT.FAIL_CODE, "The request data invalid."); + } + + // invoke return adminBiz.callback(callbackParamList); } @@ -54,44 +65,63 @@ public class JobApiController { /** * registry * - * @param registryParam + * @param data * @return */ @RequestMapping("/registry") @ResponseBody @PermissionLimit(limit=false) - public ReturnT registry(HttpServletRequest request, @RequestBody RegistryParam registryParam) { - + public ReturnT registry(HttpServletRequest request, @RequestBody(required = false) String data) { + // valid if (XxlJobAdminConfig.getAdminConfig().getAccessToken()!=null && XxlJobAdminConfig.getAdminConfig().getAccessToken().trim().length()>0 && !XxlJobAdminConfig.getAdminConfig().getAccessToken().equals(request.getHeader(XxlJobRemotingUtil.XXL_RPC_ACCESS_TOKEN))) { return new ReturnT(ReturnT.FAIL_CODE, "The access token is wrong."); } + // param + RegistryParam registryParam = null; + try { + registryParam = JacksonUtil.readValue(data, RegistryParam.class); + } catch (Exception e) {} + if (registryParam == null) { + return new ReturnT(ReturnT.FAIL_CODE, "The request data invalid."); + } + + // invoke return adminBiz.registry(registryParam); } /** * registry remove * - * @param registryParam + * @param data * @return */ @RequestMapping("/registryRemove") @ResponseBody @PermissionLimit(limit=false) - public ReturnT registryRemove(HttpServletRequest request, @RequestBody RegistryParam registryParam) { - + public ReturnT registryRemove(HttpServletRequest request, @RequestBody(required = false) String data) { + // valid if (XxlJobAdminConfig.getAdminConfig().getAccessToken()!=null && XxlJobAdminConfig.getAdminConfig().getAccessToken().trim().length()>0 && !XxlJobAdminConfig.getAdminConfig().getAccessToken().equals(request.getHeader(XxlJobRemotingUtil.XXL_RPC_ACCESS_TOKEN))) { return new ReturnT(ReturnT.FAIL_CODE, "The access token is wrong."); } + // param + RegistryParam registryParam = null; + try { + registryParam = JacksonUtil.readValue(data, RegistryParam.class); + } catch (Exception e) {} + if (registryParam == null) { + return new ReturnT(ReturnT.FAIL_CODE, "The request data invalid."); + } + + // invoke return adminBiz.registryRemove(registryParam); } - // ---------------------- job biz ---------------------- }