Versión corta: te estás perdiendo el primer argumento en tu llamado a invoke
.
Versión larga: estás llamando
Method method = DoerDAO.class.getDeclaredMethod(requestedUser,
Dossier.class,
SessionFactory.class);
Digamos que el valor de requestedUser
es getReviewerOneDetail
, entonces buscarías el método
getReviewerOneDetail(Dossier arg0, SessionFactory arg1)
Siguiente llamas
method.invoke(dossierDetail.get(0), sessionFactory);
los Javadoc establece que Invoke obtiene como primer parámetro la instancia (!) de la clase para llamar al método y como segundo, tercero, ... parámetros de los parámetros reales para su invocación.
Entonces, lo que realmente intenta llamar en su código es
dossierDetail.get(0).getReviewerOneDetail(sessionFactory);
que no coincide con la firma del método (1 parámetro frente a 2 parámetros), ni el tipo de instancia en el que se llama el método (Dossier
en vez de DoerDAO
).
Porque adquieres el Method
desde el DoerDAO
clase, supongo que lo que pretendía escribir allí, fue en realidad:
method.invoke(doerDao, dossierDetail.get(0), sessionFactory);
Esto se traduciría a
doerDao.getReviewerOneDetail(dossierDetail.get(0), sessionFactory);