use of nl.nn.adapterframework.validation.XmlValidatorException in project iaf by ibissource.
the class Json2XmlValidator method alignJson.
protected PipeRunResult alignJson(String messageToValidate, IPipeLineSession session, boolean responseMode) throws PipeRunException, XmlValidatorException {
ValidationContext context;
ValidatorHandler validatorHandler;
try {
context = validator.createValidationContext(session, getRootValidations(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());
ParameterList parameterList = getParameterList();
if (parameterList != null) {
ParameterResolutionContext prc = new ParameterResolutionContext(messageToValidate, session, isNamespaceAware(), false);
Map<String, Object> parametervalues = null;
parametervalues = prc.getValueMap(parameterList);
aligner.setOverrideValues(parametervalues);
}
JsonStructure jsonStructure = Json.createReader(new StringReader(messageToValidate)).read();
if (getOutputFormat(session, responseMode).equalsIgnoreCase(FORMAT_JSON)) {
Xml2Json xml2json = new Xml2Json(aligner, isCompactJsonArrays(), !isJsonWithRootElements());
aligner.setContentHandler(xml2json);
aligner.startParse(jsonStructure);
out = xml2json.toString();
} else {
Source source = aligner.asSource(jsonStructure);
out = XmlUtils.source2String(source, isProduceNamespaceLessXml());
}
} 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.validation.XmlValidatorException in project iaf by ibissource.
the class Json2XmlValidator method doPipe.
/**
* Validate the XML or JSON string. The format is automatically detected.
* @param input a String
* @param session a {@link nl.nn.adapterframework.core.IPipeLineSession Pipelinesession}
*
* @throws PipeRunException when <code>isThrowException</code> is true and a validationerror occurred.
*/
@Override
public PipeRunResult doPipe(Object input, IPipeLineSession session, boolean responseMode) throws PipeRunException {
String messageToValidate = input == null ? "{}" : input.toString();
int i = 0;
while (i < messageToValidate.length() && Character.isWhitespace(messageToValidate.charAt(i))) i++;
if (i >= messageToValidate.length()) {
messageToValidate = "{}";
storeInputFormat(FORMAT_JSON, session, responseMode);
} else {
char firstChar = messageToValidate.charAt(i);
if (firstChar == '<') {
// message is XML
if (isAcceptNamespaceLessXml()) {
messageToValidate = addNamespace(messageToValidate);
// if (log.isDebugEnabled()) log.debug("added namespace to message ["+messageToValidate+"]");
}
storeInputFormat(FORMAT_XML, session, responseMode);
if (!getOutputFormat(session, responseMode).equalsIgnoreCase(FORMAT_JSON)) {
PipeRunResult result = super.doPipe(messageToValidate, session, responseMode);
if (isProduceNamespaceLessXml()) {
String msg = (String) result.getResult();
msg = XmlUtils.removeNamespaces(msg);
result.setResult(msg);
}
return result;
}
try {
return alignXml2Json(messageToValidate, session, responseMode);
} catch (Exception e) {
throw new PipeRunException(this, "Alignment of XML to JSON failed", e);
}
}
if (firstChar != '{' && firstChar != '[') {
throw new PipeRunException(this, "message is not XML or JSON, because it starts with [" + firstChar + "] and not with '<', '{' or '['");
}
storeInputFormat(FORMAT_JSON, session, responseMode);
}
try {
return alignJson(messageToValidate, session, responseMode);
} catch (XmlValidatorException e) {
throw new PipeRunException(this, "Cannot align JSON", e);
}
}
use of nl.nn.adapterframework.validation.XmlValidatorException in project iaf by ibissource.
the class XmlValidatorTest2 method validate.
@Override
public String validate(String rootNamespace, String schemaLocation, boolean addNamespaceToSchema, boolean ignoreUnknownNamespaces, String inputfile, String[] expectedFailureReasons) throws ConfigurationException, InstantiationException, IllegalAccessException, XmlValidatorException, PipeRunException, IOException {
String testXml = inputfile != null ? getTestXml(inputfile + ".xml") : null;
IPipeLineSession session = new PipeLineSessionBase();
try {
XmlValidator validator = getValidator(schemaLocation, addNamespaceToSchema, implementation);
validator.setIgnoreUnknownNamespaces(ignoreUnknownNamespaces);
PipeForward forward = validator.validate(testXml, session);
evaluateResult(forward.getName(), session, null, expectedFailureReasons);
} catch (Exception e) {
evaluateResult(null, session, e, expectedFailureReasons);
return "Invalid XML";
}
return null;
}
Aggregations