xstream Vector<InterfaceClass>



  • Hi, ich hofe mir kann jemand helfen.
    Ich benutze xstream zur Serialisierung meiner Daten.
    Jetzt habe ich ein Problem, dass ich einen Vector habe, der als Typ ein Interface hat.

    der Output der generiert wird, sieht nun folgendermaßen aus

    public interface IProps{}
    
    @XStreamAlias("entry")
    public class CounterField implements IProps{
        public CounterField(String description, int count) {
           this.description = description;
           this.count = count;
        }
        public String description;
        public int    count;
    }
    
    @XStreamAlias("list")
    public class CounterFieldVector  implements IProps
    {
      public CounterFieldVector()
      {
        fields = new Vector<IProps>();
      }
    
      @XStreamAlias("elements")
      public Vector<IProps> fields;
    
    }
    

    es soll noch mehrere implementierungen von IProps geben.
    Das ganze kann also beliebig geschachtelt werden.

    raus kommt folgendes:

    <elements>
          <SimpleCounterApp.CounterField>
            <description>Example1</description>
            <count>0</count>
          </SimpleCounterApp.CounterField>
          <SimpleCounterApp.CounterField>
            <description>Example2</description>
            <count>1</count>
          </SimpleCounterApp.CounterField>
          <SimpleCounterApp.CounterField>
            <description>Example3</description>
            <count>2</count>
          </SimpleCounterApp.CounterField>
        </elements>
    

    seltsamerweise ignoriet er die aliase für die Klassen.

    hätte aber gern, dass er diesen benutzt
    im obigen Fall halt:

    <elements>
          <entry>
            <description>Example1</description>
            <count>0</count>
          </entry>
          <entry>
            <description>Example2</description>
            <count>1</count>
          </entry>
          <entry>
            <description>Example3</description>
            <count>2</count>
          </entry>
        </elements>
    


  • Hast du processAnnotations aufgerufen?

    http://xstream.codehaus.org/annotations-tutorial.html



  • Dasd schrieb:

    Hast du processAnnotations aufgerufen?

    oh man! Ich glaub, ich habe vergessen, da neue Zeile für diese Klassen hinzuzufügen.
    Werd ich heute abend gleich mal checken.

    *kopf gegen die Wand schlag*



  • das war es tatsächlich!
    Danke für den Tip.


Anmelden zum Antworten