VRaptor 3 e Hibernate Validator

2 respostas
J

E o seguinte no VRaptor 2 antes eu crie uma classe chamado validator que inventei um novo validador para Hibernate Validator tipo do @NotNull
o que fiz foi isso na minha entidade vinha a anotacao do campo desta forma

@Validacao(tipo=TipoValidator.CONTAINER)
private String nrocontainer;

Quando o campo nro container nao era validado ele mandava para o vraptor e o hibernate validator o nome da entidade + campo hj no VRaptor 3 se for valido nao da erro mas se for invalido nao esta mandando a entidade + campo para o meu jsp esta dando a seguinte exception no vraptor.

br.com.caelum.vraptor.InterceptionException: an exception was raised while executing resource method
   at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
   at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
   at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
   at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
   at br.com.tms.interceptor.AutorizacaoInterceptor.intercept(AutorizacaoInterceptor.java:74)
   at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
   at br.com.tms.interceptor.ExceptionHandlerCustomVraptor.intercept(ExceptionHandlerCustomVraptor.java:60)
   at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
   at br.com.tms.interceptor.ExceptionHandlerCustomVraptor.intercept(ExceptionHandlerCustomVraptor.java:60)
   at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
   at br.com.tms.interceptor.AutorizacaoInterceptor.intercept(AutorizacaoInterceptor.java:74)
   at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
   at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
   at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
   at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
   at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
   at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
   at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
   at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
   at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
   at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
   at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
   at java.lang.Thread.run(Thread.java:637)
Caused by: org.hibernate.validator.InvalidStateException: validation failed for: br.com.tms.modelo.ExpOrdemSubItem
   at org.hibernate.validator.event.ValidateEventListener.validate(ValidateEventListener.java:148)
   at org.hibernate.validator.event.ValidateEventListener.onPreUpdate(ValidateEventListener.java:177)
   at org.hibernate.action.EntityUpdateAction.preUpdate(EntityUpdateAction.java:237)
   at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:88)
   at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168)
   at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
   at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
   at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
   at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:412)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
   at $Proxy85.adiciona(Unknown Source)
   at br.com.tms.controller.ExpOrdemSubItemController.adiciona(ExpOrdemSubItemController.java:37)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
   ... 56 more

ValidacaoValidator.java

import java.util.HashSet;
import java.util.Set;

import org.hibernate.validator.Validator;

public class ValidacaoValidator implements Validator<Validacao> {
   private static Set<String> cpfOrcnpj = new HashSet<String>();
   private Validacao parameters;
   private TipoValidator tipo;
   private String message;
     public void setMessage(String message) {
       // TODO Auto-generated method stub
       this.message = message;
   }
     @Override
   public void initialize(Validacao parameters) {
       this.parameters = parameters;
   }
     @Override
   public boolean isValid(Object value) {
       System.out.println(parameters.message());
       String s = null;
       switch (this.parameters.tipo().getValor()) {
           case 10:
               s = Util.getFormatar(Util.NUMEROSCARACTER, value);
               return new Util().Container(s);
           case 11:
               s = Util.getFormatar(new Util().NUMEROS, value);
               return new Util().Cpf(s);
           case 14:
               s = Util.getFormatar(new Util().NUMEROS, value);
               return new Util().Cnpj(s);
           case 25:
               s = Util.getFormatar(new Util().NUMEROS, value);
               if (s.length() == 11) {
                   return new Util().Cpf(s);
               } else {
                   return new Util().Cnpj(s);
               }                          default:
               return false;
       }          }
}

Validacao.java

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.hibernate.validator.ValidatorClass;

@ValidatorClass(ValidacaoValidator.class)
@Target( { ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Validacao {       public String message() default "{validator.cpfcnpj}";
   public TipoValidator tipo() default TipoValidator.CPFCNPJ;
}

TipoValidator.java

public enum TipoValidator {      
   CONTAINER(10), CPF(11), PISPASEP(12), CNPJ(14), CPFCNPJ(25);
   private int valor;

   private TipoValidator(int valor) {
       // TODO Auto-generated constructor stub
       this.valor = valor;
   }
   public int getValor() {
       return valor;
   }
}

Sabendo que estou usando a ultima versao do VRaptor 3.1.2 e tb ja estou validando desta forma this.validator.validate(obj);

Obrigado !!!
Joao Vitor

2 Respostas

Lucas_Cavalcanti

o que tem nessa linha?

ExpOrdemSubItemController.java:37

J

Lucas Cavalcanti:
o que tem nessa linha?

ExpOrdemSubItemController.java:37

achei a cagada minha e exatamente nesta linha que vc falou nao estava com this.validator.validate pq este controller e o unico que nao passa pelo GenericController valeu lucas

Obrigado !!!
Joao Vitor

Criado 15 de junho de 2010
Ultima resposta 15 de jun. de 2010
Respostas 2
Participantes 2