Bug in inheritance + callbacks?

From: Michael Gentry (mgentr..asslight.net)
Date: Tue Mar 30 2010 - 11:52:53 EDT

  • Next message: Andrus Adamchik: "Re: Bug in inheritance + callbacks?"

    OK, this is kind of a followup on the generated abstract class...

    I'm attempting to test using inheritance with an enum as the
    discriminator column and a callback. For my classes:

    Product (Abstract) with Book and Game inheriting from Product.

    Product contains an enum (ProductType) to discriminate between the two.

    Product's post-add callback I set to "initializeProductType" and
    Cayenne generated this in _Product.java:

        protected abstract void initializeProductType();

    I had to go into Product.java and change that class to be abstract (I
    don't want any instances of it created). I implemented
    initializeProductType() in Book.java and Game.java (my only subclasses
    thus far). At runtime, I get this exception:

    Exception in thread "main" java.lang.IllegalArgumentException: Class
    mrg.model.Product has no valid callback method 'initializeProductType'

    Of course, this exception message is entirely true: Product does not
    contain initializeProductType() because it is in the subclasses.

    Thoughts on if this is legitimate?

    Thanks,

    mrg

    PS. The callback method implementation is:..verride protected void
    initializeProductType() { setProductType(ProductType.BOOK); } (for
    Book, of course).



    This archive was generated by hypermail 2.0.0 : Tue Mar 30 2010 - 11:53:50 EDT