Это про snakeyaml 1.11 и yaml.
Когда я сбрасываю бин со свойством с расширенной универсальной картой, snakeyaml вылетает.
Вот расширенная общая карта:
public static class MyStupidHash<T> extends java.util.HashMap<String, T>
{
}
Вот боб со свойствами, которые snakeyam не может сбросить:
public class FactoryOfStupid
{
public MyStupidHash<Integer> getStupid()
{
return new MyStupidHash<Integer>();
}
}
Когда я выгружаю объект FactoryOfStupid с помощью snakeyaml, я получаю:
java.lang.ArrayIndexOutOfBoundsException: 1
at org.yaml.snakeyaml.representer.Representer.checkGlobalTag(Representer.java:204)
at org.yaml.snakeyaml.representer.Representer.representJavaBeanProperty(Representer.java:144)
at org.yaml.snakeyaml.representer.Representer.representJavaBean(Representer.java:83)
at org.yaml.snakeyaml.representer.Representer$RepresentJavaBean.representData(Representer.java:49)
at org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:109)
at org.yaml.snakeyaml.representer.BaseRepresenter.represent(BaseRepresenter.java:65)
at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:270)
at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:261)
at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:233)
at org.yaml.snakeyaml.Yaml.dump(Yaml.java:209)
Вот весь тест джунта:
/*
*/
package unitaire;
import java.util.HashMap;
import org.junit.*;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
/**
*
* @author herve
*/
public class YamlRepresenterUnitTest
{
public YamlRepresenterUnitTest()
{
}
@BeforeClass
public static void setUpClass() throws Exception
{
}
@AfterClass
public static void tearDownClass() throws Exception
{
}
@Before
public void setUp()
{
}
@After
public void tearDown()
{
}
@Test
public void onMyStupidHash() throws Exception
{
MyStupidHash<Integer> shash;
Yaml yaml;
String txt;
DumperOptions options;
FactoryOfStupid fact;
fact = new FactoryOfStupid();
shash = fact.getStupid();
shash.put("toto", new Integer(10));
options = new DumperOptions();
options.setAllowReadOnlyProperties(true);
yaml = new Yaml(options);
txt = yaml.dump(fact);
System.out.println("txt="+txt);
}
public static class MyStupidHash<T> extends java.util.HashMap<String, T>
{
}
public class FactoryOfStupid
{
public MyStupidHash<Integer> getStupid()
{
return new MyStupidHash<Integer>();
}
}
}
Есть ли в snakeyaml чудесный вариант для дампа такого рода вещей?
Спасибо.