demoiselle / framework

Repositório principal contendo o Core e Extensions: JPA, Security, WS
https://demoiselle.org
127 stars 77 forks source link

framework/demoiselle-crud @Search Erro ao recuperar atributo classePai #112

Closed fernandocangussu closed 5 years ago

fernandocangussu commented 6 years ago

public class ClassePai { String atributoPai }

public class ClasseFilha extends ClassePai { String atributoFilho }

public class ClasseFilhaREST extends AbstractREST<ClasseFilha, Long> { @GET @Search(fields = { "atributoPai", "atributoFilho"}) public Result find() {} } No exemplo acima quando um dos atributos é oriundo de uma superclasse a anotação não encontra o mesmo, retornando a seguinte erro: 14:23:28,801 SEVERE [org.demoiselle.jee.rest.exception.mapper.AnyOtherExceptionMapper] (default task-10) Using AnyOtherExceptionMapper: javax.ws.rs.BadRequestException: O campo 'atributo1' solicitado na requsição não existe na classe 'ClasseFilha'.

Verifiquei que no método checkIfExistField() da classe CrudUtilHelper ele pega os atributos da classe através targetClass.getDeclaredFields(), mas esse método não retorna atributos de superclasse. Achei um exemplo de como poderia ser implementada essa solução no link abaixo: (https://stackoverflow.com/questions/1042798/retrieving-the-inherited-attribute-names-values-using-java-reflection)

clovisjunior commented 5 years ago

Olá @fernandocangussu,

Obrigado pela colaboração.

Publique a versão 3.0.4 com a sugestão sugerida (https://github.com/demoiselle/framework/commit/574be213a487375fedeb33ef5ff62327eaec14a9#diff-e5b5b4ef0b48a383669829809d038264R69)