Wednesday, March 15, 2006

GregorianCalendar no Java 5 #$!?*

Ontem, no trabalho, encontramos um bug na GregorianCalendar do java 5 que causou um certo descontentamento.

Um certo método no ejb (Session) estava lançando uma NullPointerException, foi verificado que o erro ocorria na execução do método add de um objeto GregorianCalendar. Este objeto era enviado de uma outra camada. A única mudanaça foi a atualização para java 5 na máquina.

Voltamos a máquina de ejb para java 1.4, e tudo voltou a funcionar... Resolvemos dar uma olhada nos fontes da versão 1.4 e 5 !

Triste mas na versão 5 existe um atributo 'calsys' que é transient (hummm). Este atributo é utilizado por um método interno que é acionado dentro de add, que em determinado momento válida se é null, mas em outro não !

Bom, infelizmente um sistema é um pouco grande, e neste momento não é interessante modificar as referencias de
GregorianCalendar para Date por exemplo, mas o ideal para representar data é o utilizar o simples e prático Date, deixe o GregorianCalendar para situações mais específicas a instantes.

Já existe um relatório indicando o bug, é só esperar pelo Mustang.

No comments: