Примечание: Я EclipseLink JAXB (MOXy) и являюсь членом JAXB 2 (JSR-222 ) экспертная группа.
EclipseLink JAXB (MOXy) не имеет прямого эквивалента следующему классу:
com.sun.xml.bind.v2.model.runtime.RuntimeTypeInfoSet
Похоже, целью этого класса является предоставление средства для анализа метаданных отображения JAXB для конкретной модели. Я открыл следующий запрос на добавление этой функции в MOXy.
Существует набор нативных объектов (Project
, Descriptor
и Mapping
), которые MOXy держит под крышками для представления метаданных. Если вы можете расширить свой вопрос, чтобы указать, что вы ищете, я могу помочь вам найти его.
<Ч />
UPDATE
ОБНОВЛЕНИЕ: мой вариант использования находит свойство, которое отображается на элемент
название. Я, конечно, могу сделать это с помощью отражения Java, но это
громоздкий.
Прошу прощения за задержку с ответом. Я не заметил, что ваш вопрос был обновлен с дополнительной информацией:
Клиент
Мы будем использовать класс и получим имя свойства, соответствующее элементу last-name
.
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;
}
}
Демо
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());
}
}
выход
lastName