Usando RestLet, as anotações Xstream parecem não ter efeito
Pergunta
Usar @xstreamomitfield no meu pojo parece não ter nenhum efeito. O campo anotado ainda é exposto na representação XML ou JSON.
@XStreamAlias("Pojo")
@Entity
public class Pojo {
private String name;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long key;
@XStreamOmitField
private String hidden;
public Pojo(String name, String hidden) {
this.name = name;
this.hidden = hidden;
}
}
E no servidorResource
@Get
public Pojo test() {
Pojo pj= new Pojo("hansi","hinter");
return pj;
}
me pega
<com.myComp.ORMTest.Pojo>
<name>hansi</name>
<hidden>hinter</hidden>
</com.myComp.ORMTest.Pojo>
Alguma idéia de por que as anotações são ignoradas?
Solução
Você precisa dizer ao XStream para processar explicitamente as anotações:
XStream xstream = new XStream();
xstream.processAnnotations(MyClass.class);
Ou você deve adicionar este código para dizer ao XStream para processar todas as anotações:
xstream.autodetectAnnotations(true);
Outras dicas
Duas coisas vem a mente:
1.) Você disse ao XStream para analisar as anotações?
2.) Sua estrutura da web talvez use proxies para acessar os Pojos e esses não delegam as anotações? (aconteceu com um amigo com tapeçaria Apache)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow