未抛出 Mule apiKitGlobalExceptionMapping ValidationException
Mule apiKitGlobalExceptionMapping ValidationException not being thrown
我在处理 apiKit 路由消息时使用验证组件来验证 mule 消息中的关键数据。
我期待我的异常 class 被引发,我可以在 api 工具包全局异常组件中捕获它,但异常总是以 org.mule.api.MessagingException 的形式出现,而不是我的习惯 class.
我需要做什么才能将验证组件中的异常从 api 工具包全局异常组件中分离出来?下面是我的验证异常组件:
package com.comMyAppy.rules;
import com.comMyAppy.rules.MyAppValidationException;
import org.mule.api.MuleEvent;
import org.mule.extension.validation.api.ExceptionFactory;
import org.mule.extension.validation.api.ValidationResult;
public class MyAppValidationExceptionFactory implements ExceptionFactory
{
@SuppressWarnings("unchecked")
@Override
public <T extends Exception> T createException(ValidationResult result,
Class<T> exceptionClass, MuleEvent event)
{
// TODO Auto-generated method stub
return (T) new MyAppValidationException(result, event);
}
@Override
public Exception createException(ValidationResult result,
String exceptionClassName, MuleEvent event)
{
// TODO Auto-generated method stub
return new MyAppValidationException(result, event);
}
}
这是我的例外情况 class:
package com.comMyAppy.rules;
import org.mule.api.MuleEvent;
import org.mule.config.i18n.Message;
import org.mule.extension.validation.api.ValidationException;
import org.mule.extension.validation.api.ValidationResult;
@SuppressWarnings("serial")
public class MyAppValidationException extends ValidationException
{
public MyAppValidationException(ValidationResult validationResult,
MuleEvent event)
{
super(validationResult, event);
// TODO Auto-generated constructor stub
}
@Override
protected String generateMessage(Message message)
{
return "VALIDATION:" + message.getMessage();
}
}
我做错了什么?
我发现我的问题是什么:我使用的是 validation:all 组件,它只是聚合了所有不同验证器之间的所有消息,并抛出一个 messageException 有效地忽略了我的验证配置。我的建议:避免使用 all 验证器。听起来不错,但是你失去了自定义异常的能力。
我在处理 apiKit 路由消息时使用验证组件来验证 mule 消息中的关键数据。
我期待我的异常 class 被引发,我可以在 api 工具包全局异常组件中捕获它,但异常总是以 org.mule.api.MessagingException 的形式出现,而不是我的习惯 class.
我需要做什么才能将验证组件中的异常从 api 工具包全局异常组件中分离出来?下面是我的验证异常组件:
package com.comMyAppy.rules;
import com.comMyAppy.rules.MyAppValidationException;
import org.mule.api.MuleEvent;
import org.mule.extension.validation.api.ExceptionFactory;
import org.mule.extension.validation.api.ValidationResult;
public class MyAppValidationExceptionFactory implements ExceptionFactory
{
@SuppressWarnings("unchecked")
@Override
public <T extends Exception> T createException(ValidationResult result,
Class<T> exceptionClass, MuleEvent event)
{
// TODO Auto-generated method stub
return (T) new MyAppValidationException(result, event);
}
@Override
public Exception createException(ValidationResult result,
String exceptionClassName, MuleEvent event)
{
// TODO Auto-generated method stub
return new MyAppValidationException(result, event);
}
}
这是我的例外情况 class:
package com.comMyAppy.rules;
import org.mule.api.MuleEvent;
import org.mule.config.i18n.Message;
import org.mule.extension.validation.api.ValidationException;
import org.mule.extension.validation.api.ValidationResult;
@SuppressWarnings("serial")
public class MyAppValidationException extends ValidationException
{
public MyAppValidationException(ValidationResult validationResult,
MuleEvent event)
{
super(validationResult, event);
// TODO Auto-generated constructor stub
}
@Override
protected String generateMessage(Message message)
{
return "VALIDATION:" + message.getMessage();
}
}
我做错了什么?
我发现我的问题是什么:我使用的是 validation:all 组件,它只是聚合了所有不同验证器之间的所有消息,并抛出一个 messageException 有效地忽略了我的验证配置。我的建议:避免使用 all 验证器。听起来不错,但是你失去了自定义异常的能力。