From ef16d72fb91b9f45c4283897d1267fc1ef2b08a4 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Thu, 5 Oct 2023 18:09:08 +0200 Subject: [PATCH] OZG-3931 migrate mail-service --- mail-service/pom.xml | 15 +++++----- .../de/itvsh/ozg/mail/email/EMailService.java | 5 ++-- .../itvsh/ozg/mail/email/MailSendRequest.java | 3 +- .../ozg/mail/postfach/PostfachNachricht.java | 3 +- .../ozg/mail/postfach/PostfachService.java | 3 +- .../ozg/mail/postfach/bayernid/Absender.java | 8 ++--- .../bayernid/BayernIdConfiguration.java | 30 +++++++++++++------ .../BayernIdPostfachRemoteService.java | 5 ++-- .../postfach/bayernid/BayernIdProperties.java | 3 +- .../mail/postfach/bayernid/Zertifikat.java | 2 -- .../osi/OsiPostfachRemoteService.java | 3 +- .../postfach/osi/PostfachConfiguration.java | 18 ++++++----- .../ozg/mail/email/EMailServiceTest.java | 10 +++---- .../email/MailSendRequestTestFactory.java | 3 +- .../BayernIdPostfachRemoteServiceTest.java | 3 +- 15 files changed, 55 insertions(+), 59 deletions(-) diff --git a/mail-service/pom.xml b/mail-service/pom.xml index 7de82b12b..f14d9f652 100644 --- a/mail-service/pom.xml +++ b/mail-service/pom.xml @@ -30,7 +30,7 @@ <parent> <groupId>de.itvsh.kop.common</groupId> <artifactId>kop-common-parent</artifactId> - <version>1.7.0</version> + <version>2.3.1</version> <relativePath/> </parent> @@ -45,8 +45,7 @@ <shedlock.version>4.25.0</shedlock.version> <logcaptor.version>2.7.10</logcaptor.version> <kop.license.version>1.3.0</kop.license.version> - <maven-jaxb2-plugin.version>0.15.2</maven-jaxb2-plugin.version> - <javax.xml.soap.version>1.4.0</javax.xml.soap.version> + <jaxb-maven-plugin.version>3.0.1</jaxb-maven-plugin.version> </properties> <dependencies> @@ -134,8 +133,8 @@ <artifactId>commons-lang3</artifactId> </dependency> <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpclient</artifactId> + <groupId>org.apache.httpcomponents.client5</groupId> + <artifactId>httpclient5</artifactId> </dependency> <dependency> <groupId>commons-beanutils</groupId> @@ -205,9 +204,9 @@ </plugin> <plugin> - <groupId>org.jvnet.jaxb2.maven2</groupId> - <artifactId>maven-jaxb2-plugin</artifactId> - <version>${maven-jaxb2-plugin.version}</version> + <groupId>org.jvnet.jaxb</groupId> + <artifactId>jaxb-maven-plugin</artifactId> + <version>${jaxb-maven-plugin.version}</version> <configuration> <schemas> <schema> diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/email/EMailService.java b/mail-service/src/main/java/de/itvsh/ozg/mail/email/EMailService.java index 63f0afbb5..c49dba596 100644 --- a/mail-service/src/main/java/de/itvsh/ozg/mail/email/EMailService.java +++ b/mail-service/src/main/java/de/itvsh/ozg/mail/email/EMailService.java @@ -25,9 +25,6 @@ package de.itvsh.ozg.mail.email; import java.util.Objects; -import javax.mail.MessagingException; -import javax.mail.internet.MimeMessage; - import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; @@ -38,6 +35,8 @@ import org.springframework.stereotype.Service; import de.itvsh.kop.common.errorhandling.TechnicalException; import de.itvsh.ozg.mail.email.MailSendRequest.MailAttachment; +import jakarta.mail.MessagingException; +import jakarta.mail.internet.MimeMessage; import lombok.extern.log4j.Log4j2; @Service diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/email/MailSendRequest.java b/mail-service/src/main/java/de/itvsh/ozg/mail/email/MailSendRequest.java index 12e29155c..d690e84d1 100644 --- a/mail-service/src/main/java/de/itvsh/ozg/mail/email/MailSendRequest.java +++ b/mail-service/src/main/java/de/itvsh/ozg/mail/email/MailSendRequest.java @@ -25,8 +25,7 @@ package de.itvsh.ozg.mail.email; import java.util.Collection; -import javax.activation.DataSource; - +import jakarta.activation.DataSource; import lombok.Builder; import lombok.Getter; import lombok.Singular; diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachNachricht.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachNachricht.java index 37a0f527f..d103e02cd 100644 --- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachNachricht.java +++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachNachricht.java @@ -27,8 +27,7 @@ import java.time.ZonedDateTime; import java.util.Collections; import java.util.List; -import javax.validation.constraints.NotNull; - +import jakarta.validation.constraints.NotNull; import lombok.Builder; import lombok.Getter; diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachService.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachService.java index 71d4ab8ef..491d56927 100644 --- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachService.java +++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/PostfachService.java @@ -29,8 +29,6 @@ import java.util.Optional; import java.util.function.Predicate; import java.util.stream.Stream; -import javax.validation.Valid; - import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; @@ -41,6 +39,7 @@ import de.itvsh.ozg.mail.attributes.ClientAttributeService; import de.itvsh.ozg.mail.postfach.PostfachNachricht.Direction; import de.itvsh.ozg.mail.postfach.osi.OsiPostfachServerProcessException; import de.itvsh.ozg.pluto.common.callcontext.CurrentUserService; +import jakarta.validation.Valid; import lombok.NonNull; import lombok.extern.log4j.Log4j2; diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Absender.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Absender.java index e6e05510d..72f3fba8a 100644 --- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Absender.java +++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Absender.java @@ -1,10 +1,7 @@ package de.itvsh.ozg.mail.postfach.bayernid; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Pattern; - -import org.springframework.boot.context.properties.ConstructorBinding; - +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -12,7 +9,6 @@ import lombok.Getter; @Getter @Builder @AllArgsConstructor -@ConstructorBinding class Absender { @Pattern(regexp = "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}") private String postkorbId; diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdConfiguration.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdConfiguration.java index ad9f4be70..a082aa822 100644 --- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdConfiguration.java +++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdConfiguration.java @@ -9,16 +9,21 @@ import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; -import org.apache.http.conn.ssl.SSLConnectionSocketFactory; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.ssl.SSLContextBuilder; +import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; +import org.apache.hc.client5.http.impl.io.BasicHttpClientConnectionManager; +import org.apache.hc.client5.http.io.HttpClientConnectionManager; +import org.apache.hc.client5.http.socket.ConnectionSocketFactory; +import org.apache.hc.client5.http.socket.PlainConnectionSocketFactory; +import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory; +import org.apache.hc.core5.http.config.RegistryBuilder; +import org.apache.hc.core5.ssl.SSLContextBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.oxm.jaxb.Jaxb2Marshaller; -import org.springframework.ws.transport.http.HttpComponentsMessageSender; -import org.springframework.ws.transport.http.HttpComponentsMessageSender.RemoveSoapHeadersInterceptor; +import org.springframework.ws.transport.http.HttpComponents5MessageSender; +import org.springframework.ws.transport.http.HttpComponents5MessageSender.RemoveSoapHeadersInterceptor; @Configuration @ConditionalOnProperty(prefix = "ozgcloud.bayernid", name = { "server" }) @@ -48,14 +53,21 @@ class BayernIdConfiguration { return remoteService; } - HttpComponentsMessageSender initMessageSender() + HttpComponents5MessageSender initMessageSender() throws CertificateException, KeyStoreException, NoSuchAlgorithmException, IOException, UnrecoverableKeyException, KeyManagementException { var httpClient = HttpClientBuilder.create() - .setSSLSocketFactory(createSslConnectionSocketFactory()) - .addInterceptorFirst(new RemoveSoapHeadersInterceptor()) + .setConnectionManager(createConnectionManager()) + .addRequestInterceptorFirst(new RemoveSoapHeadersInterceptor()) .build(); - return new HttpComponentsMessageSender(httpClient); + return new HttpComponents5MessageSender(httpClient); + } + + private HttpClientConnectionManager createConnectionManager() + throws UnrecoverableKeyException, CertificateException, NoSuchAlgorithmException, KeyStoreException, IOException, KeyManagementException { + var socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create().register("https", createSslConnectionSocketFactory()) + .register("http", new PlainConnectionSocketFactory()).build(); + return new BasicHttpClientConnectionManager(socketFactoryRegistry); } private SSLConnectionSocketFactory createSslConnectionSocketFactory() diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteService.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteService.java index 667a96e72..5c0378643 100644 --- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteService.java +++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteService.java @@ -2,9 +2,6 @@ package de.itvsh.ozg.mail.postfach.bayernid; import java.util.stream.Stream; -import javax.annotation.PostConstruct; -import javax.xml.bind.JAXBElement; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.oxm.jaxb.Jaxb2Marshaller; @@ -20,6 +17,8 @@ import de.akdb.egov.bsp.nachrichten.BspQuittung; import de.itvsh.ozg.mail.postfach.PostfachNachricht; import de.itvsh.ozg.mail.postfach.PostfachRemoteService; import de.itvsh.ozg.mail.postfach.PostfachRuntimeException; +import jakarta.annotation.PostConstruct; +import jakarta.xml.bind.JAXBElement; import lombok.extern.log4j.Log4j2; @Log4j2 diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdProperties.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdProperties.java index 3debbdd2a..b6a6b28ab 100644 --- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdProperties.java +++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdProperties.java @@ -1,13 +1,12 @@ package de.itvsh.ozg.mail.postfach.bayernid; -import javax.validation.constraints.NotEmpty; - import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationPropertiesScan; import org.springframework.context.annotation.Configuration; import org.springframework.validation.annotation.Validated; +import jakarta.validation.constraints.NotEmpty; import lombok.Getter; import lombok.Setter; diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Zertifikat.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Zertifikat.java index 54a0cd2c8..051567776 100644 --- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Zertifikat.java +++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/bayernid/Zertifikat.java @@ -1,6 +1,5 @@ package de.itvsh.ozg.mail.postfach.bayernid; -import org.springframework.boot.context.properties.ConstructorBinding; import org.springframework.core.io.Resource; import lombok.AllArgsConstructor; @@ -10,7 +9,6 @@ import lombok.Getter; @Getter @Builder @AllArgsConstructor -@ConstructorBinding class Zertifikat { private Resource keystore; private String password; diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/OsiPostfachRemoteService.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/OsiPostfachRemoteService.java index c198740de..9625d099d 100644 --- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/OsiPostfachRemoteService.java +++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/OsiPostfachRemoteService.java @@ -28,8 +28,6 @@ import java.util.Objects; import java.util.function.Supplier; import java.util.stream.Stream; -import javax.annotation.PostConstruct; - import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -46,6 +44,7 @@ import de.itvsh.ozg.mail.postfach.PostfachBadRequestException; import de.itvsh.ozg.mail.postfach.PostfachNachricht; import de.itvsh.ozg.mail.postfach.PostfachRemoteService; import de.itvsh.ozg.mail.postfach.PostfachRuntimeException; +import jakarta.annotation.PostConstruct; import lombok.extern.log4j.Log4j2; @Service diff --git a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/PostfachConfiguration.java b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/PostfachConfiguration.java index e86b93e99..c16330f63 100644 --- a/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/PostfachConfiguration.java +++ b/mail-service/src/main/java/de/itvsh/ozg/mail/postfach/osi/PostfachConfiguration.java @@ -26,12 +26,13 @@ package de.itvsh.ozg.mail.postfach.osi; import java.util.Objects; import org.apache.commons.lang3.StringUtils; -import org.apache.http.HttpHost; -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.client.CredentialsProvider; -import org.apache.http.impl.client.BasicCredentialsProvider; -import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.hc.client5.http.auth.AuthScope; +import org.apache.hc.client5.http.auth.CredentialsProvider; +import org.apache.hc.client5.http.auth.UsernamePasswordCredentials; +import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider; +import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; +import org.apache.hc.client5.http.impl.classic.HttpClients; +import org.apache.hc.core5.http.HttpHost; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.web.client.RestTemplateBuilder; @@ -77,6 +78,7 @@ public class PostfachConfiguration implements RestTemplateCustomizer { .setProxy(proxy).setDefaultCredentialsProvider(buildCredentialsProvider(proxy)) .build(); + HttpClients.custom().build(); restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient)); } @@ -87,10 +89,10 @@ public class PostfachConfiguration implements RestTemplateCustomizer { return null; } - CredentialsProvider credsProvider = new BasicCredentialsProvider(); + var credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope(proxyHost), - new UsernamePasswordCredentials(proxyConfig.getUsername(), proxyConfig.getPassword())); + new UsernamePasswordCredentials(proxyConfig.getUsername(), proxyConfig.getPassword().toCharArray())); return credsProvider; } diff --git a/mail-service/src/test/java/de/itvsh/ozg/mail/email/EMailServiceTest.java b/mail-service/src/test/java/de/itvsh/ozg/mail/email/EMailServiceTest.java index 2ef4b812b..2912e143e 100644 --- a/mail-service/src/test/java/de/itvsh/ozg/mail/email/EMailServiceTest.java +++ b/mail-service/src/test/java/de/itvsh/ozg/mail/email/EMailServiceTest.java @@ -27,11 +27,6 @@ import static de.itvsh.ozg.mail.email.MailSendRequestTestFactory.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; -import javax.activation.DataSource; -import javax.mail.MessagingException; -import javax.mail.internet.MimeMessage; - -import lombok.SneakyThrows; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -43,7 +38,10 @@ import org.springframework.mail.MailSendException; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; -import java.util.Arrays; +import jakarta.activation.DataSource; +import jakarta.mail.MessagingException; +import jakarta.mail.internet.MimeMessage; +import lombok.SneakyThrows; class EMailServiceTest { diff --git a/mail-service/src/test/java/de/itvsh/ozg/mail/email/MailSendRequestTestFactory.java b/mail-service/src/test/java/de/itvsh/ozg/mail/email/MailSendRequestTestFactory.java index 9e2573785..9420e5019 100644 --- a/mail-service/src/test/java/de/itvsh/ozg/mail/email/MailSendRequestTestFactory.java +++ b/mail-service/src/test/java/de/itvsh/ozg/mail/email/MailSendRequestTestFactory.java @@ -25,9 +25,8 @@ package de.itvsh.ozg.mail.email; import java.util.UUID; -import javax.mail.util.ByteArrayDataSource; - import de.itvsh.ozg.mail.email.MailSendRequest.MailAttachment; +import jakarta.mail.util.ByteArrayDataSource; class MailSendRequestTestFactory { diff --git a/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteServiceTest.java b/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteServiceTest.java index 3db294ce9..2e0e8678b 100644 --- a/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteServiceTest.java +++ b/mail-service/src/test/java/de/itvsh/ozg/mail/postfach/bayernid/BayernIdPostfachRemoteServiceTest.java @@ -26,8 +26,6 @@ package de.itvsh.ozg.mail.postfach.bayernid; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; -import javax.xml.bind.JAXBElement; - import org.apache.commons.lang3.StringUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -42,6 +40,7 @@ import org.springframework.ws.client.core.WebServiceTemplate; import akdb.bsp.postkorb.komm.webservice.SendBspNachrichtNativeOutput; import de.itvsh.ozg.mail.postfach.PostfachNachrichtTestFactory; import de.itvsh.ozg.mail.postfach.PostfachRuntimeException; +import jakarta.xml.bind.JAXBElement; class BayernIdPostfachRemoteServiceTest { -- GitLab