From 90626d4118ca7f93007a7a6d3a64e80ca5ef0bed Mon Sep 17 00:00:00 2001 From: Segun Ogundipe Date: Mon, 25 Jan 2021 06:48:35 +0100 Subject: [PATCH] [Improvement][alert-plugin] Refactor alert-plugin module to fix code smell (#4548) * chore: Refactor code to fix code smell in alert-plugin module * chore: Fix compile error * chore: Fix static smell --- .../dingtalk/DingTalkParamsConstants.java | 2 +- .../plugin/alert/dingtalk/DingTalkSender.java | 2 +- .../plugin/alert/email/EmailConstants.java | 4 + .../plugin/alert/email/ExcelUtils.java | 15 ++-- .../alert/email/MailParamsConstants.java | 2 +- .../plugin/alert/email/MailSender.java | 74 ++++++------------- .../email/exception/AlertEmailException.java | 40 ++++++++++ .../email/template/DefaultHTMLTemplate.java | 11 ++- .../plugin/alert/script/OSUtils.java | 2 +- .../alert/script/ScriptParamsConstants.java | 2 +- .../plugin/alert/script/StreamGobbler.java | 4 +- .../alert/wechat/WeChatAlertConstants.java | 4 + .../wechat/WeChatAlertParamsConstants.java | 3 + .../plugin/alert/wechat/WeChatSender.java | 47 ++++++------ .../exception/WeChatAlertException.java | 30 ++++++++ .../dolphinscheduler/spi/utils/JSONUtils.java | 12 +-- 16 files changed, 151 insertions(+), 103 deletions(-) create mode 100644 dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/exception/AlertEmailException.java create mode 100644 dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/exception/WeChatAlertException.java diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java index fb9f5f9f5d..c00d13076e 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java @@ -22,7 +22,7 @@ package org.apache.dolphinscheduler.plugin.alert.dingtalk; */ public class DingTalkParamsConstants { - public DingTalkParamsConstants() { + private DingTalkParamsConstants() { throw new IllegalStateException("Utility class"); } diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java index 4500f3e28e..d152bc89cb 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java @@ -113,7 +113,7 @@ public class DingTalkSender { } finally { response.close(); } - logger.info("Ding Talk send [ %s ], resp:{%s}", msg, resp); + logger.info("Ding Talk send {}, resp: {}", msg, resp); return resp; } finally { httpClient.close(); diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailConstants.java index d0e85ffb03..091bf28f24 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailConstants.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailConstants.java @@ -19,6 +19,10 @@ package org.apache.dolphinscheduler.plugin.alert.email; public class EmailConstants { + private EmailConstants() { + throw new IllegalStateException(EmailConstants.class.getName()); + } + public static final String XLS_FILE_PATH = "xls.file.path"; diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtils.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtils.java index 1579f9548e..5802394d3b 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtils.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtils.java @@ -17,6 +17,7 @@ package org.apache.dolphinscheduler.plugin.alert.email; +import org.apache.dolphinscheduler.plugin.alert.email.exception.AlertEmailException; import org.apache.dolphinscheduler.spi.utils.JSONUtils; import org.apache.commons.collections4.CollectionUtils; @@ -31,7 +32,6 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; -import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory; */ public class ExcelUtils { - public ExcelUtils() { + private ExcelUtils() { throw new IllegalStateException("Utility class"); } @@ -65,16 +65,14 @@ public class ExcelUtils { if (CollectionUtils.isEmpty(itemsList)) { logger.error("itemsList is null"); - throw new RuntimeException("itemsList is null"); + throw new AlertEmailException("itemsList is null"); } LinkedHashMap headerMap = itemsList.get(0); List headerList = new ArrayList<>(); - Iterator> iter = headerMap.entrySet().iterator(); - while (iter.hasNext()) { - Map.Entry en = iter.next(); + for (Map.Entry en : headerMap.entrySet()) { headerList.add(en.getKey()); } @@ -130,8 +128,7 @@ public class ExcelUtils { wb.write(fos); } catch (Exception e) { - logger.error("generate excel error", e); - throw new RuntimeException("generate excel error", e); + throw new AlertEmailException("generate excel error", e); } finally { if (wb != null) { try { @@ -150,4 +147,4 @@ public class ExcelUtils { } } -} \ No newline at end of file +} diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java index 3eaa420301..0bbbe103f0 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java @@ -22,7 +22,7 @@ package org.apache.dolphinscheduler.plugin.alert.email; */ public class MailParamsConstants { - public MailParamsConstants() { + private MailParamsConstants() { throw new IllegalStateException("Utility class"); } diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java index 03765b248d..192578f861 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java @@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.plugin.alert.email; import static java.util.Objects.requireNonNull; +import org.apache.dolphinscheduler.plugin.alert.email.exception.AlertEmailException; import org.apache.dolphinscheduler.plugin.alert.email.template.AlertTemplate; import org.apache.dolphinscheduler.plugin.alert.email.template.DefaultHTMLTemplate; import org.apache.dolphinscheduler.spi.alert.AlertConstants; @@ -67,7 +68,7 @@ public class MailSender { private String mailProtocol = "SMTP"; private String mailSmtpHost; private String mailSmtpPort; - private String mailSender; + private String mailSenderEmail; private String enableSmtpAuth; private String mailUser; private String mailPasswd; @@ -77,12 +78,13 @@ public class MailSender { private String sslTrust; private String showType; private AlertTemplate alertTemplate; + private String mustNotNull = "must not be null"; public MailSender(Map config) { String receiversConfig = config.get(MailParamsConstants.NAME_PLUGIN_DEFAULT_EMAIL_RECEIVERS); if (receiversConfig == null || "".equals(receiversConfig)) { - throw new RuntimeException(MailParamsConstants.PLUGIN_DEFAULT_EMAIL_RECEIVERS + "must not be null"); + throw new AlertEmailException(MailParamsConstants.PLUGIN_DEFAULT_EMAIL_RECEIVERS + mustNotNull); } receivers = Arrays.asList(receiversConfig.split(",")); @@ -95,33 +97,33 @@ public class MailSender { } mailSmtpHost = config.get(MailParamsConstants.NAME_MAIL_SMTP_HOST); - requireNonNull(mailSmtpHost, MailParamsConstants.MAIL_SMTP_HOST + " must not null"); + requireNonNull(mailSmtpHost, MailParamsConstants.MAIL_SMTP_HOST + mustNotNull); mailSmtpPort = config.get(MailParamsConstants.NAME_MAIL_SMTP_PORT); - requireNonNull(mailSmtpPort, MailParamsConstants.MAIL_SMTP_PORT + " must not null"); + requireNonNull(mailSmtpPort, MailParamsConstants.MAIL_SMTP_PORT + mustNotNull); - mailSender = config.get(MailParamsConstants.NAME_MAIL_SENDER); - requireNonNull(mailSender, MailParamsConstants.MAIL_SENDER + " must not null"); + mailSenderEmail = config.get(MailParamsConstants.NAME_MAIL_SENDER); + requireNonNull(mailSenderEmail, MailParamsConstants.MAIL_SENDER + mustNotNull); enableSmtpAuth = config.get(MailParamsConstants.NAME_MAIL_SMTP_AUTH); mailUser = config.get(MailParamsConstants.NAME_MAIL_USER); - requireNonNull(mailUser, MailParamsConstants.MAIL_USER + " must not null"); + requireNonNull(mailUser, MailParamsConstants.MAIL_USER + mustNotNull); mailPasswd = config.get(MailParamsConstants.NAME_MAIL_PASSWD); - requireNonNull(mailPasswd, MailParamsConstants.MAIL_PASSWD + " must not null"); + requireNonNull(mailPasswd, MailParamsConstants.MAIL_PASSWD + mustNotNull); mailUseStartTLS = config.get(MailParamsConstants.NAME_MAIL_SMTP_STARTTLS_ENABLE); - requireNonNull(mailUseStartTLS, MailParamsConstants.MAIL_SMTP_STARTTLS_ENABLE + " must not null"); + requireNonNull(mailUseStartTLS, MailParamsConstants.MAIL_SMTP_STARTTLS_ENABLE + mustNotNull); mailUseSSL = config.get(MailParamsConstants.NAME_MAIL_SMTP_SSL_ENABLE); - requireNonNull(mailUseSSL, MailParamsConstants.MAIL_SMTP_SSL_ENABLE + " must not null"); + requireNonNull(mailUseSSL, MailParamsConstants.MAIL_SMTP_SSL_ENABLE + mustNotNull); sslTrust = config.get(MailParamsConstants.NAME_MAIL_SMTP_SSL_TRUST); - requireNonNull(sslTrust, MailParamsConstants.MAIL_SMTP_SSL_TRUST + " must not null"); + requireNonNull(sslTrust, MailParamsConstants.MAIL_SMTP_SSL_TRUST + mustNotNull); showType = config.get(AlertConstants.SHOW_TYPE); - requireNonNull(showType, AlertConstants.SHOW_TYPE + " must not null"); + requireNonNull(showType, AlertConstants.SHOW_TYPE + mustNotNull); xlsFilePath = config.get(EmailConstants.XLS_FILE_PATH); if (StringUtils.isBlank(xlsFilePath)) { @@ -134,9 +136,8 @@ public class MailSender { /** * send mail to receivers * - * @param title title + * @param title title * @param content content - * @return */ public AlertResult sendMails(String title, String content) { return sendMails(this.receivers, this.receiverCcs, title, content); @@ -145,9 +146,8 @@ public class MailSender { /** * send mail to receivers * - * @param title email title + * @param title email title * @param content email content - * @return */ public AlertResult sendMailsToReceiverOnly(String title, String content) { return sendMails(this.receivers, null, title, content); @@ -156,11 +156,10 @@ public class MailSender { /** * send mail * - * @param receivers receivers + * @param receivers receivers * @param receiverCcs receiverCcs - * @param title title - * @param content content - * @return + * @param title title + * @param content content */ public AlertResult sendMails(List receivers, List receiverCcs, String title, String content) { AlertResult alertResult = new AlertResult(); @@ -180,7 +179,7 @@ public class MailSender { try { Session session = getSession(); email.setMailSession(session); - email.setFrom(mailSender); + email.setFrom(mailSenderEmail); email.setCharset(EmailConstants.UTF_8); if (CollectionUtils.isNotEmpty(receivers)) { // receivers mail @@ -251,11 +250,6 @@ public class MailSender { /** * send mail as Excel attachment - * - * @param title - * @param content - * @param partContent - * @throws Exception */ private void attachment(String title, String content, String partContent) throws Exception { MimeMessage msg = getMimeMessage(); @@ -265,9 +259,6 @@ public class MailSender { /** * get MimeMessage - * - * @return - * @throws MessagingException */ private MimeMessage getMimeMessage() throws MessagingException { @@ -279,7 +270,7 @@ public class MailSender { // 2. creating mail: Creating a MimeMessage MimeMessage msg = new MimeMessage(session); // 3. set sender - msg.setFrom(new InternetAddress(mailSender)); + msg.setFrom(new InternetAddress(mailSenderEmail)); // 4. set receivers for (String receiver : receivers) { msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(receiver)); @@ -317,16 +308,9 @@ public class MailSender { /** * attach content - * - * @param title - * @param content - * @param partContent - * @param msg - * @throws MessagingException - * @throws IOException */ private void attachContent(String title, String content, String partContent, MimeMessage msg) throws MessagingException, IOException { - /** + /* * set receiverCc */ if (CollectionUtils.isNotEmpty(receiverCcs)) { @@ -365,21 +349,14 @@ public class MailSender { /** * the string object map - * - * @param title - * @param content - * @param alertResult - * @param email - * @return - * @throws EmailException */ private AlertResult getStringObjectMap(String title, String content, AlertResult alertResult, HtmlEmail email) throws EmailException { - /** + /* * the subject of the message to be sent */ email.setSubject(title); - /** + /* * to send information, you can use HTML tags in mail content because of the use of HtmlEmail */ if (showType.equals(ShowType.TABLE.getDescp())) { @@ -417,9 +394,6 @@ public class MailSender { /** * handle exception - * - * @param alertResult - * @param e */ private void handleException(AlertResult alertResult, Exception e) { logger.error("Send email to {} failed", receivers, e); diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/exception/AlertEmailException.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/exception/AlertEmailException.java new file mode 100644 index 0000000000..466ccc06de --- /dev/null +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/exception/AlertEmailException.java @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.dolphinscheduler.plugin.alert.email.exception; + +public class AlertEmailException extends RuntimeException { + + /** + * Create Runtime exception + * + * @param errMsg - Error message + */ + public AlertEmailException(String errMsg) { + super(errMsg); + } + + /** + * Create Runtime exception + * + * @param errMsg - Error message + * @param cause - cause + */ + public AlertEmailException(String errMsg, Throwable cause) { + super(errMsg, cause); + } +} diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplate.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplate.java index 06decd6ffc..57187aa70c 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplate.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplate.java @@ -50,7 +50,7 @@ public class DefaultHTMLTemplate implements AlertTemplate { case TABLE: return getTableTypeMessage(content, showAll); case TEXT: - return getTextTypeMessage(content, showAll); + return getTextTypeMessage(content); default: throw new IllegalArgumentException(String.format("not support showType: %s in DefaultHTMLTemplate", showType)); } @@ -77,7 +77,7 @@ public class DefaultHTMLTemplate implements AlertTemplate { boolean flag = true; String title = ""; - for (LinkedHashMap mapItems : mapItemsList) { + for (LinkedHashMap mapItems : mapItemsList) { Set> entries = mapItems.entrySet(); @@ -111,10 +111,9 @@ public class DefaultHTMLTemplate implements AlertTemplate { * get alert message which type is TEXT * * @param content message content - * @param showAll weather to show all * @return alert message */ - private String getTextTypeMessage(String content, boolean showAll) { + private String getTextTypeMessage(String content) { if (StringUtils.isNotEmpty(content)) { ArrayNode list = JSONUtils.parseArray(content); @@ -135,14 +134,14 @@ public class DefaultHTMLTemplate implements AlertTemplate { /** * get alert message from a html template * - * @param title message title + * @param title message title * @param content message content * @return alert message which use html template */ private String getMessageFromHtmlTemplate(String title, String content) { requireNonNull(content, "content must not null"); - String htmlTableThead = StringUtils.isEmpty(title) ? "" : String.format("%s\n", title); + String htmlTableThead = StringUtils.isEmpty(title) ? "" : String.format("%s%n", title); return EmailConstants.HTML_HEADER_PREFIX + htmlTableThead + content + EmailConstants.TABLE_BODY_HTML_TAIL; } diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java index acf3e310cc..b8816724c7 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java @@ -22,7 +22,7 @@ package org.apache.dolphinscheduler.plugin.alert.script; */ public class OSUtils { - public OSUtils() { + private OSUtils() { throw new UnsupportedOperationException("Construct OSUtils"); } diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptParamsConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptParamsConstants.java index 98e4eee788..5b096d54ad 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptParamsConstants.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptParamsConstants.java @@ -22,7 +22,7 @@ package org.apache.dolphinscheduler.plugin.alert.script; */ public class ScriptParamsConstants { - public ScriptParamsConstants() { + private ScriptParamsConstants() { throw new IllegalStateException("Utility class"); } diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/StreamGobbler.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/StreamGobbler.java index 2ec25280b4..813e91a729 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/StreamGobbler.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/StreamGobbler.java @@ -51,11 +51,11 @@ public class StreamGobbler extends Thread { output.append(System.getProperty("line.separator")); } if (output.length() > 0) { - logger.info("out put msg is{}",output.toString()); + logger.info("out put msg is{}", output); } } catch (IOException e) { logger.error("I/O error occurs {}", e.getMessage()); } } -} \ No newline at end of file +} diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java index 904060c3e0..9aec21b9d9 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java @@ -22,6 +22,10 @@ package org.apache.dolphinscheduler.plugin.alert.wechat; */ public class WeChatAlertConstants { + private WeChatAlertConstants() { + throw new IllegalStateException(WeChatAlertConstants.class.getName()); + } + static final String MARKDOWN_QUOTE = ">"; static final String MARKDOWN_ENTER = "\n"; diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java index 138bd83b3a..c254b27ebf 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java @@ -22,6 +22,9 @@ package org.apache.dolphinscheduler.plugin.alert.wechat; */ public class WeChatAlertParamsConstants { + private WeChatAlertParamsConstants() { + throw new IllegalStateException(WeChatAlertParamsConstants.class.getName()); + } static final String ENTERPRISE_WE_CHAT_CORP_ID = "corp.id"; diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java index f4fd090744..6944da66bb 100644 --- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java @@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.plugin.alert.wechat; import static java.util.Objects.requireNonNull; +import org.apache.dolphinscheduler.plugin.alert.wechat.exception.WeChatAlertException; import org.apache.dolphinscheduler.spi.alert.AlertConstants; import org.apache.dolphinscheduler.spi.alert.AlertResult; import org.apache.dolphinscheduler.spi.alert.ShowType; @@ -59,8 +60,6 @@ public class WeChatSender { private String weChatUsers; - private String weChatTeamSendMsg; - private String weChatUserSendMsg; private String weChatTokenUrlReplace; @@ -70,14 +69,14 @@ public class WeChatSender { private String showType; - private static final String agentIdRegExp = "{agentId}"; - private static final String msgRegExp = "{msg}"; - private static final String userRegExp = "{toUser}"; - private static final String corpIdRegex = "{corpId}"; - private static final String secretRegex = "{secret}"; - private static final String toPartyRegex = "{toParty}"; - private static final String toUserRegex = "{toUser}"; - private static final String tokenRegex = "{token}"; + private static final String MUST_NOT_NULL = " must not null"; + private static final String ALERT_STATUS = "false"; + private static final String AGENT_ID_REG_EXP = "{agentId}"; + private static final String MSG_REG_EXP = "{msg}"; + private static final String USER_REG_EXP = "{toUser}"; + private static final String CORP_ID_REGEX = "{corpId}"; + private static final String SECRET_REGEX = "{secret}"; + private static final String TOKEN_REGEX = "{token}"; WeChatSender(Map config) { weChatAgentId = config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_AGENT_ID); @@ -85,13 +84,12 @@ public class WeChatSender { String weChatCorpId = config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_CORP_ID); String weChatSecret = config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_SECRET); String weChatTokenUrl = WeChatAlertConstants.WE_CHAT_TOKEN_URL; - weChatTeamSendMsg = config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_TEAM_SEND_MSG); weChatUserSendMsg = config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_USER_SEND_MSG); showType = config.get(AlertConstants.SHOW_TYPE); - requireNonNull(showType, AlertConstants.SHOW_TYPE + " must not null"); + requireNonNull(showType, AlertConstants.SHOW_TYPE + MUST_NOT_NULL); weChatTokenUrlReplace = weChatTokenUrl - .replace(corpIdRegex, weChatCorpId) - .replace(secretRegex, weChatSecret); + .replace(CORP_ID_REGEX, weChatCorpId) + .replace(SECRET_REGEX, weChatSecret); weChatToken = getToken(); } @@ -105,16 +103,15 @@ public class WeChatSender { */ private String makeUserSendMsg(Collection toUser, String agentId, String msg) { String listUser = mkString(toUser); - return weChatUserSendMsg.replace(userRegExp, listUser) - .replace(agentIdRegExp, agentId) - .replace(msgRegExp, msg); + return weChatUserSendMsg.replace(USER_REG_EXP, listUser) + .replace(AGENT_ID_REG_EXP, agentId) + .replace(MSG_REG_EXP, msg); } /** * send Enterprise WeChat * * @return Enterprise WeChat resp, demo: {"errcode":0,"errmsg":"ok","invaliduser":""} - * @throws Exception the Exception */ public AlertResult sendEnterpriseWeChat(String title, String content) { AlertResult alertResult; @@ -124,10 +121,10 @@ public class WeChatSender { if (null == weChatToken) { alertResult = new AlertResult(); alertResult.setMessage("send we chat alert fail,get weChat token error"); - alertResult.setStatus("false"); + alertResult.setStatus(ALERT_STATUS); return alertResult; } - String enterpriseWeChatPushUrlReplace = WeChatAlertConstants.WE_CHAT_PUSH_URL.replace(tokenRegex, weChatToken); + String enterpriseWeChatPushUrlReplace = WeChatAlertConstants.WE_CHAT_PUSH_URL.replace(TOKEN_REGEX, weChatToken); try { return checkWeChatSendMsgResult(post(enterpriseWeChatPushUrlReplace, msg)); @@ -135,7 +132,7 @@ public class WeChatSender { logger.info("send we chat alert msg exception : {}", e.getMessage()); alertResult = new AlertResult(); alertResult.setMessage("send we chat alert fail"); - alertResult.setStatus("false"); + alertResult.setStatus(ALERT_STATUS); } return alertResult; } @@ -170,7 +167,7 @@ public class WeChatSender { List mapItemsList = JSONUtils.toList(content, LinkedHashMap.class); if (null == mapItemsList || mapItemsList.isEmpty()) { logger.error("itemsList is null"); - throw new RuntimeException("itemsList is null"); + throw new WeChatAlertException("itemsList is null"); } StringBuilder contents = new StringBuilder(200); for (LinkedHashMap mapItems : mapItemsList) { @@ -259,7 +256,7 @@ public class WeChatSender { EntityUtils.consume(entity); } - HashMap map = JSONUtils.parseObject(resp, HashMap.class); + HashMap map = JSONUtils.parseObject(resp, HashMap.class); if (map != null && null != map.get("access_token")) { return map.get("access_token").toString(); } else { @@ -310,7 +307,7 @@ public class WeChatSender { private static AlertResult checkWeChatSendMsgResult(String result) { AlertResult alertResult = new AlertResult(); - alertResult.setStatus("false"); + alertResult.setStatus(ALERT_STATUS); if (null == result) { alertResult.setMessage("we chat send fail"); @@ -328,7 +325,7 @@ public class WeChatSender { alertResult.setMessage("we chat alert send success"); return alertResult; } - alertResult.setStatus("false"); + alertResult.setStatus(ALERT_STATUS); alertResult.setMessage(sendMsgResponse.getErrmsg()); return alertResult; } diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/exception/WeChatAlertException.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/exception/WeChatAlertException.java new file mode 100644 index 0000000000..f36bc2ff8a --- /dev/null +++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/exception/WeChatAlertException.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.dolphinscheduler.plugin.alert.wechat.exception; + +public class WeChatAlertException extends RuntimeException { + + /** + * Create Runtime Exception + * + * @param errMsg - Error message + */ + public WeChatAlertException(String errMsg) { + super(errMsg); + } +} diff --git a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/JSONUtils.java b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/JSONUtils.java index 6542ef86a4..89d6e50ea5 100644 --- a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/JSONUtils.java +++ b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/JSONUtils.java @@ -58,7 +58,7 @@ public class JSONUtils { /** * json representation of object * - * @param object object + * @param object object * @param feature feature * @return object to json string */ @@ -81,9 +81,9 @@ public class JSONUtils { * the fields of the specified object are generics, just the object itself should not be a * generic type. * - * @param json the string from which the object is to be deserialized + * @param json the string from which the object is to be deserialized * @param clazz the class of T - * @param T + * @param T * @return an object of type T from the string * classOfT */ @@ -103,9 +103,9 @@ public class JSONUtils { /** * json to list * - * @param json json string + * @param json json string * @param clazz class - * @param T + * @param T * @return list */ public static List toList(String json, Class clazz) { @@ -153,4 +153,4 @@ public class JSONUtils { throw new RuntimeException("Json deserialization exception.", e); } } -} \ No newline at end of file +}