On Mon 2013-10-21 17:17, Gunnar Morling wrote:
> 2013/10/21 Emmanuel Bernard <emman...@hibernate.org>
> So he changed the implementation of Option / UniqueOption to behave like I
> > previously explained for generic options but to properly return
> > ShowSql.equals(ShowSql.FALSE) == false. To do so, he removed
> > getOptionIdentity() and manually ask (Unique)Option implementors to
> > implement equals. In his example equals for ShowSql would be based on the
> > value.
> >
> 
> That's not quite right, maybe this already is the source of our
> disagreement. I only removed the final implementation of
> UniqueOption#getOptionIdentifier() (which was based on the specific
> sub-type of UniqueOption). Option#getOptionIdentifier() is still in place.
> 
> So an option implementor has to implement getOptionIdentifier() in both
> cases, for unique and non-unique options. He doesn't have to implement
> equals() himself (which is implemented in the Option super-class and takes
> into account the specific option type and the result of
> getOptionIdentifier()).
> 
> >
> > So we are at an impasse.
> >
> > I hate his approach as the equals behavior is inconsistent between generic
> > options and unique options. It's very confusing for an Option implementor
> > to figure out what equals should do. And ice on the cake, the implementor
> > has to implement equals / hashCode instead of delegating that to the
> > superclass: more code, more opportunities to screw it up.
> >
> 
> As outlined above an option implementor only needs to provide
> getOptionIdentifier(). The only difference to the situation before is that
> he needs to provide that method for unique option types now, too.
> 
> Does this alleviate your concerns about the proposed change?

This removes the argument against the overhead of rewriting equals.
Strange that I did remember seeing actual equals reimplementations.
Anyways, no that does not solve my fundamental concern that it remains
inconsistent how you implement getOptionIdentifier between unique and
generic options.

Emmanuel
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to