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 @@
<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>
......
......@@ -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
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
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;
......
......@@ -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()
......
......@@ -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
......
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;
......
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;
......
......@@ -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
......
......@@ -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;
}
......
......@@ -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 {
......
......@@ -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 {
......
......@@ -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 {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment