diff --git a/.gitignore b/.gitignore index 0f8aae2d..7433d23d 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ /datax-rpc/target/ /datax-all.iml /logs/ -*-dev* \ No newline at end of file +*-dev* +/data/ diff --git a/datax-admin/pom.xml b/datax-admin/pom.xml index cf85a69c..106760d3 100644 --- a/datax-admin/pom.xml +++ b/datax-admin/pom.xml @@ -126,6 +126,21 @@ ${basedir}/src/main/lib/sqljdbc4-4.0.jar + + com.oracle + local_policy + 4.0 + system + ${basedir}/src/main/lib/local_policy.jar + + + com.oracle + US_export_policy + 4.0 + system + ${basedir}/src/main/lib/US_export_policy.jar + + org.slf4j slf4j-api diff --git a/datax-admin/src/main/java/com/wugui/datax/admin/controller/JobInfoController.java b/datax-admin/src/main/java/com/wugui/datax/admin/controller/JobInfoController.java index 2b14f653..4132c5ab 100644 --- a/datax-admin/src/main/java/com/wugui/datax/admin/controller/JobInfoController.java +++ b/datax-admin/src/main/java/com/wugui/datax/admin/controller/JobInfoController.java @@ -102,7 +102,7 @@ public class JobInfoController { } } } catch (ParseException e) { - return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")); + return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_invalid")); } return new ReturnT<>(result); } diff --git a/datax-admin/src/main/java/com/wugui/datax/admin/controller/JobTemplateController.java b/datax-admin/src/main/java/com/wugui/datax/admin/controller/JobTemplateController.java index 3a5de855..8fc16b59 100644 --- a/datax-admin/src/main/java/com/wugui/datax/admin/controller/JobTemplateController.java +++ b/datax-admin/src/main/java/com/wugui/datax/admin/controller/JobTemplateController.java @@ -74,7 +74,7 @@ public class JobTemplateController { } } } catch (ParseException e) { - return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")); + return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_invalid")); } return new ReturnT<>(result); } diff --git a/datax-admin/src/main/java/com/wugui/datax/admin/core/trigger/JobTrigger.java b/datax-admin/src/main/java/com/wugui/datax/admin/core/trigger/JobTrigger.java index f53688be..251823cd 100644 --- a/datax-admin/src/main/java/com/wugui/datax/admin/core/trigger/JobTrigger.java +++ b/datax-admin/src/main/java/com/wugui/datax/admin/core/trigger/JobTrigger.java @@ -49,7 +49,7 @@ public class JobTrigger { } if (GlueTypeEnum.BEAN.getDesc().equals(jobInfo.getGlueType())) { //解密账密 - String json = JSONUtils.decryptJson(jobInfo.getJobJson()); + String json = JSONUtils.changeJson(jobInfo.getJobJson(), JSONUtils.decrypt); jobInfo.setJobJson(json); } if (StringUtils.isNotBlank(executorParam)) { diff --git a/datax-admin/src/main/java/com/wugui/datax/admin/entity/JwtUser.java b/datax-admin/src/main/java/com/wugui/datax/admin/entity/JwtUser.java index 8fd30a19..217a2a5c 100644 --- a/datax-admin/src/main/java/com/wugui/datax/admin/entity/JwtUser.java +++ b/datax-admin/src/main/java/com/wugui/datax/admin/entity/JwtUser.java @@ -21,11 +21,11 @@ public class JwtUser implements UserDetails { } // 写一个能直接使用user创建jwtUser的构造器 - public JwtUser(JobUser user) { + public JwtUser(JobUser user, JobRole role) { id = user.getId(); username = user.getUsername(); password = user.getPassword(); - authorities = Collections.singleton(new SimpleGrantedAuthority(user.getRole())); + authorities = Collections.singleton(new SimpleGrantedAuthority(role.getName())); } @Override diff --git a/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/JobServiceImpl.java b/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/JobServiceImpl.java index c502fd13..dca34b9e 100644 --- a/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/JobServiceImpl.java +++ b/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/JobServiceImpl.java @@ -15,8 +15,11 @@ import com.wugui.datax.admin.entity.JobLogReport; import com.wugui.datax.admin.mapper.*; import com.wugui.datax.admin.service.JobService; import com.wugui.datax.admin.util.CronUtil; +import com.wugui.datax.admin.util.JSONUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -52,7 +55,7 @@ public class JobServiceImpl implements JobService { int list_count = jobInfoMapper.pageListCount(start, length, jobGroup, triggerStatus, jobDesc, glueType, author); // package result - Map maps = new HashMap(); + Map maps = new HashMap<>(); maps.put("recordsTotal", list_count); // 总记录数 maps.put("recordsFiltered", list_count); // 过滤后的总记录数 maps.put("data", list); // 分页列表 @@ -64,31 +67,31 @@ public class JobServiceImpl implements JobService { // valid JobGroup group = jobGroupMapper.load(jobInfo.getJobGroup()); if (group == null) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_choose") + I18nUtil.getString("jobinfo_field_jobgroup"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_choose") + I18nUtil.getString("jobinfo_field_jobgroup"))); } if (!CronExpression.isValidExpression(jobInfo.getJobCron())) { - return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")); + return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_invalid")); } if (jobInfo.getGlueType().equals(GlueTypeEnum.BEAN.getDesc()) && jobInfo.getJobJson().trim().length() <= 2) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_jobjson"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_jobjson"))); } if (jobInfo.getJobDesc() == null || jobInfo.getJobDesc().trim().length() == 0) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_jobdesc"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_jobdesc"))); } if (jobInfo.getAuthor() == null || jobInfo.getAuthor().trim().length() == 0) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_author"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_author"))); } if (ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null) == null) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorRouteStrategy") + I18nUtil.getString("system_unvalid"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorRouteStrategy") + I18nUtil.getString("system_unvalid"))); } if (ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), null) == null) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy") + I18nUtil.getString("system_unvalid"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy") + I18nUtil.getString("system_unvalid"))); } if (GlueTypeEnum.match(jobInfo.getGlueType()) == null) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_gluetype") + I18nUtil.getString("system_unvalid"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_gluetype") + I18nUtil.getString("system_unvalid"))); } if (GlueTypeEnum.BEAN == GlueTypeEnum.match(jobInfo.getGlueType()) && (jobInfo.getExecutorHandler() == null || jobInfo.getExecutorHandler().trim().length() == 0)) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + "JobHandler")); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + "JobHandler")); } // fix "\r" in shell @@ -124,14 +127,15 @@ public class JobServiceImpl implements JobService { // add in db jobInfo.setAddTime(new Date()); + jobInfo.setJobJson(JSONUtils.changeJson(jobInfo.getJobJson(), JSONUtils.encrypt)); jobInfo.setUpdateTime(new Date()); jobInfo.setGlueUpdatetime(new Date()); jobInfoMapper.save(jobInfo); if (jobInfo.getId() < 1) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_add") + I18nUtil.getString("system_fail"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_add") + I18nUtil.getString("system_fail"))); } - return new ReturnT(String.valueOf(jobInfo.getId())); + return new ReturnT<>(String.valueOf(jobInfo.getId())); } @Override @@ -153,22 +157,22 @@ public class JobServiceImpl implements JobService { // valid if (!CronExpression.isValidExpression(jobInfo.getJobCron())) { - return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")); + return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_invalid")); } if (jobInfo.getGlueType().equals(GlueTypeEnum.BEAN.getDesc()) && jobInfo.getJobJson().trim().length() <= 2) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_jobjson"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_jobjson"))); } if (jobInfo.getJobDesc() == null || jobInfo.getJobDesc().trim().length() == 0) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_jobdesc"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_jobdesc"))); } if (jobInfo.getAuthor() == null || jobInfo.getAuthor().trim().length() == 0) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_author"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_author"))); } if (ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null) == null) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorRouteStrategy") + I18nUtil.getString("system_unvalid"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorRouteStrategy") + I18nUtil.getString("system_unvalid"))); } if (ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), null) == null) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy") + I18nUtil.getString("system_unvalid"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy") + I18nUtil.getString("system_unvalid"))); } // ChildJobId valid @@ -200,7 +204,7 @@ public class JobServiceImpl implements JobService { // group valid JobGroup jobGroup = jobGroupMapper.load(jobInfo.getJobGroup()); if (jobGroup == null) { - return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_jobgroup") + I18nUtil.getString("system_unvalid"))); + return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_jobgroup") + I18nUtil.getString("system_unvalid"))); } // stage job info @@ -220,26 +224,15 @@ public class JobServiceImpl implements JobService { nextTriggerTime = nextValidTime.getTime(); } catch (ParseException e) { logger.error(e.getMessage(), e); - return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid") + " | " + e.getMessage()); + return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_invalid") + " | " + e.getMessage()); } } - exists_jobInfo.setJobGroup(jobInfo.getJobGroup()); - exists_jobInfo.setJobCron(jobInfo.getJobCron()); - exists_jobInfo.setJobDesc(jobInfo.getJobDesc()); - exists_jobInfo.setAuthor(jobInfo.getAuthor()); - exists_jobInfo.setAlarmEmail(jobInfo.getAlarmEmail()); - exists_jobInfo.setExecutorRouteStrategy(jobInfo.getExecutorRouteStrategy()); - exists_jobInfo.setExecutorHandler(jobInfo.getExecutorHandler()); - exists_jobInfo.setExecutorParam(jobInfo.getExecutorParam()); - exists_jobInfo.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy()); - exists_jobInfo.setExecutorTimeout(jobInfo.getExecutorTimeout()); - exists_jobInfo.setExecutorFailRetryCount(jobInfo.getExecutorFailRetryCount()); - exists_jobInfo.setChildJobId(jobInfo.getChildJobId()); - exists_jobInfo.setTriggerNextTime(nextTriggerTime); + BeanUtils.copyProperties(jobInfo,exists_jobInfo); exists_jobInfo.setReplaceParam(jobInfo.getReplaceParam()); exists_jobInfo.setJvmParam(jobInfo.getJvmParam()); exists_jobInfo.setIncStartTime(jobInfo.getIncStartTime()); + exists_jobInfo.setTriggerNextTime(nextTriggerTime); exists_jobInfo.setUpdateTime(new Date()); exists_jobInfo.setGlueType(jobInfo.getGlueType()); exists_jobInfo.setPartitionInfo(jobInfo.getPartitionInfo()); @@ -285,7 +278,7 @@ public class JobServiceImpl implements JobService { nextTriggerTime = nextValidTime.getTime(); } catch (ParseException e) { logger.error(e.getMessage(), e); - return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid") + " | " + e.getMessage()); + return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_invalid") + " | " + e.getMessage()); } xxlJobInfo.setTriggerStatus(1); diff --git a/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/JobTemplateServiceImpl.java b/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/JobTemplateServiceImpl.java index 1edf37a1..1f664a8d 100644 --- a/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/JobTemplateServiceImpl.java +++ b/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/JobTemplateServiceImpl.java @@ -49,7 +49,7 @@ public class JobTemplateServiceImpl implements JobTemplateService { int list_count = jobTemplateMapper.pageListCount(start, length, jobGroup, jobDesc, executorHandler, author); // package result - Map maps = new HashMap(); + Map maps = new HashMap<>(); maps.put("recordsTotal", list_count); // 总记录数 maps.put("recordsFiltered", list_count); // 过滤后的总记录数 maps.put("data", list); // 分页列表 @@ -64,7 +64,7 @@ public class JobTemplateServiceImpl implements JobTemplateService { return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_choose")+I18nUtil.getString("jobinfo_field_jobgroup")) ); } if (!CronExpression.isValidExpression(jobTemplate.getJobCron())) { - return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid") ); + return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_invalid") ); } if (jobTemplate.getJobDesc()==null || jobTemplate.getJobDesc().trim().length()==0) { return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input")+I18nUtil.getString("jobinfo_field_jobdesc")) ); @@ -142,7 +142,7 @@ public class JobTemplateServiceImpl implements JobTemplateService { // valid if (!CronExpression.isValidExpression(jobTemplate.getJobCron())) { - return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")); + return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_invalid")); } if (jobTemplate.getJobDesc()==null || jobTemplate.getJobDesc().trim().length()==0) { return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_field_jobdesc"))); diff --git a/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/UserDetailsServiceImpl.java b/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/UserDetailsServiceImpl.java index dcd9ee05..b1300829 100644 --- a/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/UserDetailsServiceImpl.java +++ b/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/UserDetailsServiceImpl.java @@ -1,5 +1,6 @@ package com.wugui.datax.admin.service.impl; +import com.wugui.datax.admin.entity.JobRole; import com.wugui.datax.admin.entity.JwtUser; import com.wugui.datax.admin.entity.JobUser; import com.wugui.datax.admin.mapper.JobUserMapper; @@ -24,7 +25,8 @@ public class UserDetailsServiceImpl implements UserDetailsService { @Override public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { JobUser user = jobUserMapper.loadByUserName(s); - return new JwtUser(user); + JobRole role = jobUserMapper.getRoleByUserId(user.getId()); + return new JwtUser(user, role); } } diff --git a/datax-admin/src/main/java/com/wugui/datax/admin/util/JSONUtils.java b/datax-admin/src/main/java/com/wugui/datax/admin/util/JSONUtils.java index fea427a7..b49a4f4d 100644 --- a/datax-admin/src/main/java/com/wugui/datax/admin/util/JSONUtils.java +++ b/datax-admin/src/main/java/com/wugui/datax/admin/util/JSONUtils.java @@ -1,6 +1,5 @@ package com.wugui.datax.admin.util; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -15,105 +14,63 @@ import com.alibaba.fastjson.JSONObject; public class JSONUtils { /** - * 返回格式化的json - * - * @param object + * decrypt 解密 + */ + public static Integer decrypt = 0; + /** + * decrypt 加密 + */ + public static Integer encrypt = 1; + + /** + * @param content + * @param key + * @param changeType 0加密 or 1解密 * @return */ - public static String formatJson(Object object) { - return JSON.toJSONString(object, true); + public static JSONObject change(String content, String key, Integer changeType) { + JSONObject keyObj = JSONObject.parseObject(JSONObject.parseObject(content).getString(key)); + JSONObject params = JSONObject.parseObject(keyObj.getString("parameter")); + String dUsername = null, dPassword = null; + if (decrypt.equals(changeType)) { //解密 + dUsername = AESUtil.decrypt(params.getString("username")); + dPassword = AESUtil.decrypt(params.getString("password")); + + } else if (encrypt.equals(changeType)) {//加密 + + dUsername = AESUtil.encrypt(params.getString("username")); + dPassword = AESUtil.encrypt(params.getString("password")); + } + String username = dUsername == null ? params.getString("username") : dUsername; + String password = dPassword == null ? params.getString("password") : dPassword; + params.put("username", username); + params.put("password", password); + keyObj.put("parameter", params); + return keyObj; } - public static String decryptJson(String jsonStr) { + /** + * @param jsonStr + * @param changeType 0加密 or 1解密 + * @return jsonStr + */ + public static String changeJson(String jsonStr, Integer changeType) { JSONObject json = JSONObject.parseObject(jsonStr); JSONObject job = json.getJSONObject("job"); - JSONArray content = job.getJSONArray("content"); - for (int i = 0; i < content.size(); i++) { - ((JSONObject) content.get(i)).put("reader", decrypt(content.getString(i), "reader")); - ((JSONObject) content.get(i)).put("writer", decrypt(content.getString(i), "writer")); + JSONArray contents = job.getJSONArray("content"); + for (int i = 0; i < contents.size(); i++) { + String contentStr = contents.getString(i); + Object obj = contents.get(i); + if (decrypt.equals(changeType)) { //解密 + ((JSONObject) obj).put("reader", change(contentStr, "reader", decrypt)); + ((JSONObject) obj).put("writer", change(contentStr, "writer", decrypt)); + } else if (encrypt.equals(changeType)) {//加密 + ((JSONObject) obj).put("reader", change(contentStr, "reader", encrypt)); + ((JSONObject) obj).put("writer", change(contentStr, "writer", encrypt)); + } } - job.put("content", content); + job.put("content", contents); json.put("job", job); return json.toJSONString(); } - - public static JSONObject decrypt(String content, String key) { - JSONObject writer = JSONObject.parseObject(JSONObject.parseObject(content).getString(key)); - JSONObject writerParams = JSONObject.parseObject(writer.getString("parameter")); - - String dUsername = AESUtil.decrypt(writerParams.getString("username")); - String username = dUsername == null ? writerParams.getString("username") : dUsername; - writerParams.put("username", username); - - String dPassword = AESUtil.decrypt(writerParams.getString("password")); - String password = dPassword == null ? writerParams.getString("password") : dPassword; - writerParams.put("password", password); - - writer.put("parameter", writerParams); - return writer; - } - - - public static void main(String[] args) { - String s = "{\n" + - " \"job\": {\n" + - " \"setting\": {\n" + - " \"speed\": {\n" + - " \"channel\": 3\n" + - " },\n" + - " \"errorLimit\": {\n" + - " \"record\": 0,\n" + - " \"percentage\": 0.02\n" + - " }\n" + - " },\n" + - " \"content\": [\n" + - " {\n" + - " \"reader\": {\n" + - " \"name\": \"mysqlreader\",\n" + - " \"parameter\": {\n" + - " \"username\": \"8ivlZcKGclwi5NwpuzkXzg==\",\n" + - " \"password\": \"fZfGM5387/mzCDxqjb2thQ==\",\n" + - " \"column\": [\n" + - " \"`id`\"\n" + - " ],\n" + - " \"splitPk\": \"\",\n" + - " \"connection\": [\n" + - " {\n" + - " \"table\": [\n" + - " \"datax_plugin\"\n" + - " ],\n" + - " \"jdbcUrl\": [\n" + - " \"jdbc:mysql://localhost:3306/datax_web\"\n" + - " ]\n" + - " }\n" + - " ]\n" + - " }\n" + - " },\n" + - " \"writer\": {\n" + - " \"name\": \"mysqlwriter\",\n" + - " \"parameter\": {\n" + - " \"username\": \"8ivlZcKGclwi5NwpuzkXzg==\",\n" + - " \"password\": \"fZfGM5387/mzCDxqjb2thQ==\",\n" + - " \"column\": [\n" + - " \"`id`\"\n" + - " ],\n" + - " \"preSql\": [\n" + - " \"\"\n" + - " ],\n" + - " \"connection\": [\n" + - " {\n" + - " \"table\": [\n" + - " \"job_log\"\n" + - " ],\n" + - " \"jdbcUrl\": \"jdbc:mysql://localhost:3306/datax_web\"\n" + - " }\n" + - " ]\n" + - " }\n" + - " }\n" + - " }\n" + - " ]\n" + - " }\n" + - "}"; - System.out.println(decryptJson(s)); - } } diff --git a/datax-admin/src/main/java/com/wugui/datax/admin/util/ServletUtils.java b/datax-admin/src/main/java/com/wugui/datax/admin/util/ServletUtils.java index 942689b5..5f936de6 100644 --- a/datax-admin/src/main/java/com/wugui/datax/admin/util/ServletUtils.java +++ b/datax-admin/src/main/java/com/wugui/datax/admin/util/ServletUtils.java @@ -56,7 +56,7 @@ public class ServletUtils { * requestContextFilter/* */ public static HttpServletResponse getResponse() { - HttpServletResponse response = null; + HttpServletResponse response; try { response = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getResponse(); if (response == null) { diff --git a/datax-admin/src/main/lib/US_export_policy.jar b/datax-admin/src/main/lib/US_export_policy.jar new file mode 100644 index 00000000..251b102c Binary files /dev/null and b/datax-admin/src/main/lib/US_export_policy.jar differ diff --git a/datax-admin/src/main/lib/local_policy.jar b/datax-admin/src/main/lib/local_policy.jar new file mode 100644 index 00000000..1c58939b Binary files /dev/null and b/datax-admin/src/main/lib/local_policy.jar differ diff --git a/datax-admin/src/main/resources/i18n/message.properties b/datax-admin/src/main/resources/i18n/message.properties index db263c23..dfe1e567 100644 --- a/datax-admin/src/main/resources/i18n/message.properties +++ b/datax-admin/src/main/resources/i18n/message.properties @@ -122,7 +122,7 @@ jobinfo_field_readerColumns=Reader Column jobinfo_field_writerColumns=Writer Column jobinfo_field_gluetype=运行模式 jobinfo_field_executorparam=任务参数 -jobinfo_field_cron_unvalid=Cron格式非法 +jobinfo_field_cron_invalid=Cron格式非法 jobinfo_field_cron_never_fire=Cron非法,永远不会触发 jobinfo_field_author=负责人 jobinfo_field_timeout=任务超时时间 diff --git a/datax-admin/src/main/resources/i18n/message_en.properties b/datax-admin/src/main/resources/i18n/message_en.properties index 155539c6..70b14afd 100644 --- a/datax-admin/src/main/resources/i18n/message_en.properties +++ b/datax-admin/src/main/resources/i18n/message_en.properties @@ -117,7 +117,7 @@ jobinfo_field_jobJSON=Job JSON jobinfo_field_timeout=Job timeout period jobinfo_field_gluetype=GLUE Type jobinfo_field_executorparam=Param -jobinfo_field_cron_unvalid=The Cron is illegal +jobinfo_field_cron_invalid=The Cron is illegal jobinfo_field_cron_never_fire=The Cron will never fire jobinfo_field_author=Author jobinfo_field_alarmemail=Alarm email diff --git a/datax-admin/src/main/resources/mybatis-mapper/JobUserMapper.xml b/datax-admin/src/main/resources/mybatis-mapper/JobUserMapper.xml index 70cc54f1..2a8f0657 100644 --- a/datax-admin/src/main/resources/mybatis-mapper/JobUserMapper.xml +++ b/datax-admin/src/main/resources/mybatis-mapper/JobUserMapper.xml @@ -65,7 +65,7 @@ UPDATE job_user SET - password = #{password}, + password = #{password} role = #{role}, permission = #{permission} diff --git a/datax-core/src/main/java/com/wugui/datatx/core/thread/JobThread.java b/datax-core/src/main/java/com/wugui/datatx/core/thread/JobThread.java index 8fd19b1d..85350edd 100644 --- a/datax-core/src/main/java/com/wugui/datatx/core/thread/JobThread.java +++ b/datax-core/src/main/java/com/wugui/datatx/core/thread/JobThread.java @@ -46,8 +46,8 @@ public class JobThread extends Thread { public JobThread(int jobId, IJobHandler handler) { this.jobId = jobId; this.handler = handler; - this.triggerQueue = new LinkedBlockingQueue(); - this.triggerLogIdSet = Collections.synchronizedSet(new HashSet()); + this.triggerQueue = new LinkedBlockingQueue<>(); + this.triggerLogIdSet = Collections.synchronizedSet(new HashSet<>()); } public IJobHandler getHandler() { diff --git a/datax-executor/src/main/java/com/wugui/datax/executor/core/config/DataXConfig.java b/datax-executor/src/main/java/com/wugui/datax/executor/core/config/DataXConfig.java index feb61953..95228958 100644 --- a/datax-executor/src/main/java/com/wugui/datax/executor/core/config/DataXConfig.java +++ b/datax-executor/src/main/java/com/wugui/datax/executor/core/config/DataXConfig.java @@ -70,7 +70,7 @@ public class DataXConfig { * spring-cloud-commons * ${version} * - * + *AE * 2、配置文件,或者容器启动变量 * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.' * diff --git a/datax-registry/src/main/java/com.wugui.datax.registry/XxlRegistryBaseClient.java b/datax-registry/src/main/java/com.wugui.datax.registry/XxlRegistryBaseClient.java index f0157806..0fee1661 100644 --- a/datax-registry/src/main/java/com.wugui.datax.registry/XxlRegistryBaseClient.java +++ b/datax-registry/src/main/java/com.wugui.datax.registry/XxlRegistryBaseClient.java @@ -33,13 +33,13 @@ public class XxlRegistryBaseClient { this.env = env; // valid - if (adminAddress==null || adminAddress.trim().length()==0) { + if (adminAddress == null || adminAddress.trim().length() == 0) { throw new RuntimeException("xxl-registry adminAddress empty"); } - if (biz==null || biz.trim().length()<4 || biz.trim().length()>255) { + if (biz == null || biz.trim().length() < 4 || biz.trim().length() > 255) { throw new RuntimeException("xxl-registry biz empty Invalid[4~255]"); } - if (env==null || env.trim().length()<2 || env.trim().length()>255) { + if (env == null || env.trim().length() < 2 || env.trim().length() > 255) { throw new RuntimeException("xxl-registry biz env Invalid[2~255]"); } @@ -59,17 +59,17 @@ public class XxlRegistryBaseClient { * @param registryDataList * @return */ - public boolean registry(List registryDataList){ + public boolean registry(List registryDataList) { // valid - if (registryDataList==null || registryDataList.size()==0) { + if (registryDataList == null || registryDataList.size() == 0) { throw new RuntimeException("xxl-registry registryDataList empty"); } - for (XxlRegistryDataParamVO registryParam: registryDataList) { - if (registryParam.getKey()==null || registryParam.getKey().trim().length()<4 || registryParam.getKey().trim().length()>255) { + for (XxlRegistryDataParamVO registryParam : registryDataList) { + if (registryParam.getKey() == null || registryParam.getKey().trim().length() < 4 || registryParam.getKey().trim().length() > 255) { throw new RuntimeException("xxl-registry registryDataList#key Invalid[4~255]"); } - if (registryParam.getValue()==null || registryParam.getValue().trim().length()<4 || registryParam.getValue().trim().length()>255) { + if (registryParam.getValue() == null || registryParam.getValue().trim().length() < 4 || registryParam.getValue().trim().length() > 255) { throw new RuntimeException("xxl-registry registryDataList#value Invalid[4~255]"); } } @@ -88,12 +88,12 @@ public class XxlRegistryBaseClient { // result Map respObj = requestAndValid(pathUrl, paramsJson, 5); - return respObj!=null?true:false; + return respObj != null ? true : false; } - private Map requestAndValid(String pathUrl, String requestBody, int timeout){ + private Map requestAndValid(String pathUrl, String requestBody, int timeout) { - for (String adminAddressUrl: adminAddressArr) { + for (String adminAddressUrl : adminAddressArr) { String finalUrl = adminAddressUrl + pathUrl; // request @@ -106,14 +106,15 @@ public class XxlRegistryBaseClient { Map resopnseMap = null; try { resopnseMap = BasicJson.parseMap(responseData); - } catch (Exception e) { } + } catch (Exception e) { + } // valid resopnse - if (resopnseMap==null + if (resopnseMap == null || !resopnseMap.containsKey("code") || !"200".equals(String.valueOf(resopnseMap.get("code"))) - ) { + ) { logger.warn("XxlRegistryBaseClient response fail, responseData={}", responseData); return null; } @@ -133,14 +134,14 @@ public class XxlRegistryBaseClient { */ public boolean remove(List registryDataList) { // valid - if (registryDataList==null || registryDataList.size()==0) { + if (registryDataList == null || registryDataList.size() == 0) { throw new RuntimeException("xxl-registry registryDataList empty"); } - for (XxlRegistryDataParamVO registryParam: registryDataList) { - if (registryParam.getKey()==null || registryParam.getKey().trim().length()<4 || registryParam.getKey().trim().length()>255) { + for (XxlRegistryDataParamVO registryParam : registryDataList) { + if (registryParam.getKey() == null || registryParam.getKey().trim().length() < 4 || registryParam.getKey().trim().length() > 255) { throw new RuntimeException("xxl-registry registryDataList#key Invalid[4~255]"); } - if (registryParam.getValue()==null || registryParam.getValue().trim().length()<4 || registryParam.getValue().trim().length()>255) { + if (registryParam.getValue() == null || registryParam.getValue().trim().length() < 4 || registryParam.getValue().trim().length() > 255) { throw new RuntimeException("xxl-registry registryDataList#value Invalid[4~255]"); } } @@ -159,7 +160,7 @@ public class XxlRegistryBaseClient { // result Map respObj = requestAndValid(pathUrl, paramsJson, 5); - return respObj!=null?true:false; + return respObj != null ? true : false; } /** @@ -170,7 +171,7 @@ public class XxlRegistryBaseClient { */ public Map> discovery(Set keys) { // valid - if (keys==null || keys.size()==0) { + if (keys == null || keys.size() == 0) { throw new RuntimeException("xxl-registry keys empty"); } @@ -190,7 +191,7 @@ public class XxlRegistryBaseClient { Map respObj = requestAndValid(pathUrl, paramsJson, 5); // parse - if (respObj!=null && respObj.containsKey("data")) { + if (respObj != null && respObj.containsKey("data")) { Map> data = (Map>) respObj.get("data"); return data; } @@ -206,7 +207,7 @@ public class XxlRegistryBaseClient { */ public boolean monitor(Set keys) { // valid - if (keys==null || keys.size()==0) { + if (keys == null || keys.size() == 0) { throw new RuntimeException("xxl-registry keys empty"); } @@ -224,7 +225,7 @@ public class XxlRegistryBaseClient { // result Map respObj = requestAndValid(pathUrl, paramsJson, 60); - return respObj!=null?true:false; + return respObj != null ? true : false; } } diff --git a/datax-registry/src/main/java/com.wugui.datax.registry/model/XxlRegistryDataParamVO.java b/datax-registry/src/main/java/com.wugui.datax.registry/model/XxlRegistryDataParamVO.java index 920a6695..be3f543d 100644 --- a/datax-registry/src/main/java/com.wugui.datax.registry/model/XxlRegistryDataParamVO.java +++ b/datax-registry/src/main/java/com.wugui.datax.registry/model/XxlRegistryDataParamVO.java @@ -14,6 +14,7 @@ public class XxlRegistryDataParamVO { public XxlRegistryDataParamVO() { } + public XxlRegistryDataParamVO(String key, String value) { this.key = key; this.value = value; diff --git a/datax-registry/src/main/java/com.wugui.datax.registry/util/BasicHttpUtil.java b/datax-registry/src/main/java/com.wugui.datax.registry/util/BasicHttpUtil.java index d562b0ea..a0bd8975 100644 --- a/datax-registry/src/main/java/com.wugui.datax.registry/util/BasicHttpUtil.java +++ b/datax-registry/src/main/java/com.wugui.datax.registry/util/BasicHttpUtil.java @@ -51,17 +51,10 @@ public class BasicHttpUtil { dataOutputStream.flush(); dataOutputStream.close(); - /*byte[] requestBodyBytes = requestBody.getBytes("UTF-8"); - connection.setRequestProperty("Content-Length", String.valueOf(requestBodyBytes.length)); - OutputStream outwritestream = connection.getOutputStream(); - outwritestream.write(requestBodyBytes); - outwritestream.flush(); - outwritestream.close();*/ - // valid StatusCode int statusCode = connection.getResponseCode(); if (statusCode != 200) { - throw new RuntimeException("http request StatusCode("+ statusCode +") invalid. for url : " + url); + throw new RuntimeException("http request StatusCode(" + statusCode + ") invalid. for url : " + url); } // result @@ -123,7 +116,7 @@ public class BasicHttpUtil { // valid StatusCode int statusCode = connection.getResponseCode(); if (statusCode != 200) { - throw new RuntimeException("Http Request StatusCode("+ statusCode +") Invalid."); + throw new RuntimeException("Http Request StatusCode(" + statusCode + ") Invalid."); } // result diff --git a/datax-registry/src/main/java/com.wugui.datax.registry/util/json/BasicJson.java b/datax-registry/src/main/java/com.wugui.datax.registry/util/json/BasicJson.java index e1a8bac9..b9b78aca 100644 --- a/datax-registry/src/main/java/com.wugui.datax.registry/util/json/BasicJson.java +++ b/datax-registry/src/main/java/com.wugui.datax.registry/util/json/BasicJson.java @@ -29,7 +29,7 @@ public class BasicJson { * parse json to map * * @param json - * @return only for filed type "null、ArrayList、LinkedHashMap、String、Long、Double、..." + * @return only for filed type "null、ArrayList、LinkedHashMap、String、Long、Double、..." */ public static Map parseMap(String json) { return basicJsonReader.parseMap(json); @@ -46,12 +46,11 @@ public class BasicJson { } - public static void main(String[] args) { Map result = new HashMap<>(); result.put("code", 200); result.put("msg", "success"); - result.put("arr", Arrays.asList("111","222")); + result.put("arr", Arrays.asList("111", "222")); result.put("float", 1.11f); result.put("temp", null); @@ -206,6 +205,4 @@ public class BasicJson { }*/ - - } diff --git a/datax-registry/src/main/java/com.wugui.datax.registry/util/json/BasicJsonReader.java b/datax-registry/src/main/java/com.wugui.datax.registry/util/json/BasicJsonReader.java index 51b09ad9..1f467887 100644 --- a/datax-registry/src/main/java/com.wugui.datax.registry/util/json/BasicJsonReader.java +++ b/datax-registry/src/main/java/com.wugui.datax.registry/util/json/BasicJsonReader.java @@ -12,173 +12,169 @@ import java.util.Map; * @author xuxueli 2018-11-30 */ public class BasicJsonReader { - private static Logger logger = LoggerFactory.getLogger(BasicJsonwriter.class); + private static Logger logger = LoggerFactory.getLogger(BasicJsonwriter.class); - public Map parseMap(String json) { - if (json != null) { - json = json.trim(); - if (json.startsWith("{")) { - return parseMapInternal(json); - } - } - throw new IllegalArgumentException("Cannot parse JSON"); - } + public Map parseMap(String json) { + if (json != null) { + json = json.trim(); + if (json.startsWith("{")) { + return parseMapInternal(json); + } + } + throw new IllegalArgumentException("Cannot parse JSON"); + } - public List parseList(String json) { - if (json != null) { - json = json.trim(); - if (json.startsWith("[")) { - return parseListInternal(json); - } - } - throw new IllegalArgumentException("Cannot parse JSON"); - } + public List parseList(String json) { + if (json != null) { + json = json.trim(); + if (json.startsWith("[")) { + return parseListInternal(json); + } + } + throw new IllegalArgumentException("Cannot parse JSON"); + } - private List parseListInternal(String json) { - List list = new ArrayList(); - json = trimLeadingCharacter(trimTrailingCharacter(json, ']'), '['); - for (String value : tokenize(json)) { - list.add(parseInternal(value)); - } - return list; - } + private List parseListInternal(String json) { + List list = new ArrayList(); + json = trimLeadingCharacter(trimTrailingCharacter(json, ']'), '['); + for (String value : tokenize(json)) { + list.add(parseInternal(value)); + } + return list; + } - private Object parseInternal(String json) { - if (json.equals("null")) { - return null; - } - if (json.startsWith("[")) { - return parseListInternal(json); - } - if (json.startsWith("{")) { - return parseMapInternal(json); - } - if (json.startsWith("\"")) { - return trimTrailingCharacter(trimLeadingCharacter(json, '"'), '"'); - } - try { - return Long.valueOf(json); - } - catch (NumberFormatException ex) { - // ignore - } - try { - return Double.valueOf(json); - } - catch (NumberFormatException ex) { - // ignore - } - return json; - } + private Object parseInternal(String json) { + if (json.equals("null")) { + return null; + } + if (json.startsWith("[")) { + return parseListInternal(json); + } + if (json.startsWith("{")) { + return parseMapInternal(json); + } + if (json.startsWith("\"")) { + return trimTrailingCharacter(trimLeadingCharacter(json, '"'), '"'); + } + try { + return Long.valueOf(json); + } catch (NumberFormatException ex) { + // ignore + } + try { + return Double.valueOf(json); + } catch (NumberFormatException ex) { + // ignore + } + return json; + } - private Map parseMapInternal(String json) { - Map map = new LinkedHashMap(); - json = trimLeadingCharacter(trimTrailingCharacter(json, '}'), '{'); - for (String pair : tokenize(json)) { - String[] values = trimArrayElements(split(pair, ":")); - String key = trimLeadingCharacter(trimTrailingCharacter(values[0], '"'), '"'); - Object value = parseInternal(values[1]); - map.put(key, value); - } - return map; - } + private Map parseMapInternal(String json) { + Map map = new LinkedHashMap(); + json = trimLeadingCharacter(trimTrailingCharacter(json, '}'), '{'); + for (String pair : tokenize(json)) { + String[] values = trimArrayElements(split(pair, ":")); + String key = trimLeadingCharacter(trimTrailingCharacter(values[0], '"'), '"'); + Object value = parseInternal(values[1]); + map.put(key, value); + } + return map; + } - // append start - private static String[] split(String toSplit, String delimiter) { - if (toSplit!=null && !toSplit.isEmpty() && delimiter!=null && !delimiter.isEmpty()) { - int offset = toSplit.indexOf(delimiter); - if (offset < 0) { - return null; - } else { - String beforeDelimiter = toSplit.substring(0, offset); - String afterDelimiter = toSplit.substring(offset + delimiter.length()); - return new String[]{beforeDelimiter, afterDelimiter}; - } - } else { - return null; - } - } - private static String[] trimArrayElements(String[] array) { - if (array == null || array.length == 0) { - return new String[0]; - } else { - String[] result = new String[array.length]; + // append start + private static String[] split(String toSplit, String delimiter) { + if (toSplit != null && !toSplit.isEmpty() && delimiter != null && !delimiter.isEmpty()) { + int offset = toSplit.indexOf(delimiter); + if (offset < 0) { + return null; + } else { + String beforeDelimiter = toSplit.substring(0, offset); + String afterDelimiter = toSplit.substring(offset + delimiter.length()); + return new String[]{beforeDelimiter, afterDelimiter}; + } + } else { + return null; + } + } - for(int i = 0; i < array.length; ++i) { - String element = array[i]; - result[i] = element != null ? element.trim() : null; - } + private static String[] trimArrayElements(String[] array) { + if (array == null || array.length == 0) { + return new String[0]; + } else { + String[] result = new String[array.length]; - return result; - } - } - // append end + for (int i = 0; i < array.length; ++i) { + String element = array[i]; + result[i] = element != null ? element.trim() : null; + } + + return result; + } + } - private List tokenize(String json) { - List list = new ArrayList(); - int index = 0; - int inObject = 0; - int inList = 0; - boolean inValue = false; - boolean inEscape = false; - StringBuilder build = new StringBuilder(); - while (index < json.length()) { - char current = json.charAt(index); - if (inEscape) { - build.append(current); - index++; - inEscape = false; - continue; - } - if (current == '{') { - inObject++; - } - if (current == '}') { - inObject--; - } - if (current == '[') { - inList++; - } - if (current == ']') { - inList--; - } - if (current == '"') { - inValue = !inValue; - } - if (current == ',' && inObject == 0 && inList == 0 && !inValue) { - list.add(build.toString()); - build.setLength(0); - } - else if (current == '\\') { - inEscape = true; - } - else { - build.append(current); - } - index++; - } - if (build.length() > 0) { - list.add(build.toString()); - } - return list; - } + private List tokenize(String json) { + List list = new ArrayList<>(); + int index = 0; + int inObject = 0; + int inList = 0; + boolean inValue = false; + boolean inEscape = false; + StringBuilder build = new StringBuilder(); + while (index < json.length()) { + char current = json.charAt(index); + if (inEscape) { + build.append(current); + index++; + inEscape = false; + continue; + } + if (current == '{') { + inObject++; + } + if (current == '}') { + inObject--; + } + if (current == '[') { + inList++; + } + if (current == ']') { + inList--; + } + if (current == '"') { + inValue = !inValue; + } + if (current == ',' && inObject == 0 && inList == 0 && !inValue) { + list.add(build.toString()); + build.setLength(0); + } else if (current == '\\') { + inEscape = true; + } else { + build.append(current); + } + index++; + } + if (build.length() > 0) { + list.add(build.toString()); + } + return list; + } - // plugin util - private static String trimTrailingCharacter(String string, char c) { - if (string.length() > 0 && string.charAt(string.length() - 1) == c) { - return string.substring(0, string.length() - 1); - } - return string; - } + // plugin util + private static String trimTrailingCharacter(String string, char c) { + if (string.length() > 0 && string.charAt(string.length() - 1) == c) { + return string.substring(0, string.length() - 1); + } + return string; + } - private static String trimLeadingCharacter(String string, char c) { - if (string.length() > 0 && string.charAt(0) == c) { - return string.substring(1); - } - return string; - } + private static String trimLeadingCharacter(String string, char c) { + if (string.length() > 0 && string.charAt(0) == c) { + return string.substring(1); + } + return string; + } } diff --git a/datax-registry/src/main/java/com.wugui.datax.registry/util/json/BasicJsonwriter.java b/datax-registry/src/main/java/com.wugui.datax.registry/util/json/BasicJsonwriter.java index 2f58e892..4145ed06 100644 --- a/datax-registry/src/main/java/com.wugui.datax.registry/util/json/BasicJsonwriter.java +++ b/datax-registry/src/main/java/com.wugui.datax.registry/util/json/BasicJsonwriter.java @@ -82,13 +82,13 @@ public class BasicJsonwriter { // string json.append(STR_SLASH).append(value.toString()).append(STR_SLASH); - } else if ( value instanceof Boolean + } else if (value instanceof Boolean || value instanceof Short || value instanceof Integer || value instanceof Long || value instanceof Float || value instanceof Double - ) { + ) { // number json.append(value); @@ -191,5 +191,4 @@ public class BasicJsonwriter { } - } \ No newline at end of file diff --git a/datax-rpc/src/main/java/com/wugui/datax/rpc/registry/impl/LocalServiceRegistry.java b/datax-rpc/src/main/java/com/wugui/datax/rpc/registry/impl/LocalServiceRegistry.java index a4f4d264..0da1343a 100644 --- a/datax-rpc/src/main/java/com/wugui/datax/rpc/registry/impl/LocalServiceRegistry.java +++ b/datax-rpc/src/main/java/com/wugui/datax/rpc/registry/impl/LocalServiceRegistry.java @@ -36,7 +36,7 @@ public class LocalServiceRegistry extends ServiceRegistry { @Override public boolean registry(Set keys, String value) { - if (keys==null || keys.size()==0 || value==null || value.trim().length()==0) { + if (keys == null || keys.size() == 0 || value == null || value.trim().length() == 0) { return false; } for (String key : keys) { @@ -52,7 +52,7 @@ public class LocalServiceRegistry extends ServiceRegistry { @Override public boolean remove(Set keys, String value) { - if (keys==null || keys.size()==0 || value==null || value.trim().length()==0) { + if (keys == null || keys.size() == 0 || value == null || value.trim().length() == 0) { return false; } for (String key : keys) { @@ -66,7 +66,7 @@ public class LocalServiceRegistry extends ServiceRegistry { @Override public Map> discovery(Set keys) { - if (keys==null || keys.size()==0) { + if (keys == null || keys.size() == 0) { return null; } Map> registryDataTmp = new HashMap>(); diff --git a/datax-rpc/src/main/java/com/wugui/datax/rpc/remoting/invoker/call/XxlRpcInvokeFuture.java b/datax-rpc/src/main/java/com/wugui/datax/rpc/remoting/invoker/call/XxlRpcInvokeFuture.java index ecf416c2..4373afee 100644 --- a/datax-rpc/src/main/java/com/wugui/datax/rpc/remoting/invoker/call/XxlRpcInvokeFuture.java +++ b/datax-rpc/src/main/java/com/wugui/datax/rpc/remoting/invoker/call/XxlRpcInvokeFuture.java @@ -20,13 +20,13 @@ public class XxlRpcInvokeFuture implements Future { public XxlRpcInvokeFuture(XxlRpcFutureResponse futureResponse) { this.futureResponse = futureResponse; } - public void stop(){ + + public void stop() { // remove-InvokerFuture futureResponse.removeInvokerFuture(); } - @Override public boolean cancel(boolean mayInterruptIfRunning) { return futureResponse.cancel(mayInterruptIfRunning); diff --git a/datax-rpc/src/main/java/com/wugui/datax/rpc/remoting/invoker/impl/XxlRpcSpringInvokerFactory.java b/datax-rpc/src/main/java/com/wugui/datax/rpc/remoting/invoker/impl/XxlRpcSpringInvokerFactory.java index 7debd03d..1f85f0e9 100644 --- a/datax-rpc/src/main/java/com/wugui/datax/rpc/remoting/invoker/impl/XxlRpcSpringInvokerFactory.java +++ b/datax-rpc/src/main/java/com/wugui/datax/rpc/remoting/invoker/impl/XxlRpcSpringInvokerFactory.java @@ -26,7 +26,7 @@ import java.util.Set; * * @author xuxueli 2018-10-19 */ -public class XxlRpcSpringInvokerFactory extends InstantiationAwareBeanPostProcessorAdapter implements InitializingBean,DisposableBean, BeanFactoryAware { +public class XxlRpcSpringInvokerFactory extends InstantiationAwareBeanPostProcessorAdapter implements InitializingBean, DisposableBean, BeanFactoryAware { private Logger logger = LoggerFactory.getLogger(XxlRpcSpringInvokerFactory.class); // ---------------------- config ---------------------- diff --git a/datax-rpc/src/main/java/com/wugui/datax/rpc/util/IpUtil.java b/datax-rpc/src/main/java/com/wugui/datax/rpc/util/IpUtil.java index 75c98325..254e6bc7 100644 --- a/datax-rpc/src/main/java/com/wugui/datax/rpc/util/IpUtil.java +++ b/datax-rpc/src/main/java/com/wugui/datax/rpc/util/IpUtil.java @@ -24,7 +24,6 @@ public class IpUtil { private static final Pattern IP_PATTERN = Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3,5}$"); - private static volatile InetAddress LOCAL_ADDRESS = null; // ---------------------- valid ---------------------- @@ -57,11 +56,10 @@ public class IpUtil { return false; } String name = address.getHostAddress(); - boolean result = (name != null + return (name != null && IP_PATTERN.matcher(name).matches() && !ANYHOST_VALUE.equals(name) && !LOCALHOST_VALUE.equals(name)); - return result; } @@ -125,7 +123,7 @@ public class IpUtil { InetAddress addressItem = toValidAddress(addresses.nextElement()); if (addressItem != null) { try { - if(addressItem.isReachable(100)){ + if (addressItem.isReachable(100)) { return addressItem; } } catch (IOException e) { @@ -168,7 +166,7 @@ public class IpUtil { * * @return String */ - public static String getIp(){ + public static String getIp() { return getLocalAddress().getHostAddress(); } @@ -178,19 +176,19 @@ public class IpUtil { * @param port * @return String */ - public static String getIpPort(int port){ + public static String getIpPort(int port) { String ip = getIp(); return getIpPort(ip, port); } - public static String getIpPort(String ip, int port){ - if (ip==null) { + public static String getIpPort(String ip, int port) { + if (ip == null) { return null; } return ip.concat(":").concat(String.valueOf(port)); } - public static Object[] parseIpPort(String address){ + public static Object[] parseIpPort(String address) { String[] array = address.split(":"); String host = array[0]; diff --git a/datax-rpc/src/main/java/com/wugui/datax/rpc/util/NetUtil.java b/datax-rpc/src/main/java/com/wugui/datax/rpc/util/NetUtil.java index 985ab986..d3a15dba 100644 --- a/datax-rpc/src/main/java/com/wugui/datax/rpc/util/NetUtil.java +++ b/datax-rpc/src/main/java/com/wugui/datax/rpc/util/NetUtil.java @@ -47,7 +47,7 @@ public class NetUtil { * @return */ public static boolean isPortUsed(int port) { - boolean used = false; + boolean used; ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(port); diff --git a/datax-rpc/src/main/java/com/wugui/datax/rpc/util/XxlRpcException.java b/datax-rpc/src/main/java/com/wugui/datax/rpc/util/XxlRpcException.java index add11525..14feb011 100644 --- a/datax-rpc/src/main/java/com/wugui/datax/rpc/util/XxlRpcException.java +++ b/datax-rpc/src/main/java/com/wugui/datax/rpc/util/XxlRpcException.java @@ -4,6 +4,7 @@ package com.wugui.datax.rpc.util; * @author xuxueli 2018-10-20 23:00:40 */ public class XxlRpcException extends RuntimeException { + private static final long serialVersionUID = 42L; public XxlRpcException(String msg) { diff --git a/doc/db/2.1.2预留.sql b/doc/db/2.1.2预留.sql index 7abbe383..6d27f4c1 100644 --- a/doc/db/2.1.2预留.sql +++ b/doc/db/2.1.2预留.sql @@ -17,18 +17,15 @@ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; --- ---------------------------- --- Table structure for job_permission --- ---------------------------- DROP TABLE IF EXISTS `job_permission`; CREATE TABLE `job_permission` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', - `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '权限名', - `description` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限描述', - `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限名', + `description` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限描述', + `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `pid` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of job_permission @@ -42,9 +39,9 @@ INSERT INTO `job_permission` VALUES (2, 'ROLE_ADMIN', 'ABel', '/', NULL); DROP TABLE IF EXISTS `job_role`; CREATE TABLE `job_role` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', - `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色名称', + `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色名称', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of job_role @@ -58,10 +55,10 @@ INSERT INTO `job_role` VALUES (2, 'ROLE_USER'); DROP TABLE IF EXISTS `job_user`; CREATE TABLE `job_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户主键', - `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名', - `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码', + `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名', + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of job_user @@ -79,7 +76,7 @@ CREATE TABLE `permission_role` ( `role_id` int(11) NULL DEFAULT NULL COMMENT '角色名称', `permission_id` int(20) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of permission_role @@ -97,7 +94,7 @@ CREATE TABLE `role_user` ( `user_id` int(20) NULL DEFAULT NULL COMMENT '角色名称', `role_id` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of role_user diff --git a/doc/db/datax_web.sql b/doc/db/datax_web.sql index 3b36a5fe..85262d88 100644 --- a/doc/db/datax_web.sql +++ b/doc/db/datax_web.sql @@ -342,10 +342,9 @@ ADD COLUMN `load_average` DOUBLE NULL AFTER `memory_usage`; DROP TABLE IF EXISTS `job_permission`; CREATE TABLE `job_permission` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', - `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '权限名', - `description` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限描述', - `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限名', + `description` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限描述', + `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `pid` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; - +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;