sexta-feira, 19 de agosto de 2016

Configurando Validators

Configurando Validators

Através de configurações globais

Em um nível global, você pode substituir o ExceptionFactory padrão, para mudar o tipo de exceção levantada por seus validadores. Você não pode definir a mensagem que acompanha a exceção em um nível global, uma vez que você deve manter essas diferentes, a fim de saber qual dos validadores é o que falhou. Você pode configurá-lo como este:
No Studio, você pode criar uma validação: config elemento global, largando um componente de validação em seu fluxo e clicando no ícone de configuração add:
Em seguida, selecione a configuração de validação:
validador
Uma janela de configuração será aberta onde você pode fornecer o nome da classe de um ExceptionFactory ou uma referência a um bean Spring. Você também pode definir as configurações de Internacionalização para as mensagens que vão com as exceções.

No Validador nível individual

Em qualquer um dos validadores descrito acima, você pode personalizar o tipo de exceção lançada, fornecendo o nome canônico de um tipo de exceção. Se esse tipo de exceção não substitui o Exception construtor (String) umIllegalArgumentExceptionserá lançada. Você também pode personalizar a mensagem da exceção lançada.
Clique na Customizeguia, em seguida, definir a mensagem eo tipo de exceção para o seu validador.

A definição acima substitui o ExceptionFactory mundial configurado na configuração de validação.NotAnAdultExceptionEspera-se que ter um construtor recebendo um argumento String, caso contrário ele irá falhar (que será validado na hora de início).
Abra o elemento global que é referenciado pelo seu validador e definir os campos correspondentes:
As configurações i18n são opcionais, mas se você especificar qualquer coisa nele, em seguida, o campo Caminho do pacote é obrigatório. O campo localidade é opcional eo padrão para a localidade do sistema. No entanto, é mais útil quando usado com uma expressão que retorna do local a ser aplicado sobre o evento dada, tal como #[tenantLocale]Este valor assume que no momento em que o validador é executado, haverá uma flowVar chamada tenantLocaleque especifica qual localidade para usar.

Validando muitas condições de uma Vez

Há situações em que você pode querer avaliar várias condições, dos quais mais de um poderia deixar simultaneamente.Nestes casos, é ideal para gerar um único erro que contém todas as descrições.
Sobre a toda validador:
  • Todas as validações são executadas, mesmo que todos eles falham
  • Se qualquer uma das validações falhar, uma única exceção é lançada. A excepção contém uma mensagem de várias linhas em que cada linha corresponde a cada validação falhar.
  • Validadores são executadas sequencialmente usando a linha do fluxo, mas desde validadores não causam quaisquer efeitos secundários, a ordem não importa
  • Ao contrário do resto dos validadores, a todos validador não permite que você personalize diretamente o tipo de exceção ou a mensagem através da validação: elementos de exceção ou exceção de fábrica (você pode no entanto personalizar a mensagem dos validadores internos).
No Studio, você pode soltar um componente de validação em seu fluxo e selecione a opção "Todos" validador. Você vai ter uma tabela abaixo em que você pode adicionar / editar / remover os validadores customizados:

Exemplo

Aqui está um exemplo de como usar o All Validador:
Suponha que alguém está postando a seguinte JSON através de um ouvinte http:
1
2
3
4
5
<validation:all>
  <validation:is-true expression="#[age &gt; 21]" />
  <validation:is-url url="#[url]" />
  <validation:is-not-empty value=#[name] />
</validation:all>
Agora, considere o seguinte configuração:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="validationsFlow">
  <http:listener config-ref="HTTP_Listener_Configuration" path="/user" allowedMethods="POST" doc:name="HTTP"/>
  <!-- transform to Map to simplify MEL expressions -->
  <json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>
  <validation:all doc:name="Validation">
    <validation:validations>
      <validation:is-not-empty doc:name="Validation" value="#[payload.firstName]" message="Firstname cannot be empty"/>
      <validation:is-not-empty doc:name="Validation" value="#[payload.lastName]" message="Lastname cannot be empty"/>
      <validation:is-number message="Not an adult" value="#[payload.age]" minValue="18" numberType="INTEGER"/>
      <validation:is-email email="#[payload.email]" />
      <validation:matches-regex message="Invalid SSN" value="#[payload.ssn]" regex="^(?!000|666)[0-8][0-9]{2}-(?!00)[0-9]{2}-(?!0000)[0-9]{4}$"/>
      <validation:validate-size value="#[payload.ssn]" min="11" max="11" message="SSN too short"/>
    </validation:validations>
  </validation:all>
  <set-payload value="OK" doc:name="Set Payload"/>
</flow>
O exemplo acima inclui um allvalidador que valida simultaneamente que: * Primeiro e último nome não são cadeias vazias * que a idade é um número inteiro válido acima de 18 * Que o endereço de e-mail é válido * Que o número de segurança social tem o tamanho e partidas correta uma expressão regular

Edifício com Maven

Ao construir um aplicativo com Maven, a seguinte dependência precisa ser adicionado ao arquivo pom.xml do aplicativo:
1
2
3
4
5
<dependency>
    <groupId>org.mule.modules</groupId>
    <artifactId>mule-module-validation</artifactId>
    <version>${mule.version}</version>
</dependency>
Esta página pressupõe que tenha <mule.version></mule.version>propriedade definida na sua pom.xml
Se não, você pode substituir ${mule.version}com a versão de tempo de execução de mula que está sendo usado.

Nenhum comentário:

Postar um comentário