Problema estranho com reflect

0 respostas
T

Olá pessoal,

Estou rodando uma aplicação EJB3 no JBOSS e estou com um problema. Sempre que tento acessar javax.persistence.Version.class acontece um null pointer. Consigo acessar a classe Id (do mesmo pacote) normalmente, mas especificamente com a Version acontece o problema.
Segue o código:

public class ChangeLoggerInterceptor {

	@PersistenceContext(unitName = "agenda")
	private EntityManager entityManager;

	public ChangeLoggerInterceptor() {

	}

	@AroundInvoke
	@TransactionAttribute(TransactionAttributeType.REQUIRED)
	public Object registrar(InvocationContext context) throws Exception {
		Object parametroNovo = context.getParameters()[0];

		Object id = null;
		Long version = null;
		Method[] methods = parametroNovo.getClass().getDeclaredMethods();
		int i = 0;
		while ((id == null || version == null) && i < methods.length) {
			methods[i].setAccessible(true);
			try {
				if ((id == null) && methods[i].getAnnotation(Id.class) != null) {
					id = methods[i].invoke(parametroNovo);
				}
				if (methods[i].getAnnotation(Version.class) != null) {
					version = (Long) methods[i].invoke(parametroNovo);
				}
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				i++;
			}
		}
		if (version == null) {
			version = new Long(0);
		}
		Object parametroAntigo = entityManager.find(parametroNovo.getClass(),
				id);
		Date d = Calendar.getInstance().getTime();
		Object ref = new InitialContext().lookup("ChangeLoggerBean/remote");
		ChangeLogger logger = (ChangeLogger) PortableRemoteObject.narrow(ref,
				ChangeLoggerRemote.class);
		logger.log("eu", d, parametroNovo, parametroAntigo, (Integer) id,
				version);

		return context.proceed();
	}

}

O problema está aqui:
if (methods[i].getAnnotation(Version.class) != null)
Só pelo Version.class acontece um NullPointerException. E o mais estranho de tudo: esse código já funcionou, mas após adicionar segurança aos EJBs o problema começou a acontecer. Alguém já teve problema parecido?

Grato,
Thiago Jamir

Criado 3 de julho de 2008
Respostas 0
Participantes 1