use of nl.nn.adapterframework.xml.RootElementToSessionKeyFilter in project iaf by ibissource.
the class XmlValidator method validate.
protected PipeForward validate(Message messageToValidate, PipeLineSession session, boolean responseMode, String messageRoot) throws XmlValidatorException, PipeRunException, ConfigurationException {
ValidationContext context = null;
if (StringUtils.isNotEmpty(messageRoot)) {
context = validator.createValidationContext(session, createRootValidation(messageRoot), getInvalidRootNamespaces());
} else {
context = validator.createValidationContext(session, getRootValidations(responseMode), getInvalidRootNamespaces());
}
ValidatorHandler validatorHandler = validator.getValidatorHandler(session, context);
XMLFilterImpl storeRootFilter = StringUtils.isNotEmpty(getRootElementSessionKey()) ? new RootElementToSessionKeyFilter(session, getRootElementSessionKey(), getRootNamespaceSessionKey(), null) : null;
if (storeRootFilter != null) {
validatorHandler.setContentHandler(storeRootFilter);
}
String resultEvent = validator.validate(messageToValidate, session, getLogPrefix(session), validatorHandler, storeRootFilter, context);
return determineForward(resultEvent, session, responseMode);
}
use of nl.nn.adapterframework.xml.RootElementToSessionKeyFilter in project iaf by ibissource.
the class Json2XmlValidator method alignJson.
protected PipeRunResult alignJson(String messageToValidate, PipeLineSession session, boolean responseMode) throws PipeRunException, XmlValidatorException {
ValidationContext context;
ValidatorHandler validatorHandler;
try {
context = validator.createValidationContext(session, getJsonRootValidations(responseMode), getInvalidRootNamespaces());
validatorHandler = validator.getValidatorHandler(session, context);
} catch (ConfigurationException e) {
throw new PipeRunException(this, "Cannot create ValidationContext", e);
}
String resultEvent;
String out = null;
try {
Json2Xml aligner = new Json2Xml(validatorHandler, context.getXsModels(), isCompactJsonArrays(), getMessageRoot(responseMode), isStrictJsonArraySyntax());
if (StringUtils.isNotEmpty(getTargetNamespace())) {
aligner.setTargetNamespace(getTargetNamespace());
}
aligner.setDeepSearch(isDeepSearch());
aligner.setErrorHandler(context.getErrorHandler());
aligner.setFailOnWildcards(isFailOnWildcards());
aligner.setIgnoreUndeclaredElements(isIgnoreUndeclaredElements());
ParameterList parameterList = getParameterList();
if (parameterList != null) {
Map<String, Object> parametervalues = null;
parametervalues = parameterList.getValues(new Message(messageToValidate), session).getValueMap();
// remove parameters with null values, to support optional request parameters
for (Iterator<String> it = parametervalues.keySet().iterator(); it.hasNext(); ) {
String key = it.next();
if (parametervalues.get(key) == null) {
it.remove();
}
}
aligner.setOverrideValues(parametervalues);
}
JsonStructure jsonStructure = Json.createReader(new StringReader(messageToValidate)).read();
// cannot build filter chain as usual backwardly, because it ends differently.
// This will be fixed once an OutputStream can be provided to Xml2Json
XMLFilterImpl sourceFilter = aligner;
if (StringUtils.isNotEmpty(getRootElementSessionKey())) {
XMLFilterImpl storeRootFilter = new RootElementToSessionKeyFilter(session, getRootElementSessionKey(), getRootNamespaceSessionKey(), null);
aligner.setContentHandler(storeRootFilter);
sourceFilter = storeRootFilter;
}
if (getOutputFormat(session, responseMode) == DocumentFormat.JSON) {
Xml2Json xml2json = new Xml2Json(aligner, isCompactJsonArrays(), !isJsonWithRootElements());
sourceFilter.setContentHandler(xml2json);
aligner.startParse(jsonStructure);
out = xml2json.toString();
} else {
XmlWriter xmlWriter = new XmlWriter();
xmlWriter.setIncludeXmlDeclaration(true);
ContentHandler handler = xmlWriter;
if (isProduceNamespaceLessXml()) {
handler = new NamespaceRemovingFilter(handler);
}
sourceFilter.setContentHandler(handler);
aligner.startParse(jsonStructure);
out = xmlWriter.toString();
}
} catch (Exception e) {
resultEvent = validator.finalizeValidation(context, session, e);
}
resultEvent = validator.finalizeValidation(context, session, null);
PipeForward forward = determineForward(resultEvent, session, responseMode);
PipeRunResult result = new PipeRunResult(forward, out);
return result;
}
use of nl.nn.adapterframework.xml.RootElementToSessionKeyFilter in project iaf by ibissource.
the class Json2XmlValidator method alignXml2Json.
protected PipeRunResult alignXml2Json(String messageToValidate, PipeLineSession session, boolean responseMode) throws XmlValidatorException, PipeRunException, ConfigurationException {
ValidationContext context = validator.createValidationContext(session, getJsonRootValidations(responseMode), getInvalidRootNamespaces());
ValidatorHandler validatorHandler = validator.getValidatorHandler(session, context);
// Make sure to use Xerces' ValidatorHandlerImpl, otherwise casting below will fail.
XmlAligner aligner = new XmlAligner(validatorHandler);
Xml2Json xml2json = new Xml2Json(aligner, isCompactJsonArrays(), !isJsonWithRootElements());
XMLFilterImpl handler = xml2json;
if (StringUtils.isNotEmpty(getRootElementSessionKey())) {
handler = new RootElementToSessionKeyFilter(session, getRootElementSessionKey(), getRootNamespaceSessionKey(), handler);
}
aligner.setContentHandler(handler);
aligner.setErrorHandler(context.getErrorHandler());
String resultEvent = validator.validate(messageToValidate, session, getLogPrefix(session), validatorHandler, xml2json, context);
String out = xml2json.toString();
PipeForward forward = determineForward(resultEvent, session, responseMode);
PipeRunResult result = new PipeRunResult(forward, out);
return result;
}
Aggregations