2016-10-13 12 views
0

Я использую компонент проверки для проверки ключевых частей данных в сообщениях мула при обработке маршрутизируемых сообщений apiKit.Mule apiKitGlobalExceptionMapping ValidationException не выбрасывается

Я ожидал, что мой класс исключений будет поднят, где я мог бы поймать его в компоненте глобального исключения api kit, но исключения всегда появляются как org.mule.api.MessagingException, а не мой пользовательский класс.

Что мне нужно сделать, чтобы получить исключение из компонента проверки, который должен быть отделен в глобальном компоненте исключения api kit? Ниже мой Validation компоненты исключения:

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); 
    } 

} 

вот мой класс исключения:

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(); 
    } 

} 

Что я делаю неправильно?

+0

note Я использую валидацию: все компоненты –

+0

вы можете поделиться конфигом подтверждения? –

+0

Я понял, что все validatior ели пользовательские исключения, которые я хотел быть брошен –

ответ

0

Я понял, в чем моя проблема: я использовал валидацию: весь компонент, который просто агрегировал все сообщения между всеми различными валидаторами и бросил сообщениеException, фактически игнорируя мою конфигурацию проверки. мой совет: избегайте всех валидаторов. это звучит хорошо, но вы теряете пользовательскую исключительную способность.

+0

Как вы его избегаете? Что вы использовали в качестве альтернативы? –

+0

Привет, @ItzHoudini. Я закончил просто перечисление каждого из валидаторов, которые у меня были в валидаторе ALL, отдельно. Он выглядит fin в xml, ужасный в редакторе WISWIG, но по крайней мере он работает так, как ожидалось. –