2012-04-03 15 views
2

In jaxb-impl kann ich ein RuntimeTypeInfoSet-Objekt abrufen, mit dem aus den XML-Metadaten die entsprechenden Java-Reflektionsdaten zugeordnet werden können. Was ist das Äquivalent für Moxy?moxy: was entspricht RuntimeTypeInfoSet

UPDATE: mein Anwendungsfall ist das Finden einer Eigenschaft, die einem Elementnamen zugeordnet wird. Ich kann es natürlich tun, indem ich Java-Reflexion verwende, aber es ist umständlich.

Antwort

2

Hinweis: Ich bin die EclipseLink JAXB (MOXy) Leitung und Mitglied der JAXB 2 (JSR-222) Expertengruppe.

Eclipse JAXB (moxy) keine direkte Entsprechung zu der folgenden Klasse:

  • com.sun.xml.bind.v2.model.runtime.RuntimeTypeInfoSet

sie den Zweck dieser Klasse wird angezeigt wird, ein Mittel bereitzustellen, die introspect JAXB-Mapping-Metadaten für ein bestimmtes Modell. Ich habe die folgende Erweiterungsanforderung für das Hinzufügen dieser Funktion zu MOXy geöffnet.

gibt es nativer Objekte gesetzt (Project, Descriptor und Mapping) daß moxy auf unterhalb hält die Abdeckungen, die Metadaten zu repräsentieren. Wenn Sie Ihre Frage erweitern können, um anzugeben, wonach Sie suchen, kann ich Ihnen helfen, sie zu finden.


UPDATE

UPDATE: mein Anwendungsfall eine Eigenschaft ist, zu finden, die ein Element zuordnet Namen. Ich kann es natürlich tun, indem ich Java-Reflexion verwende, aber es ist umständlich.

Ich entschuldige mich für die Verzögerung bei der Beantwortung. Ich hatte nicht bemerkt, dass Ihre Frage mit weiteren Informationen wurde aktualisiert:

Kunden

wir die Klasse verwenden werden und den Namen der Eigenschaft erhalten zum last-name Element entspricht.

package forum9992419; 

import javax.xml.bind.annotation.*; 

@XmlRootElement 
public class Customer { 

    private String firstName; 
    private String lastName; 

    @XmlElement(name="first-name") 
    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    @XmlElement(name="last-name") 
    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

} 

Demo

package forum9992419; 

import javax.xml.bind.JAXBContext; 

import org.eclipse.persistence.descriptors.ClassDescriptor; 
import org.eclipse.persistence.internal.sessions.AbstractSession; 
import org.eclipse.persistence.jaxb.JAXBHelper; 
import org.eclipse.persistence.mappings.DatabaseMapping; 
import org.eclipse.persistence.oxm.XMLField; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     JAXBContext jc = JAXBContext.newInstance(Customer.class); 

     AbstractSession session = JAXBHelper.getJAXBContext(jc).getXMLContext().getSession(Customer.class); 
     ClassDescriptor descriptor = session.getClassDescriptor(Customer.class); 
     XMLField xmlField = new XMLField("last-name/text()"); 
     DatabaseMapping mapping = descriptor.getObjectBuilder().getMappingForField(xmlField); 
     System.out.println(mapping.getAttributeName()); 
    } 

} 

Ausgabe

lastName 
+0

Vielen Dank für die ausführliche Antwort! – IttayD