Skip to content
Snippets Groups Projects
Commit ef16d72f authored by OZGCloud's avatar OZGCloud
Browse files

OZG-3931 migrate mail-service

parent 2b4bc71f
No related branches found
No related tags found
No related merge requests found
Showing
with 55 additions and 59 deletions
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<parent> <parent>
<groupId>de.itvsh.kop.common</groupId> <groupId>de.itvsh.kop.common</groupId>
<artifactId>kop-common-parent</artifactId> <artifactId>kop-common-parent</artifactId>
<version>1.7.0</version> <version>2.3.1</version>
<relativePath/> <relativePath/>
</parent> </parent>
...@@ -45,8 +45,7 @@ ...@@ -45,8 +45,7 @@
<shedlock.version>4.25.0</shedlock.version> <shedlock.version>4.25.0</shedlock.version>
<logcaptor.version>2.7.10</logcaptor.version> <logcaptor.version>2.7.10</logcaptor.version>
<kop.license.version>1.3.0</kop.license.version> <kop.license.version>1.3.0</kop.license.version>
<maven-jaxb2-plugin.version>0.15.2</maven-jaxb2-plugin.version> <jaxb-maven-plugin.version>3.0.1</jaxb-maven-plugin.version>
<javax.xml.soap.version>1.4.0</javax.xml.soap.version>
</properties> </properties>
<dependencies> <dependencies>
...@@ -134,8 +133,8 @@ ...@@ -134,8 +133,8 @@
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.httpcomponents</groupId> <groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient</artifactId> <artifactId>httpclient5</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-beanutils</groupId> <groupId>commons-beanutils</groupId>
...@@ -205,9 +204,9 @@ ...@@ -205,9 +204,9 @@
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId> <groupId>org.jvnet.jaxb</groupId>
<artifactId>maven-jaxb2-plugin</artifactId> <artifactId>jaxb-maven-plugin</artifactId>
<version>${maven-jaxb2-plugin.version}</version> <version>${jaxb-maven-plugin.version}</version>
<configuration> <configuration>
<schemas> <schemas>
<schema> <schema>
......
...@@ -25,9 +25,6 @@ package de.itvsh.ozg.mail.email; ...@@ -25,9 +25,6 @@ package de.itvsh.ozg.mail.email;
import java.util.Objects; import java.util.Objects;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
...@@ -38,6 +35,8 @@ import org.springframework.stereotype.Service; ...@@ -38,6 +35,8 @@ import org.springframework.stereotype.Service;
import de.itvsh.kop.common.errorhandling.TechnicalException; import de.itvsh.kop.common.errorhandling.TechnicalException;
import de.itvsh.ozg.mail.email.MailSendRequest.MailAttachment; import de.itvsh.ozg.mail.email.MailSendRequest.MailAttachment;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
@Service @Service
......
...@@ -25,8 +25,7 @@ package de.itvsh.ozg.mail.email; ...@@ -25,8 +25,7 @@ package de.itvsh.ozg.mail.email;
import java.util.Collection; import java.util.Collection;
import javax.activation.DataSource; import jakarta.activation.DataSource;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.Singular; import lombok.Singular;
......
...@@ -27,8 +27,7 @@ import java.time.ZonedDateTime; ...@@ -27,8 +27,7 @@ import java.time.ZonedDateTime;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
......
...@@ -29,8 +29,6 @@ import java.util.Optional; ...@@ -29,8 +29,6 @@ import java.util.Optional;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.validation.Valid;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
...@@ -41,6 +39,7 @@ import de.itvsh.ozg.mail.attributes.ClientAttributeService; ...@@ -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.PostfachNachricht.Direction;
import de.itvsh.ozg.mail.postfach.osi.OsiPostfachServerProcessException; import de.itvsh.ozg.mail.postfach.osi.OsiPostfachServerProcessException;
import de.itvsh.ozg.pluto.common.callcontext.CurrentUserService; import de.itvsh.ozg.pluto.common.callcontext.CurrentUserService;
import jakarta.validation.Valid;
import lombok.NonNull; import lombok.NonNull;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
......
package de.itvsh.ozg.mail.postfach.bayernid; package de.itvsh.ozg.mail.postfach.bayernid;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern; import jakarta.validation.constraints.Pattern;
import org.springframework.boot.context.properties.ConstructorBinding;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
...@@ -12,7 +9,6 @@ import lombok.Getter; ...@@ -12,7 +9,6 @@ import lombok.Getter;
@Getter @Getter
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@ConstructorBinding
class Absender { 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}") @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; private String postkorbId;
......
...@@ -9,16 +9,21 @@ import java.security.NoSuchAlgorithmException; ...@@ -9,16 +9,21 @@ import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException; import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException; import java.security.cert.CertificateException;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.apache.http.impl.client.HttpClientBuilder; import org.apache.hc.client5.http.impl.io.BasicHttpClientConnectionManager;
import org.apache.http.ssl.SSLContextBuilder; 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.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller; import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import org.springframework.ws.transport.http.HttpComponentsMessageSender; import org.springframework.ws.transport.http.HttpComponents5MessageSender;
import org.springframework.ws.transport.http.HttpComponentsMessageSender.RemoveSoapHeadersInterceptor; import org.springframework.ws.transport.http.HttpComponents5MessageSender.RemoveSoapHeadersInterceptor;
@Configuration @Configuration
@ConditionalOnProperty(prefix = "ozgcloud.bayernid", name = { "server" }) @ConditionalOnProperty(prefix = "ozgcloud.bayernid", name = { "server" })
...@@ -48,14 +53,21 @@ class BayernIdConfiguration { ...@@ -48,14 +53,21 @@ class BayernIdConfiguration {
return remoteService; return remoteService;
} }
HttpComponentsMessageSender initMessageSender() HttpComponents5MessageSender initMessageSender()
throws CertificateException, KeyStoreException, NoSuchAlgorithmException, IOException, UnrecoverableKeyException, KeyManagementException { throws CertificateException, KeyStoreException, NoSuchAlgorithmException, IOException, UnrecoverableKeyException, KeyManagementException {
var httpClient = HttpClientBuilder.create() var httpClient = HttpClientBuilder.create()
.setSSLSocketFactory(createSslConnectionSocketFactory()) .setConnectionManager(createConnectionManager())
.addInterceptorFirst(new RemoveSoapHeadersInterceptor()) .addRequestInterceptorFirst(new RemoveSoapHeadersInterceptor())
.build(); .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() private SSLConnectionSocketFactory createSslConnectionSocketFactory()
......
...@@ -2,9 +2,6 @@ package de.itvsh.ozg.mail.postfach.bayernid; ...@@ -2,9 +2,6 @@ package de.itvsh.ozg.mail.postfach.bayernid;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.annotation.PostConstruct;
import javax.xml.bind.JAXBElement;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.oxm.jaxb.Jaxb2Marshaller; import org.springframework.oxm.jaxb.Jaxb2Marshaller;
...@@ -20,6 +17,8 @@ import de.akdb.egov.bsp.nachrichten.BspQuittung; ...@@ -20,6 +17,8 @@ import de.akdb.egov.bsp.nachrichten.BspQuittung;
import de.itvsh.ozg.mail.postfach.PostfachNachricht; import de.itvsh.ozg.mail.postfach.PostfachNachricht;
import de.itvsh.ozg.mail.postfach.PostfachRemoteService; import de.itvsh.ozg.mail.postfach.PostfachRemoteService;
import de.itvsh.ozg.mail.postfach.PostfachRuntimeException; import de.itvsh.ozg.mail.postfach.PostfachRuntimeException;
import jakarta.annotation.PostConstruct;
import jakarta.xml.bind.JAXBElement;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
@Log4j2 @Log4j2
......
package de.itvsh.ozg.mail.postfach.bayernid; package de.itvsh.ozg.mail.postfach.bayernid;
import javax.validation.constraints.NotEmpty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan; import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import jakarta.validation.constraints.NotEmpty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package de.itvsh.ozg.mail.postfach.bayernid; package de.itvsh.ozg.mail.postfach.bayernid;
import org.springframework.boot.context.properties.ConstructorBinding;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
...@@ -10,7 +9,6 @@ import lombok.Getter; ...@@ -10,7 +9,6 @@ import lombok.Getter;
@Getter @Getter
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@ConstructorBinding
class Zertifikat { class Zertifikat {
private Resource keystore; private Resource keystore;
private String password; private String password;
......
...@@ -28,8 +28,6 @@ import java.util.Objects; ...@@ -28,8 +28,6 @@ import java.util.Objects;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.annotation.PostConstruct;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
...@@ -46,6 +44,7 @@ import de.itvsh.ozg.mail.postfach.PostfachBadRequestException; ...@@ -46,6 +44,7 @@ import de.itvsh.ozg.mail.postfach.PostfachBadRequestException;
import de.itvsh.ozg.mail.postfach.PostfachNachricht; import de.itvsh.ozg.mail.postfach.PostfachNachricht;
import de.itvsh.ozg.mail.postfach.PostfachRemoteService; import de.itvsh.ozg.mail.postfach.PostfachRemoteService;
import de.itvsh.ozg.mail.postfach.PostfachRuntimeException; import de.itvsh.ozg.mail.postfach.PostfachRuntimeException;
import jakarta.annotation.PostConstruct;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
@Service @Service
......
...@@ -26,12 +26,13 @@ package de.itvsh.ozg.mail.postfach.osi; ...@@ -26,12 +26,13 @@ package de.itvsh.ozg.mail.postfach.osi;
import java.util.Objects; import java.util.Objects;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpHost; import org.apache.hc.client5.http.auth.AuthScope;
import org.apache.http.auth.AuthScope; import org.apache.hc.client5.http.auth.CredentialsProvider;
import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider; import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.apache.http.impl.client.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.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.client.RestTemplateBuilder;
...@@ -77,6 +78,7 @@ public class PostfachConfiguration implements RestTemplateCustomizer { ...@@ -77,6 +78,7 @@ public class PostfachConfiguration implements RestTemplateCustomizer {
.setProxy(proxy).setDefaultCredentialsProvider(buildCredentialsProvider(proxy)) .setProxy(proxy).setDefaultCredentialsProvider(buildCredentialsProvider(proxy))
.build(); .build();
HttpClients.custom().build();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient)); restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
} }
...@@ -87,10 +89,10 @@ public class PostfachConfiguration implements RestTemplateCustomizer { ...@@ -87,10 +89,10 @@ public class PostfachConfiguration implements RestTemplateCustomizer {
return null; return null;
} }
CredentialsProvider credsProvider = new BasicCredentialsProvider(); var credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials( credsProvider.setCredentials(
new AuthScope(proxyHost), new AuthScope(proxyHost),
new UsernamePasswordCredentials(proxyConfig.getUsername(), proxyConfig.getPassword())); new UsernamePasswordCredentials(proxyConfig.getUsername(), proxyConfig.getPassword().toCharArray()));
return credsProvider; return credsProvider;
} }
......
...@@ -27,11 +27,6 @@ import static de.itvsh.ozg.mail.email.MailSendRequestTestFactory.*; ...@@ -27,11 +27,6 @@ import static de.itvsh.ozg.mail.email.MailSendRequestTestFactory.*;
import static org.mockito.ArgumentMatchers.*; import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*; 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.BeforeEach;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
...@@ -43,7 +38,10 @@ import org.springframework.mail.MailSendException; ...@@ -43,7 +38,10 @@ import org.springframework.mail.MailSendException;
import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper; 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 { class EMailServiceTest {
......
...@@ -25,9 +25,8 @@ package de.itvsh.ozg.mail.email; ...@@ -25,9 +25,8 @@ package de.itvsh.ozg.mail.email;
import java.util.UUID; import java.util.UUID;
import javax.mail.util.ByteArrayDataSource;
import de.itvsh.ozg.mail.email.MailSendRequest.MailAttachment; import de.itvsh.ozg.mail.email.MailSendRequest.MailAttachment;
import jakarta.mail.util.ByteArrayDataSource;
class MailSendRequestTestFactory { class MailSendRequestTestFactory {
......
...@@ -26,8 +26,6 @@ package de.itvsh.ozg.mail.postfach.bayernid; ...@@ -26,8 +26,6 @@ package de.itvsh.ozg.mail.postfach.bayernid;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import javax.xml.bind.JAXBElement;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
...@@ -42,6 +40,7 @@ import org.springframework.ws.client.core.WebServiceTemplate; ...@@ -42,6 +40,7 @@ import org.springframework.ws.client.core.WebServiceTemplate;
import akdb.bsp.postkorb.komm.webservice.SendBspNachrichtNativeOutput; import akdb.bsp.postkorb.komm.webservice.SendBspNachrichtNativeOutput;
import de.itvsh.ozg.mail.postfach.PostfachNachrichtTestFactory; import de.itvsh.ozg.mail.postfach.PostfachNachrichtTestFactory;
import de.itvsh.ozg.mail.postfach.PostfachRuntimeException; import de.itvsh.ozg.mail.postfach.PostfachRuntimeException;
import jakarta.xml.bind.JAXBElement;
class BayernIdPostfachRemoteServiceTest { class BayernIdPostfachRemoteServiceTest {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment