From 58ed4cc7c66468227f0fbb428062955cc9f9fc16 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Mon, 3 Jul 2023 13:47:54 +0200 Subject: [PATCH] prj-42 add webclient / implement smartdocument sandbox --- bescheid-manager/pom.xml | 5 ++ .../dummy/DummyBescheidRemoteService.java | 2 + .../SmartDocumentsBescheidRemoteService.java | 47 ++++++++++++++++++ .../SmartDocumentsConfiguration.java | 21 ++++++++ .../smartdocuments/SmartDocumentsRequest.java | 49 +++++++++++++++++++ .../bescheid/BescheidRequestTestFactory.java | 4 +- ...tDocumentsBescheidRemoteServiceITCase.java | 21 ++++++++ 7 files changed, 147 insertions(+), 2 deletions(-) create mode 100644 bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java create mode 100644 bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsConfiguration.java create mode 100644 bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsRequest.java create mode 100644 bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceITCase.java diff --git a/bescheid-manager/pom.xml b/bescheid-manager/pom.xml index 7ec0199f4..59b471729 100644 --- a/bescheid-manager/pom.xml +++ b/bescheid-manager/pom.xml @@ -47,6 +47,11 @@ <groupId>net.devh</groupId> <artifactId>grpc-client-spring-boot-starter</artifactId> </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-webflux</artifactId> + </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/dummy/DummyBescheidRemoteService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/dummy/DummyBescheidRemoteService.java index 47eddc776..0a35a6217 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/dummy/DummyBescheidRemoteService.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/dummy/DummyBescheidRemoteService.java @@ -1,5 +1,6 @@ package de.ozgcloud.bescheid.dummy; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.stereotype.Service; import com.google.common.net.MediaType; @@ -11,6 +12,7 @@ import de.ozgcloud.bescheid.BescheidRequest; import de.ozgcloud.bescheid.vorgang.Vorgang; @Service +@ConditionalOnMissingBean(BescheidRemoteService.class) class DummyBescheidRemoteService implements BescheidRemoteService { private static final String DUMMY_BESCHEID_FILE_NAME = "dummy-bescheid.pdf"; diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java new file mode 100644 index 000000000..fc385ca62 --- /dev/null +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java @@ -0,0 +1,47 @@ +package de.ozgcloud.bescheid.smartdocuments; + +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.bescheid.Bescheid; +import de.ozgcloud.bescheid.BescheidRemoteService; +import de.ozgcloud.bescheid.BescheidRequest; +import de.ozgcloud.bescheid.vorgang.Vorgang; +import lombok.SneakyThrows; + +@Service +class SmartDocumentsBescheidRemoteService implements BescheidRemoteService { + + @Autowired + private WebClient webClient; + + @Autowired + private ObjectMapper objectMapper; + + @SneakyThrows + @Override + public Bescheid create(BescheidRequest request, Vorgang vorgang) { + System.out.println(objectMapper.writeValueAsString(createRequest())); + + var fluxy = webClient.post().accept(MediaType.APPLICATION_JSON) + .contentType(MediaType.APPLICATION_JSON) + .bodyValue(createRequest()) + .retrieve() + .bodyToFlux(Map.class); + + System.out.println("received: " + fluxy.blockFirst()); + + // TODO Auto-generated method stub + return null; + } + + private SmartDocumentsRequest createRequest() { + return SmartDocumentsRequest.builder().build(); + } +} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsConfiguration.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsConfiguration.java new file mode 100644 index 000000000..627f2c741 --- /dev/null +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsConfiguration.java @@ -0,0 +1,21 @@ +package de.ozgcloud.bescheid.smartdocuments; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.reactive.function.client.WebClient; + +@Configuration +class SmartDocumentsConfiguration { + + private static final String ADDR = "https://sandbox.smartdocuments.com/wsxmldeposit/deposit/unattended"; + + @Bean + WebClient smartDocumentsWebClient() { + return WebClient.builder() + .baseUrl(ADDR) + .defaultHeader("Authorization", "Basic aW50ZWdyYXRpb24tdXNlcjpXSEVtTkpUeTdHNVJ6R3M=") +// .filters(ExcahngeFunctions) + .build(); + } + +} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsRequest.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsRequest.java new file mode 100644 index 000000000..3b839c3fe --- /dev/null +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsRequest.java @@ -0,0 +1,49 @@ +package de.ozgcloud.bescheid.smartdocuments; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +@JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class) +class SmartDocumentsRequest { + + @Builder.Default + private CustomerData customerData = CustomerData.builder().build(); + @Builder.Default + private SmartDocument smartDocument = SmartDocument.builder().build(); + + @Builder + @Getter + static class CustomerData { + @Builder.Default + private String gender = "Male"; + @Builder.Default + private String lastname = "Smith"; + } + + @Builder + @Getter + @JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class) + static class SmartDocument { + + @Builder.Default + @JsonProperty("Selection") + private Selection selection = Selection.builder().build(); + + @Builder + @Getter + @JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class) + static class Selection { + @Builder.Default + private String templateGroup = "Development"; + @Builder.Default + private String template = "integration-test"; + } + } + +} diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidRequestTestFactory.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidRequestTestFactory.java index 3f5907b1c..ac54a3dbb 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidRequestTestFactory.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidRequestTestFactory.java @@ -13,11 +13,11 @@ public class BescheidRequestTestFactory { static final LocalDate BESCHEID_VOM = LocalDate.parse(BESCHEID_VOM_STRING); static final boolean GENEHMIGT = true; - static BescheidRequest create() { + public static BescheidRequest create() { return createBuilder().build(); } - static BescheidRequest.BescheidRequestBuilder createBuilder() { + public static BescheidRequest.BescheidRequestBuilder createBuilder() { return BescheidRequest.builder() .vorgangId(VORGANG_ID) .bescheidVom(BESCHEID_VOM) diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceITCase.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceITCase.java new file mode 100644 index 000000000..d7fdea2c6 --- /dev/null +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceITCase.java @@ -0,0 +1,21 @@ +package de.ozgcloud.bescheid.smartdocuments; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import de.itvsh.kop.common.test.ITCase; +import de.ozgcloud.bescheid.BescheidRequestTestFactory; +import de.ozgcloud.bescheid.vorgang.VorgangTestFactory; + +@ITCase +class SmartDocumentsBescheidRemoteServiceITCase { + + @Autowired + private SmartDocumentsBescheidRemoteService remoteService; + + @Test + void test() { + remoteService.create(BescheidRequestTestFactory.create(), VorgangTestFactory.create()); + } + +} -- GitLab