如何在mule中填充cvc-complex类型的错误信息

时间:2014-01-02 11:29:27

标签: validation mule

我有mule消息过滤器来验证针对模式的SOAP请求,

我的问题是:

如何记录'哪个元素具有解析异常(cvc-complex-type)的错误详细信息。因为catch块总是在抛出异常细节:“消息已被过滤器拒绝”。我怎么能显示确切的异常?以便用户根据要求输入正确的数据。

1 个答案:

答案 0 :(得分:0)

将customfilterclass写为SchemaValidationfilter的子项。

覆盖接受方法并抛出soap fault。

public class CustomSchemaValidationFilter extends SchemaValidationFilter {
@Override
public boolean accept(MuleMessage muleMessage) {
    return validateBody(muleMessage);
}
public boolean validateBody(MuleMessage message) throws Fault {
    Source source = null;
    try {
        source = loadSource(message);
    } catch (Exception e) {
        throw getFaultObj(e);
    }
    try {
        createValidator().validate(source);
    } catch (SAXException e) {
        throw getFaultObj(e);
    } catch (IOException e) {
        throw getFaultObj(e);
    }
    return true;
}
private Fault getFaultObj(Exception e) {
    return new SoapFault(e.getMessage(), e, new QName(
            DEFAULT_SCHEMA_LANGUAGE));
}
}

//并在标签后添加mule flow以验证过滤器。

<custom-filter class="org.mule.module.xml.filters.CustomSchemaValidationFilter">
<spring:property name="schemaLocations" value="${approvalHistorySchemaLocation}" />
</custom-filter>**