You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Не знаю, баг это или фича, но мне очень не
нравится, что SnakeYAML
вмешивается во внутреннюю логику
сущностей.
Допустим есть класс:
<code>
class Entity {
private int id;
public Entity setId( int id ) {
this.id = id;
return this;
}
}
</code>
Если написать фикстуры и попытаться
синтезировать объект для данной
сущности, мы получим ошибку о том, что поле
`id` не было найдено. В тоже
время при возвращаемом *setId* типе *void* - всё
работает замечательно.
Original issue reported on code.google.com by LoRd1990 on 20 Jan 2010 at 2:25
The text was updated successfully, but these errors were encountered:
Question:
SnakeYAML does not work properly with the above class.
This is because setter returns an object instead of void.
==============================
Answer:
this is not a SnakeYAML issue. This class violates the JavaBean spec.
I can imagine this was possibly desired by someone to implement a "chaining"
style of
coding, but this is no longer a correct JavaBean. The JavaBean spec requires
that the
return type of set* functions be 'void', and various tools and frameworks
enforce
this requirement. (XmlEncoder for instance)
If a chaining-style setter is desired, I'd recommend making this a separate
method on
the bean rather than replacing the standard setter.
Original comment by py4fun@gmail.com on 20 Jan 2010 at 3:06
py4fun is correct and naming things in a way spec says gives you (almost) what
you want out of the box.
But if you still need this one to work you may try to create corresponding
BeanInfo class and provide correct
PropertyDescriptor for the id giving setId as a setter name.
so it will be EntityBeanInfo in the same package as Entity or you have to set
up Introspector BeanInfo paths and
so on.
(consult JavaBeans spec. 8 Introspection)
Original comment by alexande...@gmail.com on 20 Jan 2010 at 7:37
Original issue reported on code.google.com by
LoRd1990
on 20 Jan 2010 at 2:25The text was updated successfully, but these errors were encountered: