Olha eu mais uma vez por aqui, to levando canseira...hehe.
Continuando nos meus estudos, dei uma lida no Hibernate Validator e gostei da idéia para usar junto com o VRaptor. Aí fui querer injetar uma dependência, mas parece que isso não rola com generics, pelo que pesquisei na net (Talvez pelo lance de os genéricos só estarem disponíveis em tempo de compilação). Alguém poderia confirmar isso? Em caso positivo, alguém sabe de algum workaround?
Meu ComponentFactory:package br.com.revelacaovirtual.person;
@Component
@ApplicationScoped
public class PersonValidatorCreator implements ComponentFactory<ClassValidator<Person>> {
@Override
public ClassValidator<Person> getInstance() {
return new ClassValidator<Person>(Person.class);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>digital-do-vale</display-name>
<filter>
<filter-name>vraptor</filter-name>
<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
</filter>
<filter-mapping>
<filter-name>vraptor</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<context-param>
<param-name>br.com.caelum.vraptor.provider</param-name>
<param-value>br.com.caelum.vraptor.util.jpa.JPACustomProvider</param-value>
</context-param>
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.revelacaovirtual</param-value>
</context-param>
</web-app>
SEVERE: Exception starting filter vraptor
java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl cannot be cast to java.lang.Class
at br.com.caelum.vraptor.ioc.ComponentFactoryIntrospector.targetTypeForComponentFactory0(ComponentFactoryIntrospector.java:43)
at br.com.caelum.vraptor.ioc.ComponentFactoryIntrospector.targetTypeForComponentFactory(ComponentFactoryIntrospector.java:29)
at br.com.caelum.vraptor.ioc.spring.ComponentFactoryBean.<init>(ComponentFactoryBean.java:38)
at br.com.caelum.vraptor.ioc.spring.ComponentScanner.postProcessBeanDefinition(ComponentScanner.java:80)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:210)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.scan(ClassPathBeanDefinitionScanner.java:183)
at br.com.caelum.vraptor.ioc.spring.ComponentScanner.scan(ComponentScanner.java:98)
at br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.loadBeanDefinitions(VRaptorApplicationContext.java:94)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:458)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:388)
at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.start(SpringBasedContainer.java:68)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:79)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:110)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:103)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3800)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4450)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
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 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

