diff options
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java | 46 | ||||
| -rw-r--r-- | src/main/java/at/gv/egiz/moazs/MsgClient.java | 26 | ||||
| -rw-r--r-- | src/main/java/at/gv/egiz/moazs/config/DeliveryRequestAugmenterConfig.java | 31 | ||||
| -rw-r--r-- | src/main/java/at/gv/egiz/moazs/msg/MsgClient.java | 28 | ||||
| -rw-r--r-- | src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java | 4 | ||||
| -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 | ||||
| -rw-r--r-- | src/main/resources/mzs/app2mzs.xsd | 19 | 
7 files changed, 112 insertions, 42 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 diff --git a/src/main/resources/mzs/app2mzs.xsd b/src/main/resources/mzs/app2mzs.xsd index 9818d5a..e97e9b6 100644 --- a/src/main/resources/mzs/app2mzs.xsd +++ b/src/main/resources/mzs/app2mzs.xsd @@ -5,14 +5,6 @@  	<xs:element name="DeliveryRequest" type="DeliveryRequestType"/>  	<xs:complexType name="DeliveryRequestType">  		<xs:sequence> -			<xs:element name="Server" minOccurs="0"> -				<xs:complexType> -					<xs:sequence> -						<xs:element name="ZUSEUrlID" type="xs:anyURI"/> -						<xs:element name="X509" type="xs:base64Binary" minOccurs="0"/> -					</xs:sequence> -				</xs:complexType> -			</xs:element>  			<xs:element name="Sender">  				<xs:complexType>  					<xs:sequence> @@ -88,7 +80,15 @@  	<xs:element name="Config" type="ConfigType"/>  	<xs:complexType name="ConfigType">  		<xs:sequence> -			<xs:element name="PerformQueryPersonRequest" type="xs:boolean"></xs:element> +			<xs:element ref="Server" minOccurs="0"></xs:element> +			<xs:element name="PerformQueryPersonRequest" type="xs:boolean" minOccurs="0" /> +		</xs:sequence> +	</xs:complexType> +	<xs:element name="Server" type="ServerType" /> +	<xs:complexType name="ServerType"> +		<xs:sequence> +			<xs:element name="ZUSEUrlID" type="xs:anyURI" minOccurs="0"/> +			<xs:element name="X509" type="xs:base64Binary" minOccurs="0"/>  		</xs:sequence>  	</xs:complexType>  	<xs:element name="DeliveryResponse" type="msg:DeliveryRequestStatusType"/> @@ -190,4 +190,5 @@  			<xs:element ref="MZSDeliveryID"/>  		</xs:sequence>  	</xs:complexType> +  </xs:schema> | 
