aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/App2MzsService.java
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-05-09 15:41:19 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-05-09 16:13:54 +0200
commitf27ff5780d98e747742140c526fb1e3469bb5748 (patch)
tree3787b02d2f4a4442d745632cc64259dd4954c47f /src/main/java/at/gv/egiz/moazs/App2MzsService.java
parent4aed369467b2c6486de69ac767475fd305e0e068 (diff)
downloadmoa-zs-f27ff5780d98e747742140c526fb1e3469bb5748.tar.gz
moa-zs-f27ff5780d98e747742140c526fb1e3469bb5748.tar.bz2
moa-zs-f27ff5780d98e747742140c526fb1e3469bb5748.zip
Fix: Enable ApacheCXF's Automated Schema Validation
Problem: Apache CXF does not validate incoming mzs:DeliveryRequests automatically. Per default, validation is off (performs better). However, (1) we need to validate incoming requests, and (2) automated CXF validation requires less maintenance and is expected to be more stable than manual validation. Solution: - Add @SchemaValidation annotation to @Service. - Endpoint Configuration: set WsdlLocation and ServiceName (needed to prevent parser errors; see [1]). Without those, CXF validates against generated classes and not against the WSDL spec, and generated classes do not contain format restrictions. Add a testcase with an invalid delivery request ("rejectBothProfile- AndCorporateBody") to ensure that the validator works. [1] https://stackoverflow.com/questions/2231779/cxf-and-validation-schema-restrictions-ignored
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/App2MzsService.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/App2MzsService.java10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/App2MzsService.java b/src/main/java/at/gv/egiz/moazs/App2MzsService.java
index d61bafd..090bad3 100644
--- a/src/main/java/at/gv/egiz/moazs/App2MzsService.java
+++ b/src/main/java/at/gv/egiz/moazs/App2MzsService.java
@@ -5,9 +5,8 @@ import at.gv.egiz.moazs.repository.DeliveryRepository;
import at.gv.zustellung.app2mzs.xsd.App2MzsPortType;
import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType;
import at.gv.zustellung.msg.xsd.DeliveryAnswerType;
-import at.gv.zustellung.msg.xsd.DeliveryAnswerType.DeliveryAnswerTypeBuilder;
import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType;
-import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.DeliveryRequestStatusTypeBuilder;
+import org.apache.cxf.annotations.SchemaValidation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -17,10 +16,13 @@ import javax.jws.WebParam;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
+import static at.gv.zustellung.msg.xsd.DeliveryAnswerType.deliveryAnswerTypeBuilder;
+import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.deliveryRequestStatusTypeBuilder;
import static java.text.MessageFormat.format;
import static java.util.concurrent.CompletableFuture.supplyAsync;
@Service
+@SchemaValidation
public class App2MzsService implements App2MzsPortType {
private static final Logger logger = LoggerFactory.getLogger(App2MzsService.class);
@@ -84,11 +86,11 @@ public class App2MzsService implements App2MzsPortType {
private DeliveryRequestStatusType generatePartialSuccessResponse(String appDeliveryId) {
- var answer = new DeliveryAnswerTypeBuilder()
+ var answer = deliveryAnswerTypeBuilder()
.withAppDeliveryID(appDeliveryId)
.build();
- return new DeliveryRequestStatusTypeBuilder()
+ return deliveryRequestStatusTypeBuilder()
.withPartialSuccess(answer)
.build();
}