diff --git a/mail-service/pom.xml b/mail-service/pom.xml index 7de82b12b28eb336acdf7536d076c2ba96ca1e56..f14d9f65234fdf05b9c0f8e83d08a1a9a27397e1 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 63f0afbb546fadefaac2c47a9ab49ba7f17fb721..c49dba5962f2c3493f1f6ce01661438190b328bb 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 12e29155c1724804853d0c79066edb688dfc6635..d690e84d1461884ec24531d15082c7a9531a1466 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 37a0f527ffc294cfbc4df07ab4a01e5bd14cc4c5..d103e02cd56ff3604e8044526086e096f048496d 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 71d4ab8ef2068c943ccc7b7ed04f889682608447..491d56927460240f3849a05bed9f95c11a078575 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 e6e05510d1993fafd1c266da19e00ce53e614480..72f3fba8a10061b9343e9f6eb8e23447db142692 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 ad9f4be702c9de1b9c44e0049a2bd124e17258dc..a082aa822938148ca5c814aa8244a65e16978a07 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 667a96e7285126d2ac38bd1237960564d10145a1..5c0378643d2cda6206c437ffe26323b325f80e68 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 3debbdd2a877e3c977acfd662e28bbd16759fbdb..b6a6b28ab43c85d335cdc4de64cc9c35137ebe99 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 54a0cd2c89efa2078ebc1c18b5cc63e20277d7d7..0515677768d3c1853e8cfdfc4a0f361bee653cf5 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 c198740de14dd8a47cbc9fbb25fdb274834c4563..9625d099d758756a2f6787fc49629d03fb75d159 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 e86b93e99274c3cc02ff6cef200668e98b224d91..c16330f6374ca7c799dac8261230d85af510d868 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 2ef4b812b6e1e691d30ce9379b016f12b35bd028..2912e143e9b7005146a7c49ee6b387c2a3b087bf 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 9e2573785097d7cafded7b59dc1bbe6426200a24..9420e50191ff9f7722f8afe47c3ba94ab06cb2c6 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 3db294ce97c6705a1b73a485741e47fb1e94efb7..2e0e8678b7c6340211bcf16abc5685b4eebd2c91 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 {