aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/util
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-07-22 13:02:19 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-07-22 13:02:19 +0200
commitcb9a76eaafd37f921006822bcfe043655288bc63 (patch)
tree76c2463e181ac293134f4c5bfc7e342607f3f399 /src/main/java/at/gv/egiz/moazs/util
parentd873625c0ced62e712dc1b1a7570b63482fd0a0a (diff)
downloadmoa-zs-cb9a76eaafd37f921006822bcfe043655288bc63.tar.gz
moa-zs-cb9a76eaafd37f921006822bcfe043655288bc63.tar.bz2
moa-zs-cb9a76eaafd37f921006822bcfe043655288bc63.zip
Test Flow of DeliveryRequest from "End-To-End" & Fix Bugs
Schema Changes: - Remove mzs:DeliveryRequest/TnvzMetaData because all metadata fields can be collected from DeliveryRequest and redundancy is not needed. Fixes and Refactoring in preprocess: - MzsDeliveryRequestValidator: Instead of returning false, throw an exception when a condition is not met, and explain which condition is not met / why it is not met in the exception's message. - Integrate interface change in ConfigProfileGenerator and DeliveryRequestAugmenter. - Rewrite and simplify DeliveryRequestAugmenter's augmentation. - ConfigUtil Fixes: Ensure that we do not override the wrong parameters while merging. This error appeared in tnvz / msg client, connection / receive timeout, key / trust store, and lax hostname verification / trust all. Fix Bugs in Interceptor / SoapUtils: - Problem: DOM access and information extraction was implemented somewhat sloppy. - SolutioN: Change DOM access interface to access DOM more efficiently. Add boundary checks and handle edge cases while extracting information from SOAP Messages. - Test those changes properly. Testing: - Implement Delivery Request Flow in ITEndToEndTest. - Start application on random port instead of fixed port when running integration tests. - Add assertions to tests in ITMzsServiceTest suite. Others Bug Fixes: - ServicesConfig: Ensure that mzs service and msg service run on different endpoint addresses (/msg and /mzs). - DeliveryRequestBackend: Throw exception when binary message is missing. Don't wrap the exception. - SaveResponseToFileSink: Wrap Response in JAXB Element (otherwise, marshaller does not recognize it)
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/util')
-rw-r--r--src/main/java/at/gv/egiz/moazs/util/EndpointFactory.java8
-rw-r--r--src/main/java/at/gv/egiz/moazs/util/StoreSOAPBodyBinaryInRepositoryInterceptor.java20
2 files changed, 13 insertions, 15 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/util/EndpointFactory.java b/src/main/java/at/gv/egiz/moazs/util/EndpointFactory.java
index 24321e1..9d31596 100644
--- a/src/main/java/at/gv/egiz/moazs/util/EndpointFactory.java
+++ b/src/main/java/at/gv/egiz/moazs/util/EndpointFactory.java
@@ -20,13 +20,13 @@ public class EndpointFactory {
this.bus = bus;
}
- public Endpoint create(Object implementor, Service service) {
- return create(implementor, service, null);
+ public Endpoint create(Object implementor, Service service, String route) {
+ return create(implementor, service, route, null);
}
- public Endpoint create(Object implementor, Service service, Interceptor<Message> interceptor) {
+ public Endpoint create(Object implementor, Service service, String route, Interceptor<Message> interceptor) {
EndpointImpl endpoint = new EndpointImpl(bus, implementor);
- endpoint.setAddress("/");
+ endpoint.setAddress(route);
endpoint.setServiceName(service.getServiceName());
endpoint.setWsdlLocation(service.getWSDLDocumentLocation().toString());
endpoint.publish();
diff --git a/src/main/java/at/gv/egiz/moazs/util/StoreSOAPBodyBinaryInRepositoryInterceptor.java b/src/main/java/at/gv/egiz/moazs/util/StoreSOAPBodyBinaryInRepositoryInterceptor.java
index 88ab7e0..d4aa75a 100644
--- a/src/main/java/at/gv/egiz/moazs/util/StoreSOAPBodyBinaryInRepositoryInterceptor.java
+++ b/src/main/java/at/gv/egiz/moazs/util/StoreSOAPBodyBinaryInRepositoryInterceptor.java
@@ -13,6 +13,7 @@ import org.w3c.dom.Element;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Map;
@@ -46,25 +47,22 @@ public class StoreSOAPBodyBinaryInRepositoryInterceptor extends AbstractPhaseInt
try {
byte[] content = messageUtils.copyContent(message);
- if(log.isTraceEnabled()) {
- log.trace("Interceptor received this SOAP message: {}. ", new String(content, StandardCharsets.UTF_8));
- }
-
if (content.length <= 0) {
return;
}
Element document = soapUtils.toDOM(content);
- byte[] response = soapUtils.unwrapSoapEnvelope(document);
- String appDeliveryID = soapUtils.getAppDeliveryIDFrom(document);
- String rootTag = document.getTagName();
+ var rootTagNode = soapUtils.getChildElementOfSoapBody(document);
+ var rootTagLocalName = rootTagNode.getLocalName();
- if (!idGenerators.containsKey(rootTag)) {
- log.trace("Will not store message of type {}. ", rootTag);
+ if (!idGenerators.containsKey(rootTagLocalName)) {
+ log.trace("Child element {} of <soap:Body> is unknown. Will not store message.", rootTagLocalName);
return;
}
- var id = idGenerators.get(rootTag).apply(appDeliveryID);
+ String appDeliveryID = soapUtils.getAppDeliveryIDFrom(document);
+ var id = idGenerators.get(rootTagLocalName).apply(appDeliveryID);
+ byte[] response = soapUtils.toBytes(rootTagNode);
repository.store(id, response);
if(log.isTraceEnabled()) {
@@ -72,7 +70,7 @@ public class StoreSOAPBodyBinaryInRepositoryInterceptor extends AbstractPhaseInt
appDeliveryID, new String(response, StandardCharsets.UTF_8));
}
- } catch (ParserConfigurationException | SAXException | IOException | NullPointerException e) {
+ } catch (ParserConfigurationException | SAXException | IOException | NullPointerException | TransformerException e) {
throw moaZSException("Could not extract signed data from message.", e);
}
}