Ola Pessoal,
Tenho uma consulta vem JPQL muito simple mas não funciona por causa de um Cast que estou fazendo para String, não sei porque isso está acontecendo, já fiz isso em outras consultas e funciona direitinho.
Estou usando o Vraptor e criei um Interceptor para quando acessar um URI que tenha no banco seja interceptada e redirecionada para um template do usuário, se casa tenha a URI manda para o Template se não pode fazer qualquer coisa erro 403 sei lá.
Alguém poderia me dizer porque não posso fazer esse Cast?
Obrigado!
@Intercepts @RequestScoped
public class InterceptorURI implements Interceptor {
private final UsuarioController usuarioController;
private HttpServletRequest request;
public InterceptorURI(UsuarioController usuarioController, HttpServletRequest request){
this.usuarioController = usuarioController;
this.request = request;
}
@Override
public boolean accepts(ResourceMethod method) {
String uri = request.getRequestURI().replaceFirst(request.getContextPath(), "");
String buscaURI = usuarioController.BuscaURI(uri);
if(uri == buscaURI){
System.out.println("************ URI válida *************");
return true;
}
System.out.println("********** URI Invalida *************");
return false;
}
@Override
public void intercept(InterceptorStack stack, ResourceMethod method,
Object resourceInstance) throws InterceptionException {
System.out.println("***************Interceptando "+ request.getRequestURI());
stack.next(method, resourceInstance);
}
}
// DAO
public String buscaURI(String uri) {
try {
String jpql = "select u from Usuario u where u.uri = :uri";
Query query = this.em.createQuery(jpql);
query.setParameter("uri", uri);
return (String) query.getSingleResult();
} catch (NoResultException e) {
return null;
}
}
ERRO
go 30, 2012 3:56:39 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet default threw exception
java.lang.ClassCastException: br.com.meusite.admin.model.Usuario cannot be cast to java.lang.String
at br.com.meusite.admin.dao.UsuarioDAO.buscaURI(UsuarioDAO.java:55)
at br.com.meusite.admin.controller.UsuarioController.BuscaURI(UsuarioController.java:195)
at br.com.meusite.interceptor.InterceptorURI.accepts(InterceptorURI.java:31)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:52)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
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.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:127)
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:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)