Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#noissue] Cleanup Batch module #10151

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions batch-alarmsender/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -78,5 +78,9 @@
<groupId>com.navercorp.pinpoint</groupId>
<artifactId>pinpoint-user</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -1,17 +1,63 @@
package com.navercorp.pinpoint.batch.alarm;

import com.navercorp.pinpoint.batch.alarm.sender.MailSender;
import com.navercorp.pinpoint.batch.alarm.sender.SpringSmtpMailSender;
import com.navercorp.pinpoint.batch.alarm.sender.WebhookPayloadFactory;
import com.navercorp.pinpoint.batch.alarm.sender.WebhookSender;
import com.navercorp.pinpoint.batch.alarm.sender.WebhookSenderEmptyImpl;
import com.navercorp.pinpoint.batch.alarm.sender.WebhookSenderImpl;
import com.navercorp.pinpoint.web.service.UserGroupService;
import com.navercorp.pinpoint.web.service.UserService;
import com.navercorp.pinpoint.web.webhook.WebhookModule;
import com.navercorp.pinpoint.web.webhook.service.WebhookService;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.Import;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.web.client.RestTemplate;

import javax.mail.MessagingException;

/**
* JavaMailSenderImpl Properties
* <a href="https://javaee.github.io/javamail/docs/api/com/sun/mail/smtp/package-summary.html">...</a>
*/
@Configuration
@ImportResource({
"classpath:applicationContext-batch-sender.xml"
@Import({
AlarmSenderProperties.class,
MailSenderAutoConfiguration.class
})
public class AlarmSenderConfiguration {


@Bean
public AlarmSenderProperties alarmSenderProperties() {
return new AlarmSenderProperties();
public MailSender springMailSender(AlarmSenderProperties alarmSenderProperties,
UserGroupService userGroupService,
JavaMailSenderImpl mailSender) throws MessagingException {
return new SpringSmtpMailSender(alarmSenderProperties, userGroupService, mailSender);
}


@Bean
@ConditionalOnProperty(name = WebhookModule.NAME, havingValue = "true", matchIfMissing = true)
public WebhookSender webhookSender(AlarmSenderProperties alarmSenderProperties,
UserService userService,
RestTemplate restTemplate,
WebhookService webhookService) {
String pinpointUrl = alarmSenderProperties.getPinpointUrl();
String batchEnv = alarmSenderProperties.getBatchEnv();

WebhookPayloadFactory webhookPayloadFactory = new WebhookPayloadFactory(pinpointUrl, batchEnv);
return new WebhookSenderImpl(webhookPayloadFactory, userService, restTemplate, webhookService);
}

@Bean("webhookSender")
@ConditionalOnProperty(name = WebhookModule.NAME, havingValue = "false")
public WebhookSender webhookSenderEmpty() {
return new WebhookSenderEmptyImpl();
}


}
Original file line number Diff line number Diff line change
@@ -1,51 +1,54 @@
package com.navercorp.pinpoint.batch.alarm;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.MailParseException;

import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import java.util.Objects;

public class AlarmSenderProperties {
@Value("${webhook.enable}")
private boolean webhookEnable;

@Value("${alarm.mail.server.url}")
private String emailServerUrl;
private final InternetAddress senderEmailAddress;

@Value("${alarm.mail.sender.address}")
private String senderEmailAddress;
private final String pinpointUrl;

@Value("${pinpoint.url}")
private String pinpointUrl;
private final String batchEnv;

@Value("${batch.server.env}")
private String batchEnv;
public AlarmSenderProperties(@Value("${spring.mail.properties.mail.smtp.from}") String senderEmailAddress,
@Value("${pinpoint.url}") String pinpointUrl,
@Value("${batch.server.env}") String batchEnv) {
Objects.requireNonNull(senderEmailAddress, "senderEmailAddress");
try {
this.senderEmailAddress = new InternetAddress(senderEmailAddress);
} catch (AddressException e) {
throw new MailParseException(e);
}

public boolean isWebhookEnable() {
return webhookEnable;
this.pinpointUrl = Objects.requireNonNull(pinpointUrl, "pinpointUrl");
this.batchEnv = Objects.requireNonNull(batchEnv, "batchEnv");
}

public String getPinpointUrl() {
return pinpointUrl;
}

public String getEmailServerUrl() {
return emailServerUrl;
}

public String getSenderEmailAddress() {
public InternetAddress getSenderEmailAddress() {
return senderEmailAddress;
}


public String getBatchEnv() {
return batchEnv;
}


@Override
public String toString() {
return "AlarmSenderProperties{" +
"emailServerUrl='" + emailServerUrl + '\'' +
", batchEnv='" + batchEnv + '\'' +
", senderEmailAddress='" + senderEmailAddress + '\'' +
", pinpointUrl='" + pinpointUrl + '\'' +
", webhookEnable=" + webhookEnable +
'}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,16 @@
import com.navercorp.pinpoint.batch.alarm.checker.AlarmCheckerInterface;
import com.navercorp.pinpoint.batch.alarm.checker.PinotAlarmCheckerInterface;
import com.navercorp.pinpoint.web.service.UserGroupService;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.apache.logging.log4j.Logger;
import org.springframework.mail.javamail.JavaMailSender;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

Expand All @@ -40,21 +42,20 @@ public class SpringSmtpMailSender implements MailSender {
private final String batchEnv;
private final String pinpointUrl;
private final InternetAddress senderEmailAddress;
private final JavaMailSenderImpl springMailSender;
private final JavaMailSender springMailSender;

public SpringSmtpMailSender(AlarmSenderProperties alarmSenderProperties, UserGroupService userGroupService, JavaMailSenderImpl springMailSender) {
public SpringSmtpMailSender(AlarmSenderProperties alarmSenderProperties,
UserGroupService userGroupService,
JavaMailSender springMailSender) {
Objects.requireNonNull(alarmSenderProperties, "alarmSenderProperties");
this.pinpointUrl = alarmSenderProperties.getPinpointUrl();
this.batchEnv = alarmSenderProperties.getBatchEnv();

this.userGroupService = Objects.requireNonNull(userGroupService, "userGroupService");
this.springMailSender = Objects.requireNonNull(springMailSender, "mailSender");
this.springMailSender = Objects.requireNonNull(springMailSender, "springMailSender");

this.senderEmailAddress = alarmSenderProperties.getSenderEmailAddress();

try {
this.senderEmailAddress = new InternetAddress(alarmSenderProperties.getSenderEmailAddress());
} catch (AddressException e) {
throw new RuntimeException(e);
}
}

@Override
Expand All @@ -65,22 +66,29 @@ public void sendEmail(AlarmCheckerInterface checker, int sequenceCount) {
return;
}

try{
try {
AlarmMailTemplate mailTemplate = new AlarmMailTemplate(checker, pinpointUrl, batchEnv, sequenceCount);
MimeMessage message = springMailSender.createMimeMessage();
message.setFrom(senderEmailAddress);
message.setRecipients(Message.RecipientType.TO, getReceivers(receivers));

final String subject = mailTemplate.createSubject();
message.setSubject(subject);
message.setContent(mailTemplate.createBody(), "text/html");
final MimeMessage message = newMimeMessage(mailTemplate, receivers);

springMailSender.send(message);
logger.info("send email : {}", subject);
} catch(Exception e) {
logger.info("send email : {}", message.getSubject());
} catch (Exception e) {
logger.error("can't send alarm email. {}", checker.toString(), e);
}
}

private MimeMessage newMimeMessage(AlarmMailTemplate mailTemplate, List<String> receivers) throws MessagingException {
MimeMessage message = springMailSender.createMimeMessage();
message.setFrom(this.senderEmailAddress);
message.setRecipients(Message.RecipientType.TO, getReceivers(receivers));

final String subject = mailTemplate.createSubject();
message.setSubject(subject);
message.setContent(mailTemplate.createBody(), "text/html");
return message;
}

@Override
public void sendEmail(PinotAlarmCheckerInterface checker, int index) {
String userGroupId = checker.getUserGroupId(index);
Expand All @@ -89,29 +97,31 @@ public void sendEmail(PinotAlarmCheckerInterface checker, int index) {
return;
}

try{
try {
PinotAlarmMailTemplate mailTemplate = new PinotAlarmMailTemplate(pinpointUrl, batchEnv, checker, index);
MimeMessage message = springMailSender.createMimeMessage();
message.setFrom(senderEmailAddress);
message.setRecipients(Message.RecipientType.TO, getReceivers(receivers));

final String subject = mailTemplate.createSubject();
final String subject = mailTemplate.createSubject();
message.setSubject(subject);
message.setContent(mailTemplate.createBody(), "text/html");
springMailSender.send(message);
logger.info("send email : {}", subject);
} catch(Exception e) {
} catch (Exception e) {
logger.error("can't send alarm email. {}", checker.toString(), e);
}
}

private InternetAddress[] getReceivers(List<String> receivers) throws AddressException {
InternetAddress[] receiverArray = new InternetAddress[receivers.size()];
int index = 0;
for (String receiver : receivers) {
receiverArray[index++] = new InternetAddress(receiver);
private InternetAddress[] getReceivers(List<String> receivers) {
List<InternetAddress> receiverArray = new ArrayList<>(receivers.size());
for (final String receiver : receivers) {
try {
receiverArray.add(new InternetAddress(receiver));
} catch (AddressException e) {
logger.info("address parse error receiver-address:{}", receiver, e);
}
}

return receiverArray;
return receiverArray.toArray(new InternetAddress[0]);
}
}

This file was deleted.

This file was deleted.

6 changes: 1 addition & 5 deletions batch/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,7 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>


<dependency>
<groupId>org.springframework</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@
BatchAppPropertySources.class,
WebhookModule.class,
WebHbaseModule.class,

BatchWebComponentConfiguration.class,
RestTemplateConfiguration.class,
UserModule.class,
UriStatAlarmConfiguration.class,
Expand Down