VRaptor 4.1.1, não consigo implementar um String Converter

66 views
Skip to first unread message

rafaelbatz

unread,
May 31, 2016, 10:12:17 AM5/31/16
to caelum-vraptor
Bom dia, 

eu preciso criar um conversor de String, para TODAS as Strings do sistema eu preciso que o sistema execute TRIM em todas. Já tentei como está descrito na documentação, assim:

@Alternative
@Priority(Interceptor.Priority.APPLICATION)
@Convert(String.class)
public class StringTrimConverter implements Converter<String> {
@Override
public String convert(String value, Class<? extends String> type) {
System.out.println("Converter");
return value == null || value.length() == 0 ? null : value.trim();
}


E tentei assim também:
@Convert(String.class)
@Specializes
public class StringTrimConverter extends StringConverter {
@Override
public String convert(String value, Class<? extends String> type) {
return value == null || value.length() == 0 ? null : value.trim();
}
}

Mas em nenhum dos 2 casos ai o sistema executa o conversor.

Alguem sabe como eu posso fazer isso?

Rodrigo Turini

unread,
May 31, 2016, 1:16:52 PM5/31/16
to caelum-vraptor
Oi Rafael

Parece ser um bug mesmo, já tivemos tópicos parecidos antes.

vou tentar investigar asap

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.

rafaelbatz

unread,
May 31, 2016, 1:36:58 PM5/31/16
to caelum-vraptor

Julio Lazzarim

unread,
Sep 21, 2016, 1:25:05 PM9/21/16
to caelum-vraptor
Bom dia, 

Acabei esbarrando no mesmo problema que o rafaelbatz esta/estava tendo. Baixei a master do github e notei q o problema ainda persistia, sendo assim fiz um Fork do Vraptor para tentar identificar o pq do problema. 

na Classe VRaptorInstantiator.java temos o seguinte trecho de codigo:
@Override
public boolean isAbleToInstantiate(Target<?> target) {
   
return !String.class.equals(target.getClassType()) && converters.existsFor(target.getClassType());
}

o qual eu alterei para:
 @Override
 
public boolean isAbleToInstantiate(Target<?> target) {
   
return converters.existsFor(target.getClassType());
 
}
Visto q restringia plenamente quando o ClassType de target fosse String.

Também tive que alterar o StringConverter padrão do VRaptor, pois um dos testes deixou de funcionar. O teste em questão é o "returnsNullWhenInstantiatingAStringForWhichThereAreNoParameters".
O StringConverter alterado ficou assim: (juntamente com o import adicionado 
import static com.google.common.base.Strings.isNullOrEmpty;
@Override
public String convert(String value, Class<? extends String> type) {

 
if (isNullOrEmpty(value)) {
   
return null;
 
}
 
 
return value;
}

Minha questão agora é, posso pedir um pullRequest dessas alterações no GitHub? Elas por acaso vão influenciar algum outro ponto do sistema o qual eu desconheço?

Fico no aguardo,

Julio C. Lazzarim         

Rodrigo Turini

unread,
Sep 21, 2016, 4:57:47 PM9/21/16
to caelum-vraptor
Oi Julio

parece que esse !String.class está aí desde 2011, no VRaptor 3. Não consegui entender o motivo exato, precisaria de alguns testes, mas tudo indica que foi colocado por causa do ognl e que pode sim ser removido.

Você abre o PR pra investigarmos juntos?

ps: se puder, testa recever um String[] no método do controller pra garantir que continua funcionando certinho?

Julio Lazzarim

unread,
Sep 22, 2016, 4:32:39 PM9/22/16
to caelum-vraptor, rodrigo...@caelum.com.br
Boa Tarde,

Rodrigo,

Fiz uns testes com String[] e ficou tudo tranquilo. Dai ja fiz o commit e o PR pro GitHub do VRaptor. Espero ter realmente ajudado. =)

Julio C. Lazzarim

Rodrigo Turini

unread,
Sep 23, 2016, 1:29:20 PM9/23/16
to Julio Lazzarim, caelum-vraptor
ajudou sim, sem dúvidas! 
Pedi uns testes na issue e assim que receber um feedback faço o merge (;
muitíssimo obrigado, Julio
Reply all
Reply to author
Forward
0 new messages