From 3c7e6f6dae09e69df5fe14c1b8f9df91952a7981 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 18 Nov 2021 16:27:43 +0100
Subject: [PATCH] OZG-1701 add wsdl

---
 formsolutions-adapter/pom.xml                 | 30 ++++++++++++---
 .../formsolutions/FormSolutionsMapper.java    | 36 ------------------
 .../formsolutions/SendFormEndpoint.java       | 33 ++++-------------
 .../WebServiceConfiguration.java              | 37 +++++++++++--------
 .../src/main/resources/application-local.yml  | 20 ++++++++++
 .../src/main/resources/wsdl/jsonWrap.wsdl     | 37 +++++++++++++++++++
 .../src/main/resources/wsdl/jsonWrap.xsd      | 17 +++++++++
 .../src/main/resources/application-local.yml  |  3 ++
 8 files changed, 129 insertions(+), 84 deletions(-)
 delete mode 100644 formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsMapper.java
 create mode 100644 formsolutions-adapter/src/main/resources/application-local.yml
 create mode 100644 formsolutions-adapter/src/main/resources/wsdl/jsonWrap.wsdl
 create mode 100644 formsolutions-adapter/src/main/resources/wsdl/jsonWrap.xsd

diff --git a/formsolutions-adapter/pom.xml b/formsolutions-adapter/pom.xml
index 4b44e458b..05f81c4f5 100644
--- a/formsolutions-adapter/pom.xml
+++ b/formsolutions-adapter/pom.xml
@@ -55,6 +55,11 @@
 		<!-- end::springws[] -->
 
 		<!-- Dev -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-devtools</artifactId>
+			<scope>runtime</scope>
+		</dependency>
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-configuration-processor</artifactId>
@@ -88,16 +93,29 @@
 	<build>
 		<finalName>${project.artifactId}</finalName>
 		<plugins>
-			<!-- tag::xsd[] -->
+			<!-- tag::wsdl/xsd[] -->
 			<plugin>
-				<groupId>org.codehaus.mojo</groupId>
-				<artifactId>jaxb2-maven-plugin</artifactId>
+				<groupId>org.jvnet.jaxb2.maven2</groupId>
+				<artifactId>maven-jaxb2-plugin</artifactId>
 				<configuration>
-					<sources>
-						<source>${project.basedir}/src/main/resources/formsolutions/formdata.xsd</source>
-					</sources>
+					<schemaLanguage>WSDL</schemaLanguage>
+					<generatePackage>de.itvsh.kop.eingangsadapter.formsolutions</generatePackage>
+					<schemas>
+						<schema>
+							<fileset>
+								<directory>${basedir}/src/main/resources/wsdl</directory>
+								<includes>
+									<include>*.wsdl</include>
+								</includes>
+							</fileset>
+						</schema>
+					</schemas>
 				</configuration>
 			</plugin>
+
+			<!-- <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> 
+				<configuration> <sources> <source>${project.basedir}/src/main/resources/formsolutions/formdata.xsd</source> 
+				</sources> </configuration> </plugin> -->
 			<!-- end::xsd[] -->
 
 			<plugin>
diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsMapper.java b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsMapper.java
deleted file mode 100644
index ee1124ed7..000000000
--- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsMapper.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package de.itvsh.kop.eingangsadapter.formsolutions;
-
-import java.time.ZonedDateTime;
-import java.util.Map;
-import java.util.UUID;
-
-import org.springframework.stereotype.Component;
-
-import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller;
-import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
-import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader;
-import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigeStelle;
-import de.ozg_sh.forms.formsolutions.SendFormRequest;
-
-@Component
-public class FormSolutionsMapper {
-
-	FormData map(SendFormRequest wsRequest) {
-
-		return FormData.builder() //
-				.id(UUID.randomUUID()) //
-				.header(FormHeader.builder() //
-						.formName(wsRequest.getFormName())
-						.createdAt(ZonedDateTime.now()) //
-						.build()) //
-				.antragsteller(Antragsteller.builder() //
-						.vorname(wsRequest.getVorname()) //
-						.nachname(wsRequest.getNachname()) //
-						.build()) //
-				.zustaendigeStelle(ZustaendigeStelle.builder() //
-						.organisationseinheitenId(wsRequest.getOrganisationseinheitenId()) //
-						.build()) //
-				.formData(Map.of("Hamstername", wsRequest.getNamedeshamsters())) //
-				.build();
-	}
-}
diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java
index 3666fbe00..23313e2c5 100644
--- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java
+++ b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java
@@ -1,42 +1,23 @@
 package de.itvsh.kop.eingangsadapter.formsolutions;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ws.server.endpoint.annotation.Endpoint;
 import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
 import org.springframework.ws.server.endpoint.annotation.RequestPayload;
 import org.springframework.ws.server.endpoint.annotation.ResponsePayload;
 
-import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
-import de.itvsh.kop.eingangsadapter.router.VorgangService;
-import de.ozg_sh.forms.formsolutions.SendFormRequest;
-import de.ozg_sh.forms.formsolutions.SendFormResponse;
-import lombok.extern.log4j.Log4j2;
-
 @Endpoint
-@Log4j2
 public class SendFormEndpoint {
 
-	private static final String NAMESPACE_URI = "http://forms.ozg-sh.de/formsolutions";
-
-	@Autowired
-	private FormSolutionsMapper mapper;
-
-	@Autowired
-	private VorgangService vorgangService;
-
-	@PayloadRoot(namespace = NAMESPACE_URI, localPart = "sendFormRequest")
+	@PayloadRoot(namespace = WebServiceConfiguration.NAMESPACE_URI, localPart = "Request")
 	@ResponsePayload
-	public SendFormResponse getFormData(@RequestPayload SendFormRequest request) {
-
-		LOG.info("FormsolutionsRequest received: " + request.getFormName() + ";" + request.getVorname());
-
-		FormData formData = mapper.map(request);
-
-		vorgangService.createVorgang(formData);
+	public Response receiveForm(@RequestPayload Request request) {
+		return buildSuccessResponse();
+	}
 
-		SendFormResponse response = new SendFormResponse();
-		response.setStatus("OK, alles klar " + request.getVorname());
+	private Response buildSuccessResponse() {
+		var response = new Response();
 
+		response.setStatus("OK");
 		return response;
 	}
 }
diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/WebServiceConfiguration.java b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/WebServiceConfiguration.java
index 68373389d..241d92326 100644
--- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/WebServiceConfiguration.java
+++ b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/WebServiceConfiguration.java
@@ -1,39 +1,44 @@
 package de.itvsh.kop.eingangsadapter.formsolutions;
 
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.ws.config.annotation.EnableWs;
 import org.springframework.ws.config.annotation.WsConfigurerAdapter;
+import org.springframework.ws.transport.http.MessageDispatcherServlet;
 import org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition;
 import org.springframework.xml.xsd.SimpleXsdSchema;
 import org.springframework.xml.xsd.XsdSchema;
-import org.springframework.xml.xsd.XsdSchemaCollection;
-import org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection;
 
 @EnableWs
 @Configuration
 class WebServiceConfiguration extends WsConfigurerAdapter {
 
-	@Bean(name = "formsolutions_formDatas")
-	public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema formDataSchema) {
-		DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
-		wsdl11Definition.setPortTypeName("FormDatasPort");
-		wsdl11Definition.setLocationUri("/ws");
-		wsdl11Definition.setTargetNamespace("http://forms.ozg-sh.de/formsolutions");
-		wsdl11Definition.setSchema(formDataSchema);
-		return wsdl11Definition;
-	}
+	private static final String XSD_LOCATION = "wsdl/jsonWrap.xsd";
+	static final String NAMESPACE_URI = "urn:JSONWrap";
 
 	@Bean
-	public XsdSchemaCollection formDataSchemata() {
-		CommonsXsdSchemaCollection xsds = new CommonsXsdSchemaCollection(new ClassPathResource("formsolutions/formdata.xsd"));
-		xsds.setInline(false);
-		return xsds;
+	public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext applicationContext) {
+		MessageDispatcherServlet servlet = new MessageDispatcherServlet();
+		servlet.setApplicationContext(applicationContext);
+		servlet.setTransformWsdlLocations(true);
+		return new ServletRegistrationBean<>(servlet, "/ws/*");
 	}
 
 	@Bean
 	public XsdSchema formDataSchema() {
-		return new SimpleXsdSchema(new ClassPathResource("formsolutions/formdata.xsd"));
+		return new SimpleXsdSchema(new ClassPathResource(XSD_LOCATION));
+	}
+
+	@Bean(name = "formsolutions_formDatas")
+	public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema formDataSchema) {
+		DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
+		wsdl11Definition.setPortTypeName("JSONWrapWebService");
+		wsdl11Definition.setLocationUri("/ws");
+		wsdl11Definition.setTargetNamespace(NAMESPACE_URI);
+		wsdl11Definition.setSchema(formDataSchema);
+		return wsdl11Definition;
 	}
 }
diff --git a/formsolutions-adapter/src/main/resources/application-local.yml b/formsolutions-adapter/src/main/resources/application-local.yml
new file mode 100644
index 000000000..5ebda1217
--- /dev/null
+++ b/formsolutions-adapter/src/main/resources/application-local.yml
@@ -0,0 +1,20 @@
+grpc:
+  client:
+    pluto-local:
+      address: static://127.0.0.1:9090
+      negotiationType: PLAINTEXT
+    
+management:
+  server:
+    port: 8082
+      
+server:
+  port: 9292
+      
+kop:
+  adapter:
+    targetPlutoName: local
+    fallbackStrategy: DENY
+    routingStrategy: SINGLE
+
+
diff --git a/formsolutions-adapter/src/main/resources/wsdl/jsonWrap.wsdl b/formsolutions-adapter/src/main/resources/wsdl/jsonWrap.wsdl
new file mode 100644
index 000000000..28139265f
--- /dev/null
+++ b/formsolutions-adapter/src/main/resources/wsdl/jsonWrap.wsdl
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="IOnlineAnhoerungWebServiceservice" targetNamespace="https://form-solutions.de/jsonWrap" xmlns:tns="https://form-solutions.de/jsonWrap" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jw="urn:JSONWrap">
+  <types>
+    <xsd:schema>
+      <xsd:import namespace="urn:JSONWrap" schemaLocation="jsonWrap.xsd"/>
+    </xsd:schema>
+  </types>
+   <message name="Request">
+      <part element="jw:Request"/>
+   </message>
+   <message name="Response">
+      <part element="jw:Response"/>
+   </message>
+	<portType name="JSONWrapWebService">
+		<operation name="json">
+			<input message="tns:Request"/>
+			<output message="tns:Response"/>
+		</operation>
+	</portType>
+	<binding name="JSONWrapWebServicebinding" type="tns:JSONWrapWebService">
+		<binding transport="http://schemas.xmlsoap.org/soap/http" xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
+		<operation name="json">
+			<operation soapAction="urn:JSONWrapWebService#json" xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
+			<input>
+				<body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/soap/" namespace="urn:JSONWrap"/>
+			</input>
+			<output>
+				<body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/soap/" namespace="urn:JSONWrap"/>
+			</output>
+		</operation>
+	</binding>
+	<service name="JSONWrapWebServiceservice">
+		<port name="JSONWrapWebServicePort" binding="tns:JSONWrapWebServicebinding">
+			<address xmlns="http://schemas.xmlsoap.org/wsdl/soap/" location="https://partnertest.form-solutions.de/soap/JSONWrap"/>
+		</port>
+	</service>
+</definitions>
diff --git a/formsolutions-adapter/src/main/resources/wsdl/jsonWrap.xsd b/formsolutions-adapter/src/main/resources/wsdl/jsonWrap.xsd
new file mode 100644
index 000000000..fce587685
--- /dev/null
+++ b/formsolutions-adapter/src/main/resources/wsdl/jsonWrap.xsd
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:JSONWrap" xmlns:jw="urn:JSONWrap">
+	<xs:element name="Request">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="JSON" type="xsd:string" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Response">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="status" type="xsd:string" />
+      			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>
diff --git a/intelliform-adapter/src/main/resources/application-local.yml b/intelliform-adapter/src/main/resources/application-local.yml
index ca271bcfb..5ebda1217 100644
--- a/intelliform-adapter/src/main/resources/application-local.yml
+++ b/intelliform-adapter/src/main/resources/application-local.yml
@@ -8,6 +8,9 @@ management:
   server:
     port: 8082
       
+server:
+  port: 9292
+      
 kop:
   adapter:
     targetPlutoName: local
-- 
GitLab