Convert BeanUtils

Amigos,

Estou utilizando o BeanUtils.copyProperties para copiar propriedades
de um ActionForm (Struts) para um Bean. Em alguns casos como por ex.
String -> Data se faz nescessário o uso de Converters, contudo
utilizei o ConvertUtils.register para registrar este e funcionou sem
problemas.

    ConvertUtils.register(new StringParaData(), Date.class);

Porem eu preciso que ele faça o inverso tambem que converta
de Data -> String e ai começa o problema… Se eu faço
a mesma coisa do código anterior funciona:

    ConvertUtils.register(new DataParaString(), String.class);

Porem seu eu precisar de outro converter, um de float -> String
onde eu queira por ex. substituir os pontos por vírgulas e vice-versa,
e registrar-lo como anteriormente o outro conversor que foi associado
com a classe String vai ser substituido:

    ConvertUtils.register(new FloatParaString(), String.class);

Cara, o lance é o seguinte… realmente, você só pode registrar um converter por classe… qual a solução? Você recebe como entrada um Object, certo? Verifique qual a classe do objeto que você está recebendo e aplique uma conversão diferenciada para cada tipo.

Abraço,

Armando

Se entendi bem o que você quiz dizer, era o que eu temia
ter de fazer, seria um StringConverter que engloba-se todos
os converters SameThing -> To String.

public class StringParaData implements Converter {

 public Object convert(Class clazz, Object object) {
   if(object instanceof String) {
     return object.toString();
   } else if(object instanceof java.util.Date) {
     ....
   }
   return object;
 }

Então eu não li a implementação do BeanUtils mas pelo comportamento
dele da pra perceber que ele só procura pela classe que você associa
ao Converter no Bean que vai receber os dados, se ele procura-se em
ambos poderiamos utilizar um único converter.

É… é triste, mas ao que tudo indica, não tem outra saída…

Aproveitei e fui olhar o javadoc:

[quote] register(Converter converter, Class clazz)

Register a custom Converter for the specified destination Class, replacing any previously registered Converter.[/quote]

Abraço,

Armando

:frowning: poxa era o que eu temia/tremia hehehe
mas se essa é a única saida vou ter de fazer assim!
até arrumar outro jeito se é que existe!