[RESOLVIDO] Problema para ocultar field no XStream

3 respostas
A

Não estou conseguindo ocultar um field de aparecer no meu xml.

o xml está aparecendo assim:

<list>
  <Segempresa>
    <changeSupport serialization="custom">
      <java.beans.PropertyChangeSupport>
        <default>
          <propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
          <source class="Segempresa" reference="../../../.."/>
        </default>
        <null/>
      </java.beans.PropertyChangeSupport>
    </changeSupport>
  </Segempresa>
</list>

Meu bean está assim:

public class Segmento implements Serializable {
    @Transient
    @XStreamAlias("changeSupport")
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idsegmento")
    private Integer idsegmento;
    @Column(name = "empresa")
    private String empresa;
....

eu quero ocultar o ChangeSupport que está aparecendo no xml.

Alguem pode me ajudar?

Grato!

3 Respostas

A

use @XStreamOmitField ao inves de @Transient

A

Opa alves.Felipe

eu coloquei o @XStreamOmitField certim só que persistiu o problema
o meu omit está certo?

public static void gravarXml(List list){
        XStream xs = new XStream();
        //xs.alias("list", List.class);
        List lista = new ArrayList();
        for (Object obj : list) {
            lista.add(obj);
        }
        xs.omitField(java.beans.PropertyChangeSupport.class, "changeSupport");
        xs.alias("Segempresa", cadastro_segmento.Segmento.class);
        String xml = xs.toXML(lista);
    }
A

OPA
RESOLVI

o que estava faltando era somente o
xs.processAnnotations(Segmento.class); na classe que gera o xls

a classe bean ficou assim:

public class Segmento implements Serializable {
    @XStreamOmitField
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idsegmento")
    private Integer idsegmento;
...

e a classe que gera o xml ficou assim

public static void gravarXml(List list){
        XStream xs = new XStream();
        //xs.alias("list", List.class);
        List lista = new ArrayList();
        for (Object obj : list) {
            lista.add(obj);
        }
        xs.omitField(java.beans.PropertyChangeSupport.class, "changeSupport");
        xs.processAnnotations(Segmento.class);
        xs.alias("Segempresa", cadastro_segmento.Segmento.class);
        String xml = xs.toXML(lista);

Valeus

Criado 22 de março de 2010
Ultima resposta 22 de mar. de 2010
Respostas 3
Participantes 2