aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-05-14 13:18:55 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-05-14 13:18:55 +0200
commit870439300e7596d6833644ec9e6d1f38a1e0b6b5 (patch)
tree86ee96f87f3b691f1cbbbfba02b29d329c50b843 /src/main/java/at/gv
parentf4af4f437ff79cb6e2a35fdfe87e8d952a70b685 (diff)
downloadmoa-zs-870439300e7596d6833644ec9e6d1f38a1e0b6b5.tar.gz
moa-zs-870439300e7596d6833644ec9e6d1f38a1e0b6b5.tar.bz2
moa-zs-870439300e7596d6833644ec9e6d1f38a1e0b6b5.zip
Implement Per-Field-Overriding of Configuration in Augmenter
- Rewrite DeliveryRequestAugmenter to allow per-field-overriding of configuration parameters and add test suite. - Mzs schema change: Move DeliveryRequest/Server into DeliveryRequest/Config; Reason: DeliveryRequest/Config contains all parameters exclusively needed by moazs to execute the delivery request. The msg's server url belongs to this set of parameters. - WIP: Add prototype implementation of MsgClient and move MsgClient to dedicated package. - Refactor: move TnvzClient to dedicated package.
Diffstat (limited to 'src/main/java/at/gv')
-rw-r--r--src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java46
-rw-r--r--src/main/java/at/gv/egiz/moazs/MsgClient.java26
-rw-r--r--src/main/java/at/gv/egiz/moazs/config/DeliveryRequestAugmenterConfig.java31
-rw-r--r--src/main/java/at/gv/egiz/moazs/msg/MsgClient.java28
-rw-r--r--src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java4
-rw-r--r--src/main/java/at/gv/egiz/moazs/tnvz/TnvzClient.java (renamed from src/main/java/at/gv/egiz/moazs/TnvzClient.java)0
6 files changed, 102 insertions, 33 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java b/src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java
index 35c1e77..96197d0 100644
--- a/src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java
+++ b/src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java
@@ -3,14 +3,24 @@ package at.gv.egiz.moazs;
import at.gv.zustellung.app2mzs.xsd.ConfigType;
import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType;
import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.DeliveryRequestTypeBuilder;
+import at.gv.zustellung.app2mzs.xsd.ServerType;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import static at.gv.egiz.moazs.util.NullCoalesce.coalesce;
import static at.gv.zustellung.app2mzs.xsd.ConfigType.configTypeBuilder;
+import static at.gv.zustellung.app2mzs.xsd.ServerType.*;
@Component
public class DeliveryRequestAugmenter {
+ private final ConfigType defaultMzsConfig;
+
+ @Autowired
+ public DeliveryRequestAugmenter(ConfigType defaultMzsConfig) {
+ this.defaultMzsConfig = defaultMzsConfig;
+ }
+
/**
* Augments an incoming {@code request} by filling gaps with config- or default parameters.
*
@@ -18,15 +28,41 @@ public class DeliveryRequestAugmenter {
* @return augmented request
*/
public DeliveryRequestType augment(DeliveryRequestType request) {
+
+ var config = merge(request.getConfig(), defaultMzsConfig);
+
return new DeliveryRequestTypeBuilder(request)
- .withConfig(coalesce(request.getConfig(), initDefaultConfig()).get())
+ .withConfig(config)
.build();
}
- private ConfigType initDefaultConfig() {
- return configTypeBuilder()
- .withPerformQueryPersonRequest(false)
- .build();
+ private ConfigType merge(ConfigType primary, ConfigType fallback) {
+
+ var builder = configTypeBuilder(fallback);
+
+ if(primary != null) {
+
+ if(primary.getServer() != null) {
+ builder.withServer(merge(primary.getServer(), fallback.getServer()));
+ }
+
+ if(primary.isPerformQueryPersonRequest() != null) {
+ builder.withPerformQueryPersonRequest(primary.isPerformQueryPersonRequest());
+ }
+
+ }
+
+ return builder.build();
+
}
+ private ServerType merge(ServerType primary, ServerType fallback) {
+
+ var builder = serverTypeBuilder(fallback);
+
+ if (primary.getX509() != null) builder.withX509 (primary.getX509() );
+ if (primary.getZUSEUrlID() != null) builder.withZUSEUrlID(primary.getZUSEUrlID());
+
+ return builder.build();
+ }
}
diff --git a/src/main/java/at/gv/egiz/moazs/MsgClient.java b/src/main/java/at/gv/egiz/moazs/MsgClient.java
deleted file mode 100644
index 3a6b5ce..0000000
--- a/src/main/java/at/gv/egiz/moazs/MsgClient.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package at.gv.egiz.moazs;
-
-import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType;
-import at.gv.zustellung.msg.xsd.DeliveryRequestType;
-import org.springframework.stereotype.Component;
-
-import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.Success.successBuilder;
-import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.deliveryRequestStatusTypeBuilder;
-
-@Component
-public class MsgClient {
-
- public DeliveryRequestStatusType send(DeliveryRequestType msgRequest) {
-
- //stub implementation
- var success = successBuilder()
- .withAppDeliveryID(msgRequest.getMetaData().getAppDeliveryID())
- .build();
-
- return deliveryRequestStatusTypeBuilder()
- .withSuccess(success)
- .build();
-
- }
-
-}
diff --git a/src/main/java/at/gv/egiz/moazs/config/DeliveryRequestAugmenterConfig.java b/src/main/java/at/gv/egiz/moazs/config/DeliveryRequestAugmenterConfig.java
new file mode 100644
index 0000000..93615c4
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/config/DeliveryRequestAugmenterConfig.java
@@ -0,0 +1,31 @@
+package at.gv.egiz.moazs.config;
+
+import at.gv.zustellung.app2mzs.xsd.ConfigType;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import static at.gv.zustellung.app2mzs.xsd.ConfigType.configTypeBuilder;
+import static at.gv.zustellung.app2mzs.xsd.ServerType.serverTypeBuilder;
+
+@Configuration
+public class DeliveryRequestAugmenterConfig {
+
+
+ @Value("${msg.default.url}")
+ private String zuseUrlID;
+
+ @Bean
+ public ConfigType defaultMzsConfig() {
+
+ var server = serverTypeBuilder()
+ .withZUSEUrlID(zuseUrlID)
+ .withX509(null) //todo load cert!
+ .build();
+
+ return configTypeBuilder()
+ .withPerformQueryPersonRequest(false)
+ .withServer(server)
+ .build();
+ }
+}
diff --git a/src/main/java/at/gv/egiz/moazs/msg/MsgClient.java b/src/main/java/at/gv/egiz/moazs/msg/MsgClient.java
new file mode 100644
index 0000000..5742c83
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/msg/MsgClient.java
@@ -0,0 +1,28 @@
+package at.gv.egiz.moazs.msg;
+
+import at.gv.zustellung.app2mzs.xsd.ConfigType;
+import at.gv.zustellung.msg.xsd.App2ZusePort;
+import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType;
+import at.gv.zustellung.msg.xsd.DeliveryRequestType;
+import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
+import org.springframework.stereotype.Component;
+
+@Component
+public class MsgClient {
+
+ public DeliveryRequestStatusType send(DeliveryRequestType msgRequest, ConfigType config) {
+
+ var address = config.getServer().getZUSEUrlID();
+ var proxy = connect(address);
+ return proxy.delivery(msgRequest);
+
+ }
+
+ private App2ZusePort connect(String address) {
+ var factory = new JaxWsProxyFactoryBean();
+ factory.setServiceClass(App2ZusePort.class);
+ factory.setAddress(address);
+ return (App2ZusePort) factory.create();
+ }
+
+}
diff --git a/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java b/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java
index bc80188..3d7f8e9 100644
--- a/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java
+++ b/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java
@@ -1,7 +1,7 @@
package at.gv.egiz.moazs.pipeline;
-import at.gv.egiz.moazs.MsgClient;
+import at.gv.egiz.moazs.msg.MsgClient;
import at.gv.egiz.moazs.tnvz.TnvzClient;
import at.gv.egiz.moazs.repository.DeliveryRepository;
import at.gv.egiz.moazs.scheme.Mzs2MsgConverter;
@@ -48,7 +48,7 @@ public class SameThreadDeliveryPipeline implements DeliveryPipeline {
? converter.convert(mzsRequest, queryPerson(mzsRequest))
: converter.convert(mzsRequest);
- var status = msgClient.send(msgRequest);
+ var status = msgClient.send(msgRequest, mzsRequest.getConfig());
repository.add(status);
}
diff --git a/src/main/java/at/gv/egiz/moazs/TnvzClient.java b/src/main/java/at/gv/egiz/moazs/tnvz/TnvzClient.java
index 4a69aea..4a69aea 100644
--- a/src/main/java/at/gv/egiz/moazs/TnvzClient.java
+++ b/src/main/java/at/gv/egiz/moazs/tnvz/TnvzClient.java