/** * Validates XML header fragment data. * * @param receivedHeaderData * @param controlHeaderData * @param validationContext * @param context */ private void validateXmlHeaderFragment( String receivedHeaderData, String controlHeaderData, XmlMessageValidationContext validationContext, TestContext context) { log.info("Start XML header data validation ..."); Document received = XMLUtils.parseMessagePayload(receivedHeaderData); Document source = XMLUtils.parseMessagePayload(controlHeaderData); XMLUtils.stripWhitespaceNodes(received); XMLUtils.stripWhitespaceNodes(source); if (log.isDebugEnabled()) { log.debug("Received header data:\n" + XMLUtils.serialize(received)); log.debug("Control header data:\n" + XMLUtils.serialize(source)); } validateXmlTree( received, source, validationContext, namespaceContextBuilder.buildContext( new DefaultMessage(receivedHeaderData), validationContext.getNamespaces()), context); }
/** * Validate message payloads by comparing to a control message. * * @param receivedMessage * @param validationContext * @param context */ protected void validateMessageContent( Message receivedMessage, Message controlMessage, XmlMessageValidationContext validationContext, TestContext context) { if (controlMessage == null || controlMessage.getPayload() == null) { log.info("Skip message payload validation as no control message was defined"); return; } if (!(controlMessage.getPayload() instanceof String)) { throw new IllegalArgumentException( "DomXmlMessageValidator does only support message payload of type String, " + "but was " + controlMessage.getPayload().getClass()); } String controlMessagePayload = controlMessage.getPayload(String.class); if (receivedMessage.getPayload() == null || !StringUtils.hasText(receivedMessage.getPayload(String.class))) { Assert.isTrue( !StringUtils.hasText(controlMessagePayload), "Unable to validate message payload - received message payload was empty, control message payload is not"); return; } else if (!StringUtils.hasText(controlMessagePayload)) { return; } log.info("Start XML tree validation ..."); Document received = XMLUtils.parseMessagePayload(receivedMessage.getPayload(String.class)); Document source = XMLUtils.parseMessagePayload(controlMessagePayload); XMLUtils.stripWhitespaceNodes(received); XMLUtils.stripWhitespaceNodes(source); if (log.isDebugEnabled()) { log.debug("Received message:\n" + XMLUtils.serialize(received)); log.debug("Control message:\n" + XMLUtils.serialize(source)); } validateXmlTree( received, source, validationContext, namespaceContextBuilder.buildContext(receivedMessage, validationContext.getNamespaces()), context); }