Snakeyaml: свойства с расширенными картами - PullRequest
0 голосов
/ 02 марта 2012

Это про 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 чудесный вариант для дампа такого рода вещей?

Спасибо.

1 Ответ

0 голосов
/ 03 марта 2012

Вы можете следить за прогрессом в проекте SnakeYAML

...