With simple bean with one Byte property, setializing fails with the following stacktrace:
org.ho.yaml.exception.ObjectCreationException: Error near line 0: Can't create object of type class java.lang.Byte using default constructor.
at org.ho.yaml.wrapper.AbstractWrapper.createObject(AbstractWrapper.java:59)
at org.ho.yaml.wrapper.AbstractWrapper.createPrototype(AbstractWrapper.java:95)
at org.ho.yaml.wrapper.DefaultBeanWrapper.keys(DefaultBeanWrapper.java:131)
at org.ho.yaml.YamlEncoder.traverseAndCountMap(YamlEncoder.java:155)
at org.ho.yaml.YamlEncoder.traverseAndCount(YamlEncoder.java:144)
at org.ho.yaml.YamlEncoder.traverseAndCountMap(YamlEncoder.java:158)
at org.ho.yaml.YamlEncoder.traverseAndCount(YamlEncoder.java:144)
at org.ho.yaml.YamlEncoder.writeObject(YamlEncoder.java:192)
at org.ho.yaml.YamlConfig.dump(YamlConfig.java:537)
at com.yjamldebug.Application.main(Application.java:17)
Caused by: org.ho.yaml.exception.ObjectCreationException: Error near line 0: Default constructor for class java.lang.Byte is not accessible.
at org.ho.yaml.wrapper.AbstractWrapper.createObject(AbstractWrapper.java:56)
at org.ho.yaml.wrapper.AbstractWrapper.createPrototype(AbstractWrapper.java:95)
at org.ho.yaml.wrapper.DefaultBeanWrapper.keys(DefaultBeanWrapper.java:131)
at org.ho.yaml.YamlEncoder.traverseAndCountMap(YamlEncoder.java:155)
at org.ho.yaml.YamlEncoder.traverseAndCount(YamlEncoder.java:144)
at org.ho.yaml.YamlEncoder.traverseAndCountMap(YamlEncoder.java:158)
at org.ho.yaml.YamlEncoder.traverseAndCount(YamlEncoder.java:144)
at org.ho.yaml.YamlEncoder.writeObject(YamlEncoder.java:192)
at org.ho.yaml.YamlConfig.dump(YamlConfig.java:537)
this can be easily solved by adding Byte.class to the isSimpleType(Class c) method of org.ho.yaml.ReflectionUtil
public static boolean isSimpleType(Class c) {
return c.isPrimitive() || c == String.class || c == Integer.class || c == Long.class || c == Short.class || c == Double.class || c == Float.class || c == Boolean.class || c == Character.class || c == Byte.class;
}
I am not sure if it has to be added on several other places where I've seen some primitive type wrapper's class objects declared. Anyway, the mentioned fix works for me here.