refactor(core): 统一使用Response替代ReturnT作为返回值类型- 将所有ReturnT引用替换为Response

- 更新相关方法签名及实现以匹配新的响应结构
- 修改测试类中的断言逻辑以适应新类型
- 调整controller层返回值处理方式
- 更新路由策略相关类的返回类型- 修改调度器触发逻辑中的响应处理
- 重命名JobApiController为OpenApiController并调整其方法返回值
- 更新AdminBiz及其实现类的方法签名- 调整ExecutorBiz接口及其客户端和服务端实现- 更新回调和注册相关功能的响应类型处理
3.3.0-release
xuxueli 1 month ago
parent cd71a1896f
commit 1570d92464

@ -18,6 +18,7 @@ import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.tool.core.CollectionTool;
import com.xxl.tool.core.DateTool;
import com.xxl.tool.core.StringTool;
import com.xxl.tool.response.Response;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
@ -159,35 +160,35 @@ public class JobLogController {
@RequestMapping("/logDetailCat")
@ResponseBody
public ReturnT<LogResult> logDetailCat(@RequestParam("logId") long logId, @RequestParam("fromLineNum") int fromLineNum){
public Response<LogResult> logDetailCat(@RequestParam("logId") long logId, @RequestParam("fromLineNum") int fromLineNum){
try {
// valid
XxlJobLog jobLog = xxlJobLogMapper.load(logId); // todo, need to improve performance
if (jobLog == null) {
return ReturnT.ofFail(I18nUtil.getString("joblog_logid_unvalid"));
return Response.ofFail(I18nUtil.getString("joblog_logid_unvalid"));
}
// log cat
ExecutorBiz executorBiz = XxlJobAdminBootstrap.getExecutorBiz(jobLog.getExecutorAddress());
ReturnT<LogResult> logResult = executorBiz.log(new LogRequest(jobLog.getTriggerTime().getTime(), logId, fromLineNum));
Response<LogResult> logResult = executorBiz.log(new LogRequest(jobLog.getTriggerTime().getTime(), logId, fromLineNum));
// is end
if (logResult.getContent()!=null && logResult.getContent().getFromLineNum() > logResult.getContent().getToLineNum()) {
if (logResult.getData()!=null && logResult.getData().getFromLineNum() > logResult.getData().getToLineNum()) {
if (jobLog.getHandleCode() > 0) {
logResult.getContent().setEnd(true);
logResult.getData().setEnd(true);
}
}
// fix xss
if (logResult.getContent()!=null && StringTool.isNotBlank(logResult.getContent().getLogContent())) {
String newLogContent = filter(logResult.getContent().getLogContent());
logResult.getContent().setLogContent(newLogContent);
if (logResult.getData()!=null && StringTool.isNotBlank(logResult.getData().getLogContent())) {
String newLogContent = filter(logResult.getData().getLogContent());
logResult.getData().setLogContent(newLogContent);
}
return logResult;
} catch (Exception e) {
logger.error(e.getMessage(), e);
return ReturnT.ofFail(e.getMessage());
return Response.ofFail(e.getMessage());
}
}
@ -240,13 +241,13 @@ public class JobLogController {
JobGroupPermissionUtil.validJobGroupPermission(request, jobInfo.getJobGroup());
// request of kill
ReturnT<String> runResult = null;
Response<String> runResult = null;
try {
ExecutorBiz executorBiz = XxlJobAdminBootstrap.getExecutorBiz(log.getExecutorAddress());
runResult = executorBiz.kill(new KillRequest(jobInfo.getId()));
} catch (Exception e) {
logger.error(e.getMessage(), e);
runResult = ReturnT.ofFail( e.getMessage());
runResult = Response.ofFail( e.getMessage());
}
if (ReturnT.SUCCESS_CODE == runResult.getCode()) {

@ -20,7 +20,7 @@ import java.util.List;
* Created by xuxueli on 17/5/10.
*/
@Controller
public class JobApiController {
public class OpenApiController {
@Resource
private AdminBiz adminBiz;
@ -31,7 +31,7 @@ public class JobApiController {
@RequestMapping("/api/{uri}")
@ResponseBody
@XxlSso(login = false)
public ReturnT<String> api(HttpServletRequest request,
public Object api(HttpServletRequest request,
@PathVariable("uri") String uri,
@RequestHeader(XxlJobRemotingUtil.XXL_JOB_ACCESS_TOKEN) String accesstoken,
@RequestBody(required = false) String requestBody) {

@ -1,7 +1,7 @@
package com.xxl.job.admin.scheduler.route;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerRequest;
import com.xxl.tool.response.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -19,6 +19,6 @@ public abstract class ExecutorRouter {
* @param addressList executor address list
* @return ReturnT.content=address
*/
public abstract ReturnT<String> route(TriggerRequest triggerParam, List<String> addressList);
public abstract Response<String> route(TriggerRequest triggerParam, List<String> addressList);
}

@ -5,8 +5,8 @@ import com.xxl.job.admin.scheduler.route.ExecutorRouter;
import com.xxl.job.admin.util.I18nUtil;
import com.xxl.job.core.biz.ExecutorBiz;
import com.xxl.job.core.biz.model.IdleBeatRequest;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerRequest;
import com.xxl.tool.response.Response;
import java.util.List;
@ -16,17 +16,17 @@ import java.util.List;
public class ExecutorRouteBusyover extends ExecutorRouter {
@Override
public ReturnT<String> route(TriggerRequest triggerParam, List<String> addressList) {
public Response<String> route(TriggerRequest triggerParam, List<String> addressList) {
StringBuffer idleBeatResultSB = new StringBuffer();
for (String address : addressList) {
// beat
ReturnT<String> idleBeatResult = null;
Response<String> idleBeatResult = null;
try {
ExecutorBiz executorBiz = XxlJobAdminBootstrap.getExecutorBiz(address);
idleBeatResult = executorBiz.idleBeat(new IdleBeatRequest(triggerParam.getJobId()));
} catch (Exception e) {
logger.error(e.getMessage(), e);
idleBeatResult = ReturnT.ofFail( ""+e );
idleBeatResult = Response.ofFail( ""+e );
}
idleBeatResultSB.append( (idleBeatResultSB.length()>0)?"<br><br>":"")
.append(I18nUtil.getString("jobconf_idleBeat") + "")
@ -37,12 +37,12 @@ public class ExecutorRouteBusyover extends ExecutorRouter {
// beat success
if (idleBeatResult.isSuccess()) {
idleBeatResult.setMsg(idleBeatResultSB.toString());
idleBeatResult.setContent(address);
idleBeatResult.setData(address);
return idleBeatResult;
}
}
return ReturnT.ofFail( idleBeatResultSB.toString());
return Response.ofFail( idleBeatResultSB.toString());
}
}

@ -1,8 +1,8 @@
package com.xxl.job.admin.scheduler.route.strategy;
import com.xxl.job.admin.scheduler.route.ExecutorRouter;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerRequest;
import com.xxl.tool.response.Response;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
@ -81,9 +81,9 @@ public class ExecutorRouteConsistentHash extends ExecutorRouter {
}
@Override
public ReturnT<String> route(TriggerRequest triggerParam, List<String> addressList) {
public Response<String> route(TriggerRequest triggerParam, List<String> addressList) {
String address = hashJob(triggerParam.getJobId(), addressList);
return ReturnT.ofSuccess(address);
return Response.ofSuccess(address);
}
}

@ -6,6 +6,7 @@ import com.xxl.job.admin.util.I18nUtil;
import com.xxl.job.core.biz.ExecutorBiz;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerRequest;
import com.xxl.tool.response.Response;
import java.util.List;
@ -15,18 +16,18 @@ import java.util.List;
public class ExecutorRouteFailover extends ExecutorRouter {
@Override
public ReturnT<String> route(TriggerRequest triggerParam, List<String> addressList) {
public Response<String> route(TriggerRequest triggerParam, List<String> addressList) {
StringBuffer beatResultSB = new StringBuffer();
for (String address : addressList) {
// beat
ReturnT<String> beatResult = null;
Response<String> beatResult = null;
try {
ExecutorBiz executorBiz = XxlJobAdminBootstrap.getExecutorBiz(address);
beatResult = executorBiz.beat();
} catch (Exception e) {
logger.error(e.getMessage(), e);
beatResult = ReturnT.ofFail(e.getMessage() );
beatResult = Response.ofFail(e.getMessage() );
}
beatResultSB.append( (beatResultSB.length()>0)?"<br><br>":"")
.append(I18nUtil.getString("jobconf_beat") + "")
@ -38,11 +39,11 @@ public class ExecutorRouteFailover extends ExecutorRouter {
if (beatResult.isSuccess()) {
beatResult.setMsg(beatResultSB.toString());
beatResult.setContent(address);
beatResult.setData(address);
return beatResult;
}
}
return ReturnT.ofFail( beatResultSB.toString());
return Response.ofFail( beatResultSB.toString());
}
}

@ -1,8 +1,8 @@
package com.xxl.job.admin.scheduler.route.strategy;
import com.xxl.job.admin.scheduler.route.ExecutorRouter;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerRequest;
import com.xxl.tool.response.Response;
import java.util.List;
@ -12,8 +12,8 @@ import java.util.List;
public class ExecutorRouteFirst extends ExecutorRouter {
@Override
public ReturnT<String> route(TriggerRequest triggerParam, List<String> addressList){
return ReturnT.ofSuccess(addressList.get(0));
public Response<String> route(TriggerRequest triggerParam, List<String> addressList){
return Response.ofSuccess(addressList.get(0));
}
}

@ -1,8 +1,8 @@
package com.xxl.job.admin.scheduler.route.strategy;
import com.xxl.job.admin.scheduler.route.ExecutorRouter;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerRequest;
import com.xxl.tool.response.Response;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@ -70,9 +70,9 @@ public class ExecutorRouteLFU extends ExecutorRouter {
}
@Override
public ReturnT<String> route(TriggerRequest triggerParam, List<String> addressList) {
public Response<String> route(TriggerRequest triggerParam, List<String> addressList) {
String address = route(triggerParam.getJobId(), addressList);
return ReturnT.ofSuccess(address);
return Response.ofSuccess(address);
}
}

@ -1,8 +1,8 @@
package com.xxl.job.admin.scheduler.route.strategy;
import com.xxl.job.admin.scheduler.route.ExecutorRouter;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerRequest;
import com.xxl.tool.response.Response;
import java.util.ArrayList;
import java.util.LinkedHashMap;
@ -72,9 +72,9 @@ public class ExecutorRouteLRU extends ExecutorRouter {
}
@Override
public ReturnT<String> route(TriggerRequest triggerParam, List<String> addressList) {
public Response<String> route(TriggerRequest triggerParam, List<String> addressList) {
String address = route(triggerParam.getJobId(), addressList);
return ReturnT.ofSuccess(address);
return Response.ofSuccess(address);
}
}

@ -1,8 +1,8 @@
package com.xxl.job.admin.scheduler.route.strategy;
import com.xxl.job.admin.scheduler.route.ExecutorRouter;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerRequest;
import com.xxl.tool.response.Response;
import java.util.List;
@ -12,8 +12,8 @@ import java.util.List;
public class ExecutorRouteLast extends ExecutorRouter {
@Override
public ReturnT<String> route(TriggerRequest triggerParam, List<String> addressList) {
return ReturnT.ofSuccess(addressList.get(addressList.size()-1));
public Response<String> route(TriggerRequest triggerParam, List<String> addressList) {
return Response.ofSuccess(addressList.get(addressList.size()-1));
}
}

@ -1,8 +1,8 @@
package com.xxl.job.admin.scheduler.route.strategy;
import com.xxl.job.admin.scheduler.route.ExecutorRouter;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerRequest;
import com.xxl.tool.response.Response;
import java.util.List;
import java.util.Random;
@ -15,9 +15,9 @@ public class ExecutorRouteRandom extends ExecutorRouter {
private static Random localRandom = new Random();
@Override
public ReturnT<String> route(TriggerRequest triggerParam, List<String> addressList) {
public Response<String> route(TriggerRequest triggerParam, List<String> addressList) {
String address = addressList.get(localRandom.nextInt(addressList.size()));
return ReturnT.ofSuccess(address);
return Response.ofSuccess(address);
}
}

@ -1,8 +1,8 @@
package com.xxl.job.admin.scheduler.route.strategy;
import com.xxl.job.admin.scheduler.route.ExecutorRouter;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerRequest;
import com.xxl.tool.response.Response;
import java.util.List;
import java.util.Random;
@ -38,9 +38,9 @@ public class ExecutorRouteRound extends ExecutorRouter {
}
@Override
public ReturnT<String> route(TriggerRequest triggerParam, List<String> addressList) {
public Response<String> route(TriggerRequest triggerParam, List<String> addressList) {
String address = addressList.get(count(triggerParam.getJobId())%addressList.size());
return ReturnT.ofSuccess(address);
return Response.ofSuccess(address);
}
}

@ -6,6 +6,7 @@ import com.xxl.job.admin.util.I18nUtil;
import com.xxl.job.core.biz.model.HandleCallbackRequest;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.tool.core.DateTool;
import com.xxl.tool.response.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -136,30 +137,30 @@ public class JobCompleteHelper {
// ---------------------- helper ----------------------
public ReturnT<String> callback(List<HandleCallbackRequest> callbackParamList) {
public Response<String> callback(List<HandleCallbackRequest> callbackParamList) {
callbackThreadPool.execute(new Runnable() {
@Override
public void run() {
for (HandleCallbackRequest handleCallbackParam: callbackParamList) {
ReturnT<String> callbackResult = callback(handleCallbackParam);
Response<String> callbackResult = doCallback(handleCallbackParam);
logger.debug(">>>>>>>>> JobApiController.callback {}, handleCallbackParam={}, callbackResult={}",
(callbackResult.isSuccess()?"success":"fail"), handleCallbackParam, callbackResult);
}
}
});
return ReturnT.ofSuccess();
return Response.ofSuccess();
}
private ReturnT<String> callback(HandleCallbackRequest handleCallbackParam) {
private Response<String> doCallback(HandleCallbackRequest handleCallbackParam) {
// valid log item
XxlJobLog log = XxlJobAdminBootstrap.getInstance().getXxlJobLogMapper().load(handleCallbackParam.getLogId());
if (log == null) {
return ReturnT.ofFail( "log item not found.");
return Response.ofFail( "log item not found.");
}
if (log.getHandleCode() > 0) {
return ReturnT.ofFail("log repeate callback."); // avoid repeat callback, trigger child job etc
return Response.ofFail("log repeate callback."); // avoid repeat callback, trigger child job etc
}
// handle msg
@ -177,7 +178,7 @@ public class JobCompleteHelper {
log.setHandleMsg(handleMsg.toString());
XxlJobAdminBootstrap.getInstance().getJobCompleter().complete(log);
return ReturnT.ofSuccess();
return Response.ofSuccess();
}

@ -4,9 +4,9 @@ import com.xxl.job.admin.model.XxlJobGroup;
import com.xxl.job.admin.model.XxlJobRegistry;
import com.xxl.job.admin.scheduler.config.XxlJobAdminBootstrap;
import com.xxl.job.core.biz.model.RegistryRequest;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.enums.RegistryConfig;
import com.xxl.tool.core.StringTool;
import com.xxl.tool.response.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -154,13 +154,13 @@ public class JobRegistryHelper {
/**
* registry
*/
public ReturnT<String> registry(RegistryRequest registryParam) {
public Response<String> registry(RegistryRequest registryParam) {
// valid
if (StringTool.isBlank(registryParam.getRegistryGroup())
|| StringTool.isBlank(registryParam.getRegistryKey())
|| StringTool.isBlank(registryParam.getRegistryValue())) {
return ReturnT.ofFail("Illegal Argument.");
return Response.ofFail("Illegal Argument.");
}
// async execute
@ -183,19 +183,19 @@ public class JobRegistryHelper {
}
});
return ReturnT.ofSuccess();
return Response.ofSuccess();
}
/**
* registry remove
*/
public ReturnT<String> registryRemove(RegistryRequest registryParam) {
public Response<String> registryRemove(RegistryRequest registryParam) {
// valid
if (StringTool.isBlank(registryParam.getRegistryGroup())
|| StringTool.isBlank(registryParam.getRegistryKey())
|| StringTool.isBlank(registryParam.getRegistryValue())) {
return ReturnT.ofFail("Illegal Argument.");
return Response.ofFail("Illegal Argument.");
}
// async execute
@ -210,7 +210,7 @@ public class JobRegistryHelper {
}
});
return ReturnT.ofSuccess();
return Response.ofSuccess();
}
private void freshGroupRegistryInfo(RegistryRequest registryParam){

@ -10,12 +10,12 @@ import com.xxl.job.admin.scheduler.config.XxlJobAdminBootstrap;
import com.xxl.job.admin.scheduler.route.ExecutorRouteStrategyEnum;
import com.xxl.job.admin.util.I18nUtil;
import com.xxl.job.core.biz.ExecutorBiz;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerRequest;
import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
import com.xxl.tool.core.StringTool;
import com.xxl.tool.exception.ThrowableTool;
import com.xxl.tool.http.IPTool;
import com.xxl.tool.response.Response;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -163,7 +163,7 @@ public class JobTrigger {
// 3、init address
String address = null;
ReturnT<String> routeAddressResult = null;
Response<String> routeAddressResult = null;
if (group.getRegistryList()!=null && !group.getRegistryList().isEmpty()) {
if (ExecutorRouteStrategyEnum.SHARDING_BROADCAST == executorRouteStrategyEnum) {
if (index < group.getRegistryList().size()) {
@ -174,19 +174,19 @@ public class JobTrigger {
} else {
routeAddressResult = executorRouteStrategyEnum.getRouter().route(triggerParam, group.getRegistryList());
if (routeAddressResult.isSuccess()) {
address = routeAddressResult.getContent();
address = routeAddressResult.getData();
}
}
} else {
routeAddressResult = ReturnT.ofFail( I18nUtil.getString("jobconf_trigger_address_empty"));
routeAddressResult = Response.ofFail( I18nUtil.getString("jobconf_trigger_address_empty"));
}
// 4、trigger remote executor
ReturnT<String> triggerResult = null;
Response<String> triggerResult = null;
if (address != null) {
triggerResult = doTrigger(triggerParam, address);
} else {
triggerResult = ReturnT.ofFail(null);
triggerResult = Response.ofFail(null);
}
// 5、collection trigger info
@ -228,14 +228,14 @@ public class JobTrigger {
* @param address the address
* @return return
*/
private ReturnT<String> doTrigger(TriggerRequest triggerParam, String address){
ReturnT<String> runResult = null;
private Response<String> doTrigger(TriggerRequest triggerParam, String address){
Response<String> runResult = null;
try {
ExecutorBiz executorBiz = XxlJobAdminBootstrap.getExecutorBiz(address);
runResult = executorBiz.run(triggerParam);
} catch (Exception e) {
logger.error(">>>>>>>>>>> xxl-job trigger error, please check if the executor[{}] is running.", address, e);
runResult = ReturnT.ofFail(ThrowableTool.toString(e));
runResult = Response.ofFail(ThrowableTool.toString(e));
}
StringBuffer runResultSB = new StringBuffer(I18nUtil.getString("jobconf_trigger_run") + "");

@ -4,7 +4,7 @@ import com.xxl.job.admin.scheduler.config.XxlJobAdminBootstrap;
import com.xxl.job.core.biz.AdminBiz;
import com.xxl.job.core.biz.model.HandleCallbackRequest;
import com.xxl.job.core.biz.model.RegistryRequest;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.tool.response.Response;
import org.springframework.stereotype.Service;
import java.util.List;
@ -15,19 +15,18 @@ import java.util.List;
@Service
public class AdminBizImpl implements AdminBiz {
@Override
public ReturnT<String> callback(List<HandleCallbackRequest> handleCallbackRequestList) {
public Response<String> callback(List<HandleCallbackRequest> handleCallbackRequestList) {
return XxlJobAdminBootstrap.getInstance().getJobCompleteHelper().callback(handleCallbackRequestList);
}
@Override
public ReturnT<String> registry(RegistryRequest registryRequest) {
public Response<String> registry(RegistryRequest registryRequest) {
return XxlJobAdminBootstrap.getInstance().getJobRegistryHelper().registry(registryRequest);
}
@Override
public ReturnT<String> registryRemove(RegistryRequest registryRequest) {
public Response<String> registryRemove(RegistryRequest registryRequest) {
return XxlJobAdminBootstrap.getInstance().getJobRegistryHelper().registryRemove(registryRequest);
}

@ -4,9 +4,9 @@ import com.xxl.job.core.biz.AdminBiz;
import com.xxl.job.core.biz.client.AdminBizClient;
import com.xxl.job.core.biz.model.HandleCallbackRequest;
import com.xxl.job.core.biz.model.RegistryRequest;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobContext;
import com.xxl.job.core.enums.RegistryConfig;
import com.xxl.tool.response.Response;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
@ -37,7 +37,7 @@ public class AdminBizTest {
List<HandleCallbackRequest> callbackParamList = Arrays.asList(param);
ReturnT<String> returnT = adminBiz.callback(callbackParamList);
Response<String> returnT = adminBiz.callback(callbackParamList);
assertTrue(returnT.isSuccess());
}
@ -52,7 +52,7 @@ public class AdminBizTest {
AdminBiz adminBiz = new AdminBizClient(addressUrl, accessToken, timeoutSecond);
RegistryRequest registryParam = new RegistryRequest(RegistryConfig.RegistType.EXECUTOR.name(), "xxl-job-executor-example", "127.0.0.1:9999");
ReturnT<String> returnT = adminBiz.registry(registryParam);
Response<String> returnT = adminBiz.registry(registryParam);
assertTrue(returnT.isSuccess());
}
@ -67,7 +67,7 @@ public class AdminBizTest {
AdminBiz adminBiz = new AdminBizClient(addressUrl, accessToken, timeoutSecond);
RegistryRequest registryParam = new RegistryRequest(RegistryConfig.RegistType.EXECUTOR.name(), "xxl-job-executor-example", "127.0.0.1:9999");
ReturnT<String> returnT = adminBiz.registryRemove(registryParam);
Response<String> returnT = adminBiz.registryRemove(registryParam);
assertTrue(returnT.isSuccess());

@ -5,6 +5,7 @@ import com.xxl.job.core.biz.client.ExecutorBizClient;
import com.xxl.job.core.biz.model.*;
import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
import com.xxl.job.core.glue.GlueTypeEnum;
import com.xxl.tool.response.Response;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@ -24,11 +25,11 @@ public class ExecutorBizTest {
public void beat() throws Exception {
ExecutorBiz executorBiz = new ExecutorBizClient(addressUrl, accessToken, timeout);
// Act
final ReturnT<String> retval = executorBiz.beat();
final Response<String> retval = executorBiz.beat();
// Assert result
Assertions.assertNotNull(retval);
Assertions.assertNull(((ReturnT<String>) retval).getContent());
Assertions.assertNull(((Response<String>) retval).getData());
Assertions.assertEquals(200, retval.getCode());
Assertions.assertNull(retval.getMsg());
}
@ -40,11 +41,11 @@ public class ExecutorBizTest {
final int jobId = 0;
// Act
final ReturnT<String> retval = executorBiz.idleBeat(new IdleBeatRequest(jobId));
final Response<String> retval = executorBiz.idleBeat(new IdleBeatRequest(jobId));
// Assert result
Assertions.assertNotNull(retval);
Assertions.assertNull(((ReturnT<String>) retval).getContent());
Assertions.assertNull(((Response<String>) retval).getData());
Assertions.assertEquals(500, retval.getCode());
Assertions.assertEquals("job thread is running or has trigger queue.", retval.getMsg());
}
@ -66,7 +67,7 @@ public class ExecutorBizTest {
triggerParam.setLogDateTime(System.currentTimeMillis());
// Act
final ReturnT<String> retval = executorBiz.run(triggerParam);
final Response<String> retval = executorBiz.run(triggerParam);
// Assert result
Assertions.assertNotNull(retval);
@ -80,11 +81,11 @@ public class ExecutorBizTest {
final int jobId = 0;
// Act
final ReturnT<String> retval = executorBiz.kill(new KillRequest(jobId));
final Response<String> retval = executorBiz.kill(new KillRequest(jobId));
// Assert result
Assertions.assertNotNull(retval);
Assertions.assertNull(((ReturnT<String>) retval).getContent());
Assertions.assertNull(((Response<String>) retval).getData());
Assertions.assertEquals(200, retval.getCode());
Assertions.assertNull(retval.getMsg());
}
@ -98,7 +99,7 @@ public class ExecutorBizTest {
final int fromLineNum = 0;
// Act
final ReturnT<LogResult> retval = executorBiz.log(new LogRequest(logDateTim, logId, fromLineNum));
final Response<LogResult> retval = executorBiz.log(new LogRequest(logDateTim, logId, fromLineNum));
// Assert result
Assertions.assertNotNull(retval);

@ -2,7 +2,7 @@ package com.xxl.job.core.biz;
import com.xxl.job.core.biz.model.HandleCallbackRequest;
import com.xxl.job.core.biz.model.RegistryRequest;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.tool.response.Response;
import java.util.List;
@ -20,7 +20,7 @@ public interface AdminBiz {
* @param handleCallbackRequestList
* @return
*/
public ReturnT<String> callback(List<HandleCallbackRequest> handleCallbackRequestList);
public Response<String> callback(List<HandleCallbackRequest> handleCallbackRequestList);
// ---------------------- registry ----------------------
@ -31,7 +31,7 @@ public interface AdminBiz {
* @param registryRequest
* @return
*/
public ReturnT<String> registry(RegistryRequest registryRequest);
public Response<String> registry(RegistryRequest registryRequest);
/**
* registry remove
@ -39,7 +39,7 @@ public interface AdminBiz {
* @param registryRequest
* @return
*/
public ReturnT<String> registryRemove(RegistryRequest registryRequest);
public Response<String> registryRemove(RegistryRequest registryRequest);
// ---------------------- biz (custome) ----------------------

@ -1,6 +1,7 @@
package com.xxl.job.core.biz;
import com.xxl.job.core.biz.model.*;
import com.xxl.tool.response.Response;
/**
* Created by xuxueli on 17/3/1.
@ -9,37 +10,37 @@ public interface ExecutorBiz {
/**
* beat
* @return
* @return response
*/
public ReturnT<String> beat();
public Response<String> beat();
/**
* idle beat
*
* @param idleBeatRequest
* @return
* @param idleBeatRequest idleBeatRequest
* @return response
*/
public ReturnT<String> idleBeat(IdleBeatRequest idleBeatRequest);
public Response<String> idleBeat(IdleBeatRequest idleBeatRequest);
/**
* run
* @param triggerRequest
* @return
* @param triggerRequest triggerRequest
* @return response
*/
public ReturnT<String> run(TriggerRequest triggerRequest);
public Response<String> run(TriggerRequest triggerRequest);
/**
* kill
* @param killRequest
* @return
* @param killRequest killRequest
* @return response
*/
public ReturnT<String> kill(KillRequest killRequest);
public Response<String> kill(KillRequest killRequest);
/**
* log
* @param logRequest
* @return
* @param logRequest logRequest
* @return response
*/
public ReturnT<LogResult> log(LogRequest logRequest);
public Response<LogResult> log(LogRequest logRequest);
}

@ -3,8 +3,8 @@ package com.xxl.job.core.biz.client;
import com.xxl.job.core.biz.AdminBiz;
import com.xxl.job.core.biz.model.HandleCallbackRequest;
import com.xxl.job.core.biz.model.RegistryRequest;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.util.XxlJobRemotingUtil;
import com.xxl.tool.response.Response;
import java.util.List;
@ -37,17 +37,17 @@ public class AdminBizClient implements AdminBiz {
@Override
public ReturnT<String> callback(List<HandleCallbackRequest> handleCallbackRequestList) {
public Response<String> callback(List<HandleCallbackRequest> handleCallbackRequestList) {
return XxlJobRemotingUtil.postBody(addressUrl+"api/callback", accessToken, timeout, handleCallbackRequestList, String.class);
}
@Override
public ReturnT<String> registry(RegistryRequest registryRequest) {
public Response<String> registry(RegistryRequest registryRequest) {
return XxlJobRemotingUtil.postBody(addressUrl + "api/registry", accessToken, timeout, registryRequest, String.class);
}
@Override
public ReturnT<String> registryRemove(RegistryRequest registryRequest) {
public Response<String> registryRemove(RegistryRequest registryRequest) {
return XxlJobRemotingUtil.postBody(addressUrl + "api/registryRemove", accessToken, timeout, registryRequest, String.class);
}

@ -3,6 +3,7 @@ package com.xxl.job.core.biz.client;
import com.xxl.job.core.biz.ExecutorBiz;
import com.xxl.job.core.biz.model.*;
import com.xxl.job.core.util.XxlJobRemotingUtil;
import com.xxl.tool.response.Response;
/**
* admin api test
@ -33,27 +34,27 @@ public class ExecutorBizClient implements ExecutorBiz {
@Override
public ReturnT<String> beat() {
public Response<String> beat() {
return XxlJobRemotingUtil.postBody(addressUrl+"beat", accessToken, timeout, "", String.class);
}
@Override
public ReturnT<String> idleBeat(IdleBeatRequest idleBeatRequest){
public Response<String> idleBeat(IdleBeatRequest idleBeatRequest){
return XxlJobRemotingUtil.postBody(addressUrl+"idleBeat", accessToken, timeout, idleBeatRequest, String.class);
}
@Override
public ReturnT<String> run(TriggerRequest triggerRequest) {
public Response<String> run(TriggerRequest triggerRequest) {
return XxlJobRemotingUtil.postBody(addressUrl + "run", accessToken, timeout, triggerRequest, String.class);
}
@Override
public ReturnT<String> kill(KillRequest killRequest) {
public Response<String> kill(KillRequest killRequest) {
return XxlJobRemotingUtil.postBody(addressUrl + "kill", accessToken, timeout, killRequest, String.class);
}
@Override
public ReturnT<LogResult> log(LogRequest logRequest) {
public Response<LogResult> log(LogRequest logRequest) {
return XxlJobRemotingUtil.postBody(addressUrl + "log", accessToken, timeout, logRequest, LogResult.class);
}

@ -11,6 +11,7 @@ import com.xxl.job.core.handler.impl.GlueJobHandler;
import com.xxl.job.core.handler.impl.ScriptJobHandler;
import com.xxl.job.core.log.XxlJobFileAppender;
import com.xxl.job.core.thread.JobThread;
import com.xxl.tool.response.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -23,12 +24,12 @@ public class ExecutorBizImpl implements ExecutorBiz {
private static Logger logger = LoggerFactory.getLogger(ExecutorBizImpl.class);
@Override
public ReturnT<String> beat() {
return ReturnT.ofSuccess();
public Response<String> beat() {
return Response.ofSuccess();
}
@Override
public ReturnT<String> idleBeat(IdleBeatRequest idleBeatRequest) {
public Response<String> idleBeat(IdleBeatRequest idleBeatRequest) {
// isRunningOrHasQueue
boolean isRunningOrHasQueue = false;
@ -38,13 +39,13 @@ public class ExecutorBizImpl implements ExecutorBiz {
}
if (isRunningOrHasQueue) {
return ReturnT.ofFail("job thread is running or has trigger queue.");
return Response.ofFail("job thread is running or has trigger queue.");
}
return ReturnT.ofSuccess();
return Response.ofSuccess();
}
@Override
public ReturnT<String> run(TriggerRequest triggerRequest) {
public Response<String> run(TriggerRequest triggerRequest) {
// load oldjobHandler + jobThread
JobThread jobThread = XxlJobExecutor.loadJobThread(triggerRequest.getJobId());
IJobHandler jobHandler = jobThread!=null?jobThread.getHandler():null;
@ -70,7 +71,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
if (jobHandler == null) {
jobHandler = newJobHandler;
if (jobHandler == null) {
return ReturnT.ofFail( "job handler [" + triggerRequest.getExecutorHandler() + "] not found.");
return Response.ofFail( "job handler [" + triggerRequest.getExecutorHandler() + "] not found.");
}
}
@ -94,7 +95,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
jobHandler = new GlueJobHandler(originJobHandler, triggerRequest.getGlueUpdatetime());
} catch (Exception e) {
logger.error(e.getMessage(), e);
return ReturnT.ofFail( e.getMessage());
return Response.ofFail( e.getMessage());
}
}
} else if (glueTypeEnum!=null && glueTypeEnum.isScript()) {
@ -115,7 +116,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
jobHandler = new ScriptJobHandler(triggerRequest.getJobId(), triggerRequest.getGlueUpdatetime(), triggerRequest.getGlueSource(), GlueTypeEnum.match(triggerRequest.getGlueType()));
}
} else {
return ReturnT.ofFail("glueType[" + triggerRequest.getGlueType() + "] is not valid.");
return Response.ofFail("glueType[" + triggerRequest.getGlueType() + "] is not valid.");
}
// executor block strategy
@ -124,7 +125,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
if (ExecutorBlockStrategyEnum.DISCARD_LATER == blockStrategy) {
// discard when running
if (jobThread.isRunningOrHasQueue()) {
return ReturnT.ofFail("block strategy effect"+ExecutorBlockStrategyEnum.DISCARD_LATER.getTitle());
return Response.ofFail("block strategy effect"+ExecutorBlockStrategyEnum.DISCARD_LATER.getTitle());
}
} else if (ExecutorBlockStrategyEnum.COVER_EARLY == blockStrategy) {
// kill running jobThread
@ -144,29 +145,29 @@ public class ExecutorBizImpl implements ExecutorBiz {
}
// push data to queue
ReturnT<String> pushResult = jobThread.pushTriggerQueue(triggerRequest);
Response<String> pushResult = jobThread.pushTriggerQueue(triggerRequest);
return pushResult;
}
@Override
public ReturnT<String> kill(KillRequest killRequest) {
public Response<String> kill(KillRequest killRequest) {
// kill handlerThread, and create new one
JobThread jobThread = XxlJobExecutor.loadJobThread(killRequest.getJobId());
if (jobThread != null) {
XxlJobExecutor.removeJobThread(killRequest.getJobId(), "scheduling center kill job.");
return ReturnT.ofSuccess();
return Response.ofSuccess();
}
return ReturnT.ofSuccess( "job thread already killed.");
return Response.ofSuccess( "job thread already killed.");
}
@Override
public ReturnT<LogResult> log(LogRequest logRequest) {
public Response<LogResult> log(LogRequest logRequest) {
// log filename: logPath/yyyy-MM-dd/9999.log
String logFileName = XxlJobFileAppender.makeLogFileName(new Date(logRequest.getLogDateTim()), logRequest.getLogId());
LogResult logResult = XxlJobFileAppender.readLog(logFileName, logRequest.getFromLineNum());
return ReturnT.ofSuccess(logResult);
return Response.ofSuccess(logResult);
}
}

@ -155,7 +155,7 @@ public class EmbedServer {
@Override
public void run() {
// do invoke
Object responseObj = process(httpMethod, uri, requestData, accessTokenReq);
Object responseObj = dispatchRequest(httpMethod, uri, requestData, accessTokenReq);
// to json
String responseJson = GsonTool.toJson(responseObj);
@ -166,16 +166,16 @@ public class EmbedServer {
});
}
private Object process(HttpMethod httpMethod, String uri, String requestData, String accessTokenReq) {
private Object dispatchRequest(HttpMethod httpMethod, String uri, String requestData, String accessTokenReq) {
// valid
if (HttpMethod.POST != httpMethod) {
return ReturnT.ofFail("invalid request, HttpMethod not support.");
}
if (uri == null || uri.trim().length() == 0) {
if (uri == null || uri.trim().isEmpty()) {
return ReturnT.ofFail( "invalid request, uri-mapping empty.");
}
if (accessToken != null
&& accessToken.trim().length() > 0
&& !accessToken.trim().isEmpty()
&& !accessToken.equals(accessTokenReq)) {
return ReturnT.ofFail("The access token is wrong.");
}

@ -2,9 +2,9 @@ package com.xxl.job.core.thread;
import com.xxl.job.core.biz.AdminBiz;
import com.xxl.job.core.biz.model.RegistryRequest;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.enums.RegistryConfig;
import com.xxl.job.core.executor.XxlJobExecutor;
import com.xxl.tool.response.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -45,9 +45,9 @@ public class ExecutorRegistryThread {
RegistryRequest registryParam = new RegistryRequest(RegistryConfig.RegistType.EXECUTOR.name(), appname, address);
for (AdminBiz adminBiz: XxlJobExecutor.getAdminBizList()) {
try {
ReturnT<String> registryResult = adminBiz.registry(registryParam);
Response<String> registryResult = adminBiz.registry(registryParam);
if (registryResult!=null && registryResult.isSuccess()) {
registryResult = ReturnT.ofSuccess();
registryResult = Response.ofSuccess();
logger.debug(">>>>>>>>>>> xxl-job registry success, registryParam:{}, registryResult:{}", new Object[]{registryParam, registryResult});
break;
} else {
@ -81,9 +81,9 @@ public class ExecutorRegistryThread {
RegistryRequest registryParam = new RegistryRequest(RegistryConfig.RegistType.EXECUTOR.name(), appname, address);
for (AdminBiz adminBiz: XxlJobExecutor.getAdminBizList()) {
try {
ReturnT<String> registryResult = adminBiz.registryRemove(registryParam);
Response<String> registryResult = adminBiz.registryRemove(registryParam);
if (registryResult!=null && registryResult.isSuccess()) {
registryResult = ReturnT.ofSuccess();
registryResult = Response.ofSuccess();
logger.info(">>>>>>>>>>> xxl-job registry-remove success, registryParam:{}, registryResult:{}", new Object[]{registryParam, registryResult});
break;
} else {

@ -1,13 +1,13 @@
package com.xxl.job.core.thread;
import com.xxl.job.core.biz.model.HandleCallbackRequest;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerRequest;
import com.xxl.job.core.context.XxlJobContext;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.executor.XxlJobExecutor;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.log.XxlJobFileAppender;
import com.xxl.tool.response.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -57,16 +57,16 @@ public class JobThread extends Thread{
* @param triggerParam
* @return
*/
public ReturnT<String> pushTriggerQueue(TriggerRequest triggerParam) {
public Response<String> pushTriggerQueue(TriggerRequest triggerParam) {
// avoid repeat
if (!triggerLogIdSet.add(triggerParam.getLogId())) {
logger.info(">>>>>>>>>>> repeate trigger job, logId:{}", triggerParam.getLogId());
return ReturnT.ofFail("repeate trigger job, logId:" + triggerParam.getLogId());
return Response.ofFail("repeate trigger job, logId:" + triggerParam.getLogId());
}
// push trigger queue
triggerQueue.add(triggerParam);
return ReturnT.ofSuccess();
return Response.ofSuccess();
}
/**

@ -2,7 +2,6 @@ package com.xxl.job.core.thread;
import com.xxl.job.core.biz.AdminBiz;
import com.xxl.job.core.biz.model.HandleCallbackRequest;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobContext;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.enums.RegistryConfig;
@ -14,6 +13,7 @@ import com.xxl.tool.core.StringTool;
import com.xxl.tool.encrypt.Md5Tool;
import com.xxl.tool.gson.GsonTool;
import com.xxl.tool.io.FileTool;
import com.xxl.tool.response.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -181,7 +181,7 @@ public class TriggerCallbackThread {
// callback, will retry if error
for (AdminBiz adminBiz: XxlJobExecutor.getAdminBizList()) {
try {
ReturnT<String> callbackResult = adminBiz.callback(callbackParamList);
Response<String> callbackResult = adminBiz.callback(callbackParamList);
if (callbackResult!=null && callbackResult.isSuccess()) {
callbackLog(callbackParamList, "<br>----------- xxl-job job callback finish.");
callbackRet = true;

@ -1,7 +1,7 @@
package com.xxl.job.core.util;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.tool.gson.GsonTool;
import com.xxl.tool.response.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -65,7 +65,7 @@ public class XxlJobRemotingUtil {
* @param returnTargClassOfT
* @return
*/
public static ReturnT postBody(String url, String accessToken, int timeout, Object requestObj, Class returnTargClassOfT) {
public static Response postBody(String url, String accessToken, int timeout, Object requestObj, Class returnTargClassOfT) {
HttpURLConnection connection = null;
BufferedReader bufferedReader = null;
DataOutputStream dataOutputStream = null;
@ -119,7 +119,7 @@ public class XxlJobRemotingUtil {
// valid StatusCode
int statusCode = connection.getResponseCode();
if (statusCode != 200) {
return ReturnT.ofFail("xxl-job remoting fail, StatusCode("+ statusCode +") invalid. for url : " + url);
return Response.ofFail("xxl-job remoting fail, StatusCode("+ statusCode +") invalid. for url : " + url);
}
// result
@ -133,16 +133,16 @@ public class XxlJobRemotingUtil {
// parse returnT
try {
ReturnT returnT = GsonTool.fromJson(resultJson, ReturnT.class, returnTargClassOfT);
Response returnT = GsonTool.fromJson(resultJson, Response.class, returnTargClassOfT);
return returnT;
} catch (Exception e) {
logger.error("xxl-job remoting (url="+url+") response content invalid("+ resultJson +").", e);
return ReturnT.ofFail("xxl-job remoting (url="+url+") response content invalid("+ resultJson +").");
return Response.ofFail("xxl-job remoting (url="+url+") response content invalid("+ resultJson +").");
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
return ReturnT.ofFail("xxl-job remoting error("+ e.getMessage() +"), for url : " + url);
return Response.ofFail("xxl-job remoting error("+ e.getMessage() +"), for url : " + url);
} finally {
try {
if (dataOutputStream != null) {

Loading…
Cancel
Save