jaxb XML, не выдает исключение, когда целочисленное значение XML> Максимальное значение Java Long - PullRequest
0 голосов
/ 23 мая 2018

Скажем, я пытаюсь разархивировать XML-файл с целочисленным полем (xs: integer): 13131546456131653154156415616

Это значение> максимального значения Java Long.

Я надеялся получитьи поймать исключение, когда Jaxb попытался разархивировать его.

Вместо этого нет исключения, и объект моего pojo.Value имеет значение null.

Есть ли способ обнаружить, когда это происходити записать его?

Я пытался использовать vec, но ничего не получилось (пустой список):

    ValidationEventCollector vec = new ValidationEventCollector();

    JAXBContext jaxbContext = JAXBContext.newInstance(MyPojo.class);
    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
    jaxbUnmarshaller.setEventHandler(vec);
    System.out.println(vec.getEvents().length);
   MyPojo model = (MyPojo) jaxbUnmarshaller.unmarshal(new FileInputStream(file));

1 Ответ

0 голосов
/ 23 мая 2018

xs:integer не ограничен, это могут быть значения любой длины.
Сравнимый тип Java: BigInteger.

xs:int ограничено:

maxInclusive = 2147483647
minInclusive = -2147483648

И xs:long ограничено:

maxInclusive = 9223372036854775807
minInclusive = -9223372036854775808

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

...