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

OZG-5367 outsource bayernid-proxy

parent 5f3c5d8d
No related branches found
No related tags found
No related merge requests found
Showing
with 1 addition and 1293 deletions
......@@ -42,22 +42,6 @@ pipeline {
if( !(rootVersion == serverVersion && rootVersion == interfaceVersion && rootVersion == mailVersion)){
error("Versionen sind nicht identisch")
}
def bayernIdProxyParent = getPomVersion('nachrichten-bayernid-proxy/pom.xml')
def bayernIdProxyInterface = getPomVersion('nachrichten-bayernid-proxy/bayernid-proxy-interface/pom.xml')
if(isReleaseBranch()){
if ( !(bayernIdProxyParent ==~ RELEASE_REGEX) || !(bayernIdProxyInterface ==~ RELEASE_REGEX)) {
error("Keine Release Version für BayernIdProxy Branch ${env.BRANCH_NAME}.")
}
} else {
if ( !(bayernIdProxyParent ==~ SNAPSHOT_REGEX) || !(bayernIdProxyInterface ==~ SNAPSHOT_REGEX)) {
error("Keine Snapshot Version für BayernIdProxy Branch ${env.BRANCH_NAME}.")
}
}
if( !(bayernIdProxyParent == bayernIdProxyInterface)){
error("Versionen BayernIdProxy sind nicht identisch")
}
}
}
}
......@@ -105,20 +89,6 @@ pipeline {
}
}
stage('Build Docker image nachrichten-bayernid-proxy') {
steps {
script {
FAILED_STAGE=env.STAGE_NAME
}
configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
dir('nachrichten-bayernid-proxy/bayernid-proxy-impl') {
sh 'mvn --no-transfer-progress -s $MAVEN_SETTINGS spring-boot:build-image -DskipTests -Dmaven.wagon.http.retryHandler.count=3'
}
}
}
}
stage('Tag and Push Docker image vorgang-manager') {
steps {
script {
......@@ -138,25 +108,6 @@ pipeline {
}
}
stage('Tag and Push Docker image nachrichten-bayernid-proxy') {
steps {
script {
FAILED_STAGE=env.STAGE_NAME
IMAGE_TAG_BAYERN_ID_PROXY = generateImageTag('nachrichten-bayernid-proxy/pom.xml')
tagAndPushDockerImage('bayernid-proxy', IMAGE_TAG_BAYERN_ID_PROXY)
if (env.BRANCH_NAME == 'master') {
tagAndPushDockerImage('bayernid-proxy', 'snapshot-latest')
tagAndPushDockerImage('bayernid-proxy', 'e2e-test')
}
else if (env.BRANCH_NAME == 'release') {
tagAndPushDockerImage('bayernid-proxy', 'latest')
}
}
}
}
stage('Test, build and deploy Helm Chart vorgang-manager') {
steps {
script {
......@@ -175,26 +126,6 @@ pipeline {
}
}
stage('Test, build and deploy Helm Chart bayernid-proxy') {
steps {
script {
FAILED_STAGE=env.STAGE_NAME
HELM_CHART_VERSION_BAYERN_ID_PROXY = generateHelmChartVersion("nachrichten-bayernid-proxy/pom.xml")
dir('nachrichten-bayernid-proxy') {
sh "./run_helm_test.sh"
}
dir('nachrichten-bayernid-proxy/src/main/helm') {
sh "helm package --version=${HELM_CHART_VERSION_BAYERN_ID_PROXY} ."
deployHelmChart("bayernid-proxy", HELM_CHART_VERSION_BAYERN_ID_PROXY)
}
}
}
}
stage('Trigger Dev rollout') {
when {
branch 'master'
......@@ -206,7 +137,6 @@ pipeline {
cloneGitopsRepo()
setNewVorgangManagerGitopsVersion("dev")
setNewNachrichtenBayernIdProxyGitopsVersion("dev")
pushDevGitopsRepo()
}
}
......@@ -223,7 +153,6 @@ pipeline {
cloneGitopsRepo()
setNewVorgangManagerGitopsVersion("test")
setNewNachrichtenBayernIdProxyGitopsVersion("test")
pushTestGitopsRepo()
}
......@@ -296,15 +225,6 @@ pipeline {
}
}
dir('nachrichten-bayernid-proxy') {
try {
withSonarQubeEnv('sonarqube-ozg-sh'){
sh 'mvn -s $MAVEN_SETTINGS sonar:sonar'
}
} catch (Exception e) {
unstable("SonarQube BayernIdProxy failed")
}
}
}
}
}
......@@ -414,18 +334,6 @@ Void setNewVorgangManagerGitopsVersion(String environment) {
}
}
Void setNewNachrichtenBayernIdProxyGitopsVersion(String environment) {
dir("gitops") {
def envFile = "${environment}/application/values/bayernid-proxy-values.yaml"
def envVersions = readYaml file: envFile
envVersions.bayernid_proxy.image.tag = IMAGE_TAG_BAYERN_ID_PROXY
envVersions.bayernid_proxy.helm.version = HELM_CHART_VERSION_BAYERN_ID_PROXY
writeYaml file: envFile, data: envVersions, overwrite: true
}
}
Void pushDevGitopsRepo() {
pushNewGitopsVersion('dev')
}
......@@ -443,7 +351,7 @@ Void pushNewGitopsVersion(String environment) {
withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
sh "git add ${environment}/application/values/*-values.yaml"
sh "git commit -m 'jenkins rollout ${environment} vorgang-manager version ${IMAGE_TAG} bayern-id version ${IMAGE_TAG_BAYERN_ID_PROXY}'"
sh "git commit -m 'jenkins rollout ${environment} vorgang-manager version ${IMAGE_TAG}'"
sh 'git push https://${USER}:${TOKEN}@git.ozg-sh.de/ozgcloud-devops/gitops.git'
}
}
......
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
Ministerpräsidenten des Landes Schleswig-Holstein
Staatskanzlei
Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
Lizenziert unter der EUPL, Version 1.2 oder - sobald
diese von der Europäischen Kommission genehmigt wurden -
Folgeversionen der EUPL ("Lizenz");
Sie dürfen dieses Werk ausschließlich gemäß
dieser Lizenz nutzen.
Eine Kopie der Lizenz finden Sie hier:
https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
Sofern nicht durch anwendbare Rechtsvorschriften
gefordert oder in schriftlicher Form vereinbart, wird
die unter der Lizenz verbreitete Software "so wie sie
ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
ausdrücklich oder stillschweigend - verbreitet.
Die sprachspezifischen Genehmigungen und Beschränkungen
unter der Lizenz sind dem Lizenztext zu entnehmen.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>de.ozgcloud.nachrichten</groupId>
<artifactId>nachrichten-bayernid-proxy</artifactId>
<version>0.4.0-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
<artifactId>bayernid-proxy-impl</artifactId>
<name>OZG Cloud BayernID Proxy Implementation</name>
<properties>
<jaxb-maven-plugin.version>4.0.0</jaxb-maven-plugin.version>
<spring-boot.build-image.imageName>docker.ozg-sh.de/bayernid-proxy:build-latest</spring-boot.build-image.imageName>
</properties>
<dependencies>
<dependency>
<groupId>de.ozgcloud.nachrichten</groupId>
<artifactId>bayernid-proxy-interface</artifactId>
<version>${project.version}</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-xml</artifactId>
</dependency>
<!-- commons -->
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
</dependency>
<!-- grpc -->
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-server-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-inprocess</artifactId>
</dependency>
<!-- aspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
<!-- Tools -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
<!-- Dev -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<scope>provided</scope>
</dependency>
<!-- Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.wiremock</groupId>
<artifactId>wiremock-standalone</artifactId>
<version>${wiremock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-client-spring-boot-starter</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb</groupId>
<artifactId>jaxb-maven-plugin</artifactId>
<version>${jaxb-maven-plugin.version}</version>
<configuration>
<schemas>
<schema>
<fileset>
<directory>${basedir}/src/main/resources/bayernid</directory>
<includes>
<include>*.wsdl</include>
</includes>
</fileset>
</schema>
<schema>
<fileset>
<directory>${basedir}/src/main/resources/bayernid</directory>
<includes>
<include>*.xsd</include>
</includes>
</fileset>
</schema>
</schemas>
<episode>false</episode>
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy;
import jakarta.validation.constraints.NotBlank;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.annotation.Validated;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Validated
@Configuration
@ConfigurationProperties(prefix = "ozgcloud.bayernid")
public class BayernIdProperties {
@NotBlank
private String server;
private boolean useSsl = true;
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy;
import java.util.TimeZone;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication
@EnableAsync(proxyTargetClass = true)
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class BayernIdProxyApplication {
public static void main(String[] args) {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
SpringApplication.run(BayernIdProxyApplication.class, args);
}
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy;
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.springframework.boot.ssl.SslBundles;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import org.springframework.ws.transport.http.HttpComponents5MessageSender;
import akdb.bsp.postkorb.komm.webservice.ObjectFactory;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.akdb.BayernIdRemoteService;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.message.BayernIdMessageMapper;
import lombok.RequiredArgsConstructor;
@Configuration
@RequiredArgsConstructor
class BayernIdProxyConfiguration {
private final SslBundles sslBundles;
private final BayernIdProperties properties;
@Bean
Jaxb2Marshaller createJaxb2Marshaller() {
var marshaller = new Jaxb2Marshaller();
marshaller.setContextPaths("akdb.bsp.postkorb.komm.webservice", "de.akdb.egov.bsp.nachrichten");
return marshaller;
}
@Bean
BayernIdRemoteService soapHttpClient(BayernIdMessageMapper messageMapper, Jaxb2Marshaller marshaller) {
var bayernIdRemoteService = new BayernIdRemoteService(messageMapper, new ObjectFactory());
bayernIdRemoteService.setMarshaller(marshaller);
bayernIdRemoteService.setUnmarshaller(marshaller);
bayernIdRemoteService.setDefaultUri(properties.getServer());
bayernIdRemoteService.setMessageSender(createMessageSender());
return bayernIdRemoteService;
}
HttpComponents5MessageSender createMessageSender() {
var httpClient = HttpClientBuilder.create()
.setConnectionManager(createConnectionManager())
.addRequestInterceptorFirst(new HttpComponents5MessageSender.RemoveSoapHeadersInterceptor())
.build();
return new HttpComponents5MessageSender(httpClient);
}
private HttpClientConnectionManager createConnectionManager() {
var socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create().register("http", new PlainConnectionSocketFactory());
if (properties.isUseSsl()) {
socketFactoryRegistry.register("https", createSslConnectionSocketFactory());
}
return new BasicHttpClientConnectionManager(socketFactoryRegistry.build());
}
private SSLConnectionSocketFactory createSslConnectionSocketFactory() {
return new SSLConnectionSocketFactory(sslBundles.getBundle("bayern-id-ca").createSslContext());
}
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.BayernIdProxyServiceGrpc.BayernIdProxyServiceImplBase;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.message.BayernIdMessageMapper;
import io.grpc.stub.StreamObserver;
import lombok.RequiredArgsConstructor;
import net.devh.boot.grpc.server.service.GrpcService;
@GrpcService
@RequiredArgsConstructor
public class BayernIdProxyGrpcService extends BayernIdProxyServiceImplBase {
private final BayernIdProxyService proxyService;
private final BayernIdMessageMapper messageMapper;
@Override
public StreamObserver<GrpcSendBayernIdMessageRequest> sendMessageAsStream(StreamObserver<GrpcSendBayernIdMessageResponse> responseObserver) {
return new UploadStreamObserver(responseObserver, proxyService, messageMapper);
}
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy;
import org.springframework.stereotype.Service;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.akdb.BayernIdRemoteService;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.message.BayernIdMessage;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.message.BayernIdResponse;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class BayernIdProxyService {
private final BayernIdRemoteService bayernIdRemoteService;
public BayernIdResponse sendPostfachNachricht(BayernIdMessage message) {
return bayernIdRemoteService.sendPostfachNachricht(message);
}
}
/*
* Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Files;
public class DeleteOnCloseInputStream extends FileInputStream {
private final File file;
public DeleteOnCloseInputStream(File file) throws FileNotFoundException {
super(file);
this.file = file;
}
@Override
public void close() throws IOException {
super.close();
Files.deleteIfExists(file.toPath());
}
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy;
import static java.util.Objects.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.concurrent.atomic.AtomicReference;
import com.google.protobuf.ByteString;
import de.ozgcloud.common.errorhandling.TechnicalException;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.message.Attachment;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.message.BayernIdMessage.BayernIdMessageBuilder;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.message.BayernIdMessageMapper;
import io.grpc.stub.StreamObserver;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RequiredArgsConstructor
public class UploadStreamObserver implements StreamObserver<GrpcSendBayernIdMessageRequest> {
static final String ATTACHMENT_FILE_SUFFIX = ".ozg-cloud.tmp";
private final StreamObserver<GrpcSendBayernIdMessageResponse> responseObserver;
private final BayernIdProxyService proxyService;
private final BayernIdMessageMapper messageMapper;
private final AtomicReference<BayernIdMessageBuilder> messageBuilder = new AtomicReference<>();
private OutputStream attachmentWriter;
@Override
public synchronized void onNext(GrpcSendBayernIdMessageRequest sendRequest) {
if (sendRequest.hasMessageMetadata()) {
readMessageMetadata(sendRequest.getMessageMetadata());
return;
}
readAttachments(sendRequest.getAttachments());
}
void readMessageMetadata(GrpcBayernIdMessageMetadata sendRequest) {
messageBuilder.set(messageMapper.toBayernIdMessage(sendRequest));
}
void readAttachments(GrpcAttachments attachments) {
if (attachments.hasAttachmentMetadata()) {
addDataContainer(attachments.getAttachmentMetadata());
return;
}
writeAttachment(attachments.getContent());
}
void addDataContainer(GrpcAttachmentMetadata attachmentMetadata) {
messageBuilder.get().attachment(buildAttachment(attachmentMetadata));
}
Attachment buildAttachment(GrpcAttachmentMetadata attachmentMetadata) {
var attachmentFile = createTemporallyFile(attachmentMetadata.getFileName());
return Attachment.builder()
.name(attachmentMetadata.getFileName())
.type(attachmentMetadata.getFileType())
.content(attachmentFile)
.build();
}
InputStream createTemporallyFile(String fileName) {
try {
closeTemporallyWriter();
var tempFilePath = createFile(fileName);
attachmentWriter = newOutputStream(tempFilePath);
return newInputStream(tempFilePath);
} catch (IOException e) {
throw new TechnicalException("Can not create temporary file for attachment " + fileName, e);
}
}
Path createFile(String fileName) throws IOException {
var tmpFile = Files.createTempFile(fileName, ATTACHMENT_FILE_SUFFIX);
tmpFile.toFile().deleteOnExit();
return tmpFile;
}
OutputStream newOutputStream(Path filePath) throws IOException {
return Files.newOutputStream(filePath);
}
InputStream newInputStream(Path filePath) throws IOException {
return new DeleteOnCloseInputStream(filePath.toFile());
}
void closeTemporallyWriter() {
try {
if (nonNull(attachmentWriter)) {
attachmentWriter.close();
}
} catch (IOException e) {
throw new TechnicalException("Can not close attachment file", e);
}
}
void writeAttachment(ByteString content) {
try {
attachmentWriter.write(content.toByteArray());
attachmentWriter.flush();
} catch (IOException e) {
throw new TechnicalException("Can not save attachment content", e);
}
}
@Override
public void onError(Throwable t) {
closeTemporallyWriter();
throw new TechnicalException("Error while sending postfach message", t);
}
@Override
public void onCompleted() {
closeTemporallyWriter();
try {
var bayernIdResponse = proxyService.sendPostfachNachricht(messageBuilder.get().build());
responseObserver.onNext(messageMapper.fromBayernIdResponse(bayernIdResponse));
responseObserver.onCompleted();
} catch (Exception e) {
throw new TechnicalException("Error while sending postfach message", e);
}
}
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy.akdb;
import java.io.IOException;
import jakarta.xml.bind.JAXBElement;
import org.springframework.ws.client.core.support.WebServiceGatewaySupport;
import org.springframework.xml.transform.StringResult;
import org.springframework.xml.transform.StringSource;
import akdb.bsp.postkorb.komm.webservice.ObjectFactory;
import akdb.bsp.postkorb.komm.webservice.SendBspNachrichtNative;
import akdb.bsp.postkorb.komm.webservice.SendBspNachrichtNativeOutput;
import de.akdb.egov.bsp.nachrichten.BspNachricht;
import de.akdb.egov.bsp.nachrichten.BspQuittung;
import de.ozgcloud.common.errorhandling.TechnicalException;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.message.BayernIdMessage;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.message.BayernIdMessageMapper;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.message.BayernIdResponse;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class BayernIdRemoteService extends WebServiceGatewaySupport {
private final BayernIdMessageMapper messageMapper;
private final ObjectFactory objectFactory;
public BayernIdResponse sendPostfachNachricht(BayernIdMessage message) {
var sendNachricht = createSendNachricht(message);
var sendBspNachrichtResponse = sendBspNachricht(sendNachricht);
var bspQuittung = createBspQuitung(sendBspNachrichtResponse);
return messageMapper.toBayernIdResponse(bspQuittung);
}
SendBspNachrichtNative createSendNachricht(BayernIdMessage message) {
var bspNachricht = messageMapper.toBspNachricht(message);
var sendBspNachricht = new SendBspNachrichtNative();
sendBspNachricht.setBspNachricht(buildBspNachrichtXml(bspNachricht));
return sendBspNachricht;
}
String buildBspNachrichtXml(BspNachricht message) {
try {
var result = new StringResult();
getMarshaller().marshal(message, result);
return result.toString();
} catch (IOException e) {
throw new TechnicalException("Error while marshalling BspNachricht", e);
}
}
SendBspNachrichtNativeOutput sendBspNachricht(SendBspNachrichtNative request) {
return send(objectFactory.createSendBspNachrichtNative(request)).getValue();
}
@SuppressWarnings("unchecked")
JAXBElement<SendBspNachrichtNativeOutput> send(JAXBElement<SendBspNachrichtNative> jaxbSendBspNachrichtNative) {
return (JAXBElement<SendBspNachrichtNativeOutput>) getWebServiceTemplate().marshalSendAndReceive(jaxbSendBspNachrichtNative);
}
BspQuittung createBspQuitung(SendBspNachrichtNativeOutput bspNachrichtResponse) {
try {
return (BspQuittung) getUnmarshaller().unmarshal(new StringSource(bspNachrichtResponse.getBspQuittung()));
} catch (IOException e) {
throw new TechnicalException("Error while unmarshalling BspQuittung", e);
}
}
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy.errorhandling;
import java.util.UUID;
import de.ozgcloud.common.errorhandling.ExceptionUtil;
import de.ozgcloud.common.errorhandling.TechnicalException;
import de.ozgcloud.common.grpc.GrpcUtil;
import io.grpc.Metadata;
import io.grpc.Status;
import io.grpc.StatusException;
import lombok.extern.log4j.Log4j2;
import net.devh.boot.grpc.server.advice.GrpcAdvice;
import net.devh.boot.grpc.server.advice.GrpcExceptionHandler;
@GrpcAdvice
@Log4j2
public class ExceptionHandler {
static final String KEY_EXCEPTION_ID = "EXCEPTION_ID";
@GrpcExceptionHandler
public StatusException handleTechnicalException(TechnicalException e) {
LOG.error("Technical exception occurred", e);
return createStatusException(buildInternalStatus(e), buildMetadata(e.getExceptionId()));
}
@GrpcExceptionHandler
public StatusException handleRuntimeException(RuntimeException e) {
var exceptionId = createExceptionId();
LOG.error(ExceptionUtil.formatMessageWithExceptionId("gRPC internal exception.",exceptionId), e);
return createStatusException(buildInternalStatus(e), buildMetadata(exceptionId));
}
Status buildInternalStatus(RuntimeException e) {
return Status.INTERNAL.withDescription(e.getMessage()).withCause(e.getCause());
}
String createExceptionId() {
return UUID.randomUUID().toString();
}
Metadata buildMetadata(String exceptionId) {
var metadata = new Metadata();
metadata.put(GrpcUtil.keyOfString(KEY_EXCEPTION_ID), exceptionId);
return metadata;
}
StatusException createStatusException(Status status, Metadata metadata) {
return new StatusException(status, metadata);
}
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy.message;
import lombok.Builder;
import lombok.Getter;
@Builder
@Getter
public class Absender {
private String postkorbId;
private String name;
private String anschrift;
private String email;
private String telefon;
private String hyperlink;
private String dienst;
private String mandant;
private String gemeindeschluessel;
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy.message;
import java.io.InputStream;
import lombok.Builder;
import lombok.Getter;
@Builder
@Getter
public class Attachment {
private String name;
private String type;
private InputStream content;
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy.message;
import java.util.List;
import lombok.Builder;
import lombok.Getter;
import lombok.Singular;
@Builder
@Getter
public class BayernIdMessage {
private String messageId;
private String createdAt;
private String vorgangId;
private Absender absender;
private Empfaenger empfaenger;
private String subject;
private String storkQaaLevel;
private String text;
@Singular
private List<Attachment> attachments;
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy.message;
import java.io.IOException;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.NullValueCheckStrategy;
import org.mapstruct.NullValuePropertyMappingStrategy;
import de.akdb.egov.bsp.nachrichten.AbsenderType;
import de.akdb.egov.bsp.nachrichten.BspNachricht;
import de.akdb.egov.bsp.nachrichten.BspQuittung;
import de.akdb.egov.bsp.nachrichten.DataContainerType;
import de.akdb.egov.bsp.nachrichten.SchluesseltabelleType;
import de.ozgcloud.common.errorhandling.TechnicalException;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.GrpcAbsender;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.GrpcBayernIdMessageMetadata;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.GrpcSendBayernIdMessageResponse;
import de.ozgcloud.nachrichten.postfach.bayernid.proxy.message.BayernIdMessage.BayernIdMessageBuilder;
@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface BayernIdMessageMapper {
String TABELLE_NUMMER_TEXT_ENCODING = "9004";
String TABELLE_NUMMER_MIME_TYPE = "9005";
String TABELLE_NUMMER_GEMEINDE_SCHLUESSEL = "36";
String TEXT_ENCODING_PLAIN_TEXT = "text/plain";
@Mapping(target = "attachments", ignore = true)
BayernIdMessageBuilder toBayernIdMessage(GrpcBayernIdMessageMetadata grpcMessage);
@Mapping(target = "gemeindeschluessel.tabelle", constant = TABELLE_NUMMER_GEMEINDE_SCHLUESSEL)
@Mapping(target = "gemeindeschluessel.schluessel", source = "gemeindeschluessel")
AbsenderType toAbsenderType(GrpcAbsender absender);
@Mapping(target = "unknownFields", ignore = true)
@Mapping(target = "statusBytes", ignore = true)
@Mapping(target = "messageBytes", ignore = true)
@Mapping(target = "mergeUnknownFields", ignore = true)
@Mapping(target = "mergeFrom", ignore = true)
@Mapping(target = "clearOneof", ignore = true)
@Mapping(target = "clearField", ignore = true)
GrpcSendBayernIdMessageResponse fromBayernIdResponse(BayernIdResponse message);
@Mapping(target = "nachrichtenKopf.identifikationNachricht.nachrichtenId", source = "messageId")
@Mapping(target = "nachrichtenKopf.identifikationNachricht.erstellungszeitpunkt", source = "createdAt")
@Mapping(target = "nachrichtenKopf.empfaenger.postkorbId", source = "empfaenger.postkorbId")
@Mapping(target = "nachrichtenKopf.empfaenger.name", source = "empfaenger.name")
@Mapping(target = "nachrichtenKopf.empfaenger.anschrift", source = "empfaenger.anschrift")
@Mapping(target = "nachrichtenKopf.absender", source = "absender")
@Mapping(target = "nachrichtenInhalt.betreff", source = "subject")
@Mapping(target = "nachrichtenInhalt.storkQaaLevel", source = "storkQaaLevel")
@Mapping(target = "nachrichtenInhalt.zuVorgang.vorgangsId", source = "vorgangId")
@Mapping(target = "nachrichtenInhalt.freiText.encoding.schluessel", constant = TEXT_ENCODING_PLAIN_TEXT)
@Mapping(target = "nachrichtenInhalt.freiText.encoding.tabelle", constant = TABELLE_NUMMER_TEXT_ENCODING)
@Mapping(target = "nachrichtenInhalt.freiText.text", source = "text")
@Mapping(target = "nachrichtenInhalt.dataContainer", source = "attachments")
BspNachricht toBspNachricht(BayernIdMessage message);
@Mapping(target = "gemeindeschluessel.tabelle", constant = TABELLE_NUMMER_GEMEINDE_SCHLUESSEL)
@Mapping(target = "gemeindeschluessel.schluessel", source = "gemeindeschluessel")
AbsenderType toAbsenderType(Absender absender);
default DataContainerType toDataContainerType(Attachment attachment) {
var dataContainer = new DataContainerType();
dataContainer.setFileType(toSchluesseltabelleType(attachment));
dataContainer.setFileName(attachment.getName());
try {
var content = attachment.getContent();
try {
dataContainer.setInhalt(content.readAllBytes());
} finally {
content.close();
}
} catch (IOException e) {
throw new TechnicalException("Error reading attachment content", e);
}
return dataContainer;
}
default SchluesseltabelleType toSchluesseltabelleType(Attachment attachment) {
var schluesseltabelle = new SchluesseltabelleType();
schluesseltabelle.setSchluessel(attachment.getType());
schluesseltabelle.setTabelle(TABELLE_NUMMER_MIME_TYPE);
return schluesseltabelle;
}
@Mapping(target = "status", source = "ergebnisStatus.schluessel")
@Mapping(target = "message", source = "ergaenzendeHinweise")
@Mapping(target = "success", source = "annahmeErfolgreich")
BayernIdResponse toBayernIdResponse(BspQuittung quittung);
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy.message;
import lombok.Builder;
import lombok.Getter;
@Builder
@Getter
public class BayernIdResponse {
private boolean success;
private String status;
private String message;
}
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.nachrichten.postfach.bayernid.proxy.message;
import lombok.Builder;
import lombok.Getter;
@Builder
@Getter
public class Empfaenger {
private String postkorbId;
private String name;
private String anschrift;
}
net.devh.boot.grpc.common.autoconfigure.GrpcCommonCodecAutoConfiguration
net.devh.boot.grpc.common.autoconfigure.GrpcCommonTraceAutoConfiguration
net.devh.boot.grpc.server.autoconfigure.GrpcAdviceAutoConfiguration
net.devh.boot.grpc.server.autoconfigure.GrpcHealthServiceAutoConfiguration
net.devh.boot.grpc.server.autoconfigure.GrpcMetadataConsulConfiguration
net.devh.boot.grpc.server.autoconfigure.GrpcMetadataEurekaConfiguration
net.devh.boot.grpc.server.autoconfigure.GrpcMetadataNacosConfiguration
net.devh.boot.grpc.server.autoconfigure.GrpcMetadataZookeeperConfiguration
net.devh.boot.grpc.server.autoconfigure.GrpcReflectionServiceAutoConfiguration
net.devh.boot.grpc.server.autoconfigure.GrpcServerAutoConfiguration
net.devh.boot.grpc.server.autoconfigure.GrpcServerFactoryAutoConfiguration
net.devh.boot.grpc.server.autoconfigure.GrpcServerMetricAutoConfiguration
net.devh.boot.grpc.server.autoconfigure.GrpcServerSecurityAutoConfiguration
net.devh.boot.grpc.server.autoconfigure.GrpcServerTraceAutoConfiguration
ozgcloud:
bayernid:
proxy:
server: "https://infra-pre-id.bayernportal.de/bspx-postkorb-okkomm-ws/bspservices/postkorbkomm"
postkorbId: "28721c6f-b78f-4d5c-a048-19fd2fc429d2"
logging:
config: classpath:log4j2-local.xml
server:
port: 9097
management:
server.port: 9098
grpc:
server:
port: 9099
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment