2012-04-03 6 views
2

jaxb-implでは、xmlメタデータから適切なJavaリフレクションデータにマップするために使用できるRuntimeTypeInfoSetオブジェクトを取得できます。 moxyに相当するものは何ですか?moxy:RuntimeTypeInfoSetに相当するもの

UPDATE:私の使用例は、要素名にマップされるプロパティを見つけることです。私はもちろん、Javaのリフレクションを使用してそれを行うことはできますが、面倒です。

答えて

2

注:私はEclipseLink JAXB (MOXy)の鉛とJAXB 2 (JSR-222)専門家のメンバーです。イントロスペクションするための手段を提供することは、そのクラスの目的は表示され

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

さ:

のEclipseLink JAXB(MOXY)は、以下のクラスに直接対応する必要はありません。特定のモデルのJAXBマッピングメタデータMOXyにこの機能を追加するために、次の拡張要求をオープンしました。

MOXYがメタデータを表現するためにカバーの下に保持しているネイティブオブジェクト(ProjectDescriptor、及びMapping)とが設定されます。あなたが探しているものを示すためにあなたの質問を拡大することができれば、私はそれを見つけるのを助けることができます。


UPDATE

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 
+0

は、詳細な回答ありがとうございます! – IttayD

関連する問題