VRaptor não consegue instanciar inner Enums

isso parece ser um bug mesmo do VRaptor…

só pra eu conseguir reproduzir, essa classe está dentro de um jar?

não consegui reproduzir aqui =(

você tem como reproduzir o bug em um contexto menor, ou pelo menos me explicar melhor qual é o seu ambiente pra eu conseguir reproduzir, por favor?

Você mapeou o package no web.xml? O VRaptor só faz scan automatico para classes no WEB-INF/classes. Para classes dentro de um jar é necessário declarar o pacote no web.xml.

Esta classe é modelo e não usa anotação nenhuma, seja do VRaptor ou dos steriotypes do Spring.

Por coinscidência, implementei um serializer e marquei como @Deserializes. Ele não detecta esse cara, mesmo mapeando no web.xml um parâmetro de contexto com o nome br.com.caelum.vraptor.packages e adicionando o pacote do meu tipo JsonDeserializer.
[/quote]

Hmm, é verdade, erro meu.

seufagner, dúvidas:

  • como vc gerou ele? se vc gerou pelo eclipse, vc precisa ter marcado um checkbox chamado “Include directory entries”, senão o VRaptor não consegue scanear os seus conteúdos…

-na requisição que está dando problemas, aparece alguma stacktrace com erros? tenta fazer um System.out.println(XXX.Type.values()), e vê o que aparece.

Ola

O Bootstrap do VRaptor não consegue encontrar inner Enums ? Quando coloco-a em um arquivo separado tudo funciona normalmente.

[code]public class Item extends MembaseBucketEntity {

private static final long serialVersionUID = 1L;

public enum Type {
	DEFAULT;
}

@NotNull
@Min(1)
private Integer price = 0;

}[/code]

java.lang.NoClassDefFoundError: com/gazeus/musiccity/model/item/Item$Type at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:186) at br.com.caelum.vraptor.scan.DynamicWebAppBootstrap.configure(DynamicWebAppBootstrap.java:45) at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:84) 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.initFilter(ApplicationFilterConfig.java:273) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)

Oi Lucas, está sim.

Claro Lucas.

A classe Enum está em um JAR-core, que por usa vez está no WEB-INF/libs da aplicação web que utiliza a tal inner enum.

As requisições chegam via JSON de um swf e minha resposta é dada no mesmo formato.

Esta é classe de domínio, argumento do método no Controller

public class XXX extends YYY {

	private static final long serialVersionUID = 1L;

	public enum Type {
		SUBWAY, TINY, SMALL, MEDIUM, LARGE, XLARGE;
	}

... 
}

Estou testando via cURL:

curl -d … “xxx.type=SUBWAY&xxx.description=foo” http://localhost:8080/project/xxx/save

Erro:

12:15:01,077 DEBUG [ParametersInstantiatorInterceptor] There are conversion errors: [ValidationMessage{category=type, message=???is_not_a_valid_enum_value???, parameters=null}]

Esta classe é modelo e não usa anotação nenhuma, seja do VRaptor ou dos steriotypes do Spring.

Por coinscidência, implementei um serializer e marquei como @Deserializes. Ele não detecta esse cara, mesmo mapeando no web.xml um parâmetro de contexto com o nome br.com.caelum.vraptor.packages e adicionando o pacote do meu tipo JsonDeserializer.