XStream пропускает отсутствующих клиентов в EnumMap - PullRequest
0 голосов
/ 14 марта 2019

Я создаю XML-структуры с помощью XSource с использованием новой версии программного обеспечения.Затем я пытаюсь проанализировать сгенерированную структуру в более старой версии программного обеспечения.структура XML похожа на

<entry>
  <key>CUSTOMER</key>
  <value>test_dataset_2</value>
</entry>
<entry>
  <key>RELEASE</key>
  <value>1.010</value>
</entry>
<entry>
  <key>CREATION_DATE</key>
  <value>1552553419581</value>
</entry>
<entry>
  <key>EXPIRATION_DATE</key>
  <value>1553727600000</value>
</entry>

, ключевые значения хранятся в EnumMap.класс TestObject имеет запись

public EnumMap<KeyEntry, String> map = new EnumMap<KeyEntry, String>(KeyEntry.class);

KeyEntry - это простое перечисление.


Мы добавили запись в KeyEntry в новой версии программного обеспечения.Таким образом, выходной XML имеет одну дополнительную пару ключ / значение.Когда старое программное обеспечение анализирует его с помощью XStream, оно выдает ошибку, поскольку один из ключей (CUSTOMER) принадлежит новой версии программного обеспечения.Есть ли способ позволить XStream пропускать те ключи, которые есть в XML, но отсутствуют в ENUM?что-то вроде предупреждения, а не сбоя, потому что мы закрываем старое программное обеспечение и не хотим обновлять старые перечисления при изменении структуры XML.Мы все еще используем XStream в более новой версии.это ошибка:

com.thoughtworks.xstream.converters.ConversionException: 
---- Debugging information ----
cause-exception     : java.lang.IllegalArgumentException
cause-message       : No enum constant com.my-package.TestObject.KeyEntry.CUSTOMER
class               : com.my-package.TestObject$KeyEntry
required-type       : com.my-package.TestObject$KeyEntry
converter-type      : com.thoughtworks.xstream.converters.enums.EnumConverter
path                : /test-object/map/entry[13]/key
line number         : 52
class[1]            : java.util.EnumMap
converter-type[1]   : com.thoughtworks.xstream.converters.enums.EnumMapConverter
class[2]            : com.my-package.TestObject
converter-type[2]   : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
version             : 1.4.10
-------------------------------
...