You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/09/29 04:23:14 UTC

[shardingsphere-elasticjob] branch master updated: Refactor EmailJobErrorHandler (#1513)

This is an automated email from the ASF dual-hosted git repository.

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere-elasticjob.git


The following commit(s) were added to refs/heads/master by this push:
     new 2bba781  Refactor EmailJobErrorHandler (#1513)
2bba781 is described below

commit 2bba781d33df6f305b07e5e41dd695d3ed608d92
Author: Liang Zhang <te...@163.com>
AuthorDate: Tue Sep 29 12:23:07 2020 +0800

    Refactor EmailJobErrorHandler (#1513)
    
    * Refactor EmailJobErrorHandler
    
    * Remove useless test case
    
    * Remove useless check
    
    * Remove NPE catch
---
 .../error/handler/email/EmailJobErrorHandler.java  | 47 +++++++++-------------
 .../handler/email/EmailJobErrorHandlerTest.java    |  6 ---
 2 files changed, 20 insertions(+), 33 deletions(-)

diff --git a/elasticjob-error-handler/elasticjob-error-handler-email/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandler.java b/elasticjob-error-handler/elasticjob-error-handler-email/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandler.java
index d1b83d2..4838598 100644
--- a/elasticjob-error-handler/elasticjob-error-handler-email/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandler.java
+++ b/elasticjob-error-handler/elasticjob-error-handler-email/src/main/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandler.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.elasticjob.error.handler.email;
 
-import com.google.common.base.Preconditions;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shardingsphere.elasticjob.error.handler.JobErrorHandler;
@@ -48,54 +47,47 @@ public final class EmailJobErrorHandler implements JobErrorHandler {
     
     public static final String CONFIG_PREFIX = "email";
     
-    private final EmailConfiguration config;
+    private final EmailConfiguration config = EmailConfigurationLoader.unmarshal(CONFIG_PREFIX);
     
     private Session session;
     
-    public EmailJobErrorHandler() {
-        config = EmailConfigurationLoader.unmarshal(CONFIG_PREFIX);
-    }
-    
     @Override
     public void handleException(final String jobName, final Throwable cause) {
+        String errorContext = createErrorContext(jobName, cause);
         try {
-            Preconditions.checkNotNull(config);
-            String content = buildContent(jobName, cause);
-            Message message = buildMessage(content);
-            sendMessage(message);
-        } catch (final NullPointerException | MessagingException ex) {
+            sendMessage(createMessage(errorContext));
+        } catch (final MessagingException ex) {
             log.error("Elastic job: email job handler error", ex);
         }
     }
     
-    private String buildContent(final String jobName, final Throwable cause) {
-        StringWriter sw = new StringWriter();
-        cause.printStackTrace(new PrintWriter(sw, true));
-        String causeString = sw.toString();
-        return String.format("Job '%s' exception occur in job processing, caused by %s", jobName, causeString);
+    private String createErrorContext(final String jobName, final Throwable cause) {
+        StringWriter writer = new StringWriter();
+        cause.printStackTrace(new PrintWriter(writer, true));
+        return String.format("Job '%s' exception occur in job processing, caused by %s", jobName, writer.toString());
     }
     
-    private Message buildMessage(final String content) throws MessagingException {
-        MimeMessage message = new MimeMessage(Optional.ofNullable(session).orElseGet(this::buildSession));
-        message.setFrom(new InternetAddress(config.getFrom()));
-        message.setSubject(config.getSubject());
-        message.setSentDate(new Date());
+    private Message createMessage(final String content) throws MessagingException {
+        MimeMessage result = new MimeMessage(Optional.ofNullable(session).orElseGet(this::createSession));
+        result.setFrom(new InternetAddress(config.getFrom()));
+        result.setSubject(config.getSubject());
+        result.setSentDate(new Date());
         Multipart multipart = new MimeMultipart();
         BodyPart mailBody = new MimeBodyPart();
         mailBody.setContent(content, "text/html; charset=utf-8");
         multipart.addBodyPart(mailBody);
-        message.setContent(multipart);
+        result.setContent(multipart);
         if (StringUtils.isNotBlank(config.getTo())) {
-            message.addRecipient(Message.RecipientType.TO, new InternetAddress(config.getTo()));
+            result.addRecipient(Message.RecipientType.TO, new InternetAddress(config.getTo()));
         }
         if (StringUtils.isNotBlank(config.getCc())) {
-            message.addRecipient(Message.RecipientType.CC, new InternetAddress(config.getCc()));
+            result.addRecipient(Message.RecipientType.CC, new InternetAddress(config.getCc()));
         }
-        message.saveChanges();
-        return message;
+        result.saveChanges();
+        return result;
     }
     
-    private synchronized Session buildSession() {
+    private synchronized Session createSession() {
         if (null == session) {
             Properties props = new Properties();
             props.put("mail.smtp.host", config.getHost());
@@ -108,6 +100,7 @@ public final class EmailJobErrorHandler implements JobErrorHandler {
                 props.setProperty("mail.smtp.socketFactory.fallback", "false");
             }
             session = Session.getDefaultInstance(props, new Authenticator() {
+                
                 @Override
                 public PasswordAuthentication getPasswordAuthentication() {
                     return new PasswordAuthentication(config.getUsername(), config.getPassword());
diff --git a/elasticjob-error-handler/elasticjob-error-handler-email/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandlerTest.java b/elasticjob-error-handler/elasticjob-error-handler-email/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandlerTest.java
index 5ff12ec..54ea0e7 100644
--- a/elasticjob-error-handler/elasticjob-error-handler-email/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandlerTest.java
+++ b/elasticjob-error-handler/elasticjob-error-handler-email/src/test/java/org/apache/shardingsphere/elasticjob/error/handler/email/EmailJobErrorHandlerTest.java
@@ -81,10 +81,4 @@ public final class EmailJobErrorHandlerTest {
         modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL);
         field.set(emailJobErrorHandler, log);
     }
-    
-    @Test
-    public void assertType() {
-        EmailJobErrorHandler emailJobErrorHandler = new EmailJobErrorHandler();
-        assertThat(emailJobErrorHandler.getType(), equalTo("EMAIL"));
-    }
 }