2017-02-07 4 views
0

Использование jaxb/xkc для генерации набора классов, относящихся к моему xsd.Недопустимое значение Enum JAXB - преобразование в null, а не исключение исключения

В частности у меня есть проблема со следующим определенным перечислением (из XSD)

<xs:simpleType name="TEST"> 
    <xs:annotation> 
     <xs:documentation> 
      BLAH 
     </xs:documentation> 
    </xs:annotation> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="FOO"/> 
     <xs:enumeration value="BAR"/> 
    </xs:restriction> 
</xs:simpleType>  

Теперь, если я прохожу C в качестве значения можно было бы ожидать, что это не из-за следующий сгенерированный код

@XmlType(name = "TEST") 
@XmlEnum 
public enum TEST{ 

    @XmlEnumValue("FOO") 
    FOO("FOO"), 
    @XmlEnumValue("BAR") 
    BAR("BAR"); 
    private final String value; 

    TEST(String v) { 
     value = v; 
    } 

    public String value() { 
     return value; 
    } 

    public static TEST fromValue(String v) { 
     for (TEST test: TEST.values()) { 
      if (test.value.equals(v)) { 
       return test; 
      } 
     } 
     throw new IllegalArgumentException(v); 
    } 

} 

Теперь, на мой взгляд, это должно вызвать исключение, однако это не так. Вероятно, потому что метод fromValue, кажется, не называется нигде? Почему в этом случае он просто устанавливает значение null, и как я могу заставить его генерировать исключение?

Благодаря

ответ

0

Вы можете попробовать использовать валидатор для проверки вашей входной XML против схемы. fromValue метод может быть вызван в этом потоке. И вы получите исключение.

Пример проверки схемы: link1link2. Ссылка на документацию Unmarshaller: here.

Смежные вопросы