JavaTM Platform
Standard Ed. 6

javax.xml.bind.annotation.adapters
클래스 XmlAdapter<ValueType, BoundType>

java.lang.Object 
  상위를 확장 javax.xml.bind.annotation.adapters.XmlAdapter<ValueType, BoundType>
형태 파라미터:
BoundType - JAXB 가 처리 방법을 모르는 형태. ValueType 를 개입시켜 이 형태를 메모리상의 표현으로서 사용할 수 있도록(듯이) 어댑터는 기술되는
ValueType - JAXB 가 처음부터 처리 방법을 알고 있는 형태
직계의 기존의 서브 클래스:
CollapsedStringAdapter , HexBinaryAdapter , NormalizedStringAdapter


public abstract class XmlAdapter<ValueType, BoundType>
extends Object

Java 형을 커스텀 정렬화에 적응시킵니다.

사용법:

일부의 Java 형, 예를 들어,HashMap 또는 그 외의 비 JavaBean 클래스 등은, 그대로는 XML 표현에 맵 되지 않습니다. 반대로, XML 표현은 Java 형에 맵 가능합니다만, 어플리케이션이 다른 Java 형을 사용해 그 XML 표현에 액세스 하는 것을 선택하는 경우도 있습니다. 예를 들어, schema로부터 Java 에의 바인딩 규칙에서는, 디폴트로 xs:dateTime 가 XmlGregorianCalendar 에 바인드 됩니다. 그러나, 어플리케이션이 xs:dateTime 를 커스텀형, 예를 들어, MyXmlGregorianCalendar 에 바인드 하는 것을 바라는 경우도 있습니다. 어느 경우에서도, 어플리케이션이 XML 컨텐츠에 액세스 할 경우에 사용하는 「바운드형」이라고, XML 표현으로 맵 되는 「치 형」의 사이에 불일치가 존재합니다.

이 abstract 클래스는, 바운드형을 치 형에, 또는 그 반대로 적응시키기 위한 메소드를 정의하고 있습니다. 정렬화 및 비정렬화의 실행중에, 이러한 메소드는 JAXB 바인딩 시스템에 의해 불려 갑니다.

그 때문에, 어댑터의 기술은 다음의 순서를 포함합니다.

예: HashMap 의 커스터마이즈 매핑

다음의 예는,@XmlAdapter@XmlJavaTypeAdapter 를 사용해 HashMap 의 매핑을 커스터마이즈 하는 방법을 나타냅니다.

스텝 1: HashMap 에 대한 적절한 XML 표현을 결정합니다.

     <hashmap>
         <entry key="id123">this is a value</entry>
         <entry key="id312">this is another value</entry>
         ...
       </hashmap>  
 

스텝 2: 상기의 XML 표현이 따라야 할 schema 정의를 결정합니다.

     
     <xs:complexType name="myHashMapType">
       <xs:sequence>
         <xs:element name="entry" type="myHashMapEntryType"
                        minOccurs = "0" maxOccurs="unbounded"/>
       </xs:sequence>
     </xs:complexType>

     <xs:complexType name="myHashMapEntryType">
       <xs:simpleContent>
         <xs:extension base="xs:string">
           <xs:attribute name="key" type="xs:int"/>
         </xs:extension>
       </xs:simpleContent>
     </xs:complexType>

 

스텝 3: 상기의 schema 정의를 생성 가능한 치 형을 기술합니다.

     public class MyHashMapType {
         List<MyHashMapEntryType> entry;
     }

     public class MyHashMapEntryType {
         @XmlAttribute
         public Integer key; 

         @XmlValue
         public String value;
     }
 

스텝 4: 치 형 MyHashMapType 를, 바운드형 HashMap 에 적응시키는 어댑터를 기술합니다. 이것은 어플리케이션에 의해 사용됩니다.

     public final class MyHashMapAdapter extends
                        XmlAdapter<HashMap, MyHashMapType> { ... }
      
 

스텝 5: 어댑터를 사용합니다.

     public class Foo {
         @XmlJavaTypeAdapter(MyHashMapAdapter.class)
         HashMap hashmap;
         ...
     }
 
상기의 코드 fragment는, 다음의 schema에 맵 합니다.
     <xs:complexType name="Foo">
       <xs:sequence>
         <xs:element name="hashmap" type="myHashMapType"
       </xs:sequence>
     </xs:complexType>
 

도입된 버젼:
JAXB 2.0
관련 항목:
XmlJavaTypeAdapter

생성자 의 개요
protected XmlAdapter ()
          상속 클래스용의 아무것도 실행하지 않는 생성자 입니다.
 
메소드의 개요
abstract  ValueType marshal (BoundType  v)
          바운드형을 치 형으로 변환합니다.
abstract  BoundType unmarshal (ValueType  v)
          치 형을 바운드형으로 변환합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

XmlAdapter

protected XmlAdapter()
상속 클래스용의 아무것도 실행하지 않는 생성자 입니다.

메소드의 상세

unmarshal

public abstract BoundType  unmarshal(ValueType  v)
                             throws Exception 
치 형을 바운드형으로 변환합니다.

파라미터:
v - 변환하는 값. null 도 가능
예외:
Exception - 변환중에 에러가 발생했을 경우. 호출측은 ValidationEventHandler 를 개입시켜, 이 에러를 사용자에게 보고한다

marshal

public abstract ValueType  marshal(BoundType  v)
                           throws Exception 
바운드형을 치 형으로 변환합니다.

파라미터:
v - 변환하는 값. null 도 가능
예외:
Exception - 변환중에 에러가 발생했을 경우. 호출측은 ValidationEventHandler 를 개입시켜, 이 에러를 사용자에게 보고한다

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.