Question

Using @XStreamOmitField in my POJO seems to have no effect whatsoever. the annotated field still gets exposed in the xml or json representation.

@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;
    }
}

and in the ServerResource

@Get
public Pojo test() {
    Pojo pj= new Pojo("hansi","hinter");
    return pj;
}

gets me

<com.myComp.ORMTest.Pojo>
  <name>hansi</name>
  <hidden>hinter</hidden>
</com.myComp.ORMTest.Pojo>

Any ideas why the annotations are ignored?

Was it helpful?

Solution

You have to tell XStream to explicitly process annotations:

XStream xstream = new XStream();
xstream.processAnnotations(MyClass.class);

Or, you should add this code to tell XStream to process all annotations:

xstream.autodetectAnnotations(true);

OTHER TIPS

Two things come to mind:

1.) Did you tell XStream to parse the annotations?

2.) Does your web framework maybe use proxies to access the pojos and those don't delegate the annotations? (happened to a friend with Apache Tapestry)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top