Marschall/Un-Marschall-Liste Objekten in Jersey JAX-RS mit JAXB

Guten Morgen. Heute morgen, als ich werde durch Jersey-Entity-Provider MessageBodyReaders und MessageBodyWriters stieß ich auf Folgendes problem.

Ich schreiben wollen, eine Ressource-Methode und der client gibt eine Liste benutzerdefinierter Objekte und Medien-Typ ist application/xml. Also ich möchte mit JAXB (ich bin neu auf JAXB). Ich war in der Lage, dies zu erreichen durch das schreiben meiner eigenen erweiterten MessageBodyReader und MessageBodyWriter. Aber ich fürchte, so wie ich bin folgenden. Schauen Sie sich einfach die Weise, die ich umgesetzt:

Ressource-Methode:

@Path("productlist/xml")
@GET
public RetObjects getProductsXml(){
    List<Product> pList = new ArrayList<Product>();
    pList.add(new Product("1","Dell latitude E6000",2900,500));
    pList.add(new Product("2","Xperia Z2",549,400));
    RetObjects obj = new RetObjects();
    obj.setObject(pList);
    return obj;
}

Meine benutzerdefinierte Objekte:

@Entity
@Table (name="PRODUCT")
@XmlRootElement(name="product")
public class Product {

    @Id
    @Column(name = "CODE")
    private String code;
    ...
    //rest of the fields, constructors, getters and setters
 }

Objekt umschließt, die meine Liste der benutzerdefinierten Objekt:

 @XmlRootElement(name = "products")
 @XmlAccessorType (XmlAccessType.FIELD)
 public class RetObjects {

     @XmlElement(name = "product")
     private List<Product> object = null;

     public List<Product> getObject() {
         return object;
     }

     public void setObject(List<Product> object) {
         this.object = object;
     }
 }

MessageBodyReader/Writer sind gerade nach vorne nur mit Jaxb unmarshaller und marshaller über die RetObjects Objekt.

Mit dieser Implementierung ist es wunderbar funktioniert, wie erwartet und ich bin in der Lage zu Holen die RetObjects einwickeln der Liste der Produkte, die perfekt an den client.

Hier meine Frage ist, anstelle von Geschenkpapier auf meiner Liste der Produkte, die in einem intermediären Objekt RetObjects in meinem Fall, konnte ich nicht marshal-und unmarshal-Liste der Produkte-Objekt direkt. Wenn ich schreiben möchte, ein weiterer service, gibt Liste der Aufträge, die ich brauche, um wickeln Sie diesen mit einer zwischen-Objekt. Was ist der richtige Ansatz, dies zu erreichen? Wie könnte ich dies tun, ohne zwischen Objekten?

InformationsquelleAutor HJK | 2014-12-25
Schreibe einen Kommentar