When designing DI (and specifically filling in the standard DI modules), I always asked myself a question whether this or that piece is a part of "model" or "runtime services". Before DI was in place, our model was in a way fulfilling DI role, so we'd stick something like a JGroups port in it, which was completely inflexible of course... Now all the runtime decisions about this or that "service" can be deferred till runtime, i.e. *after* modeling, which is good and flexible.
I think with PkGenerator we have a similar case. We allow the model to define a few standard strategies, but then override (or implement them) depending on deployment conditions if needed. Very similar to how DI handles DbAdapter now. Andrus On Jul 6, 2012, at 5:31 PM, Michael Gentry wrote: > I think it would be nice if alternative PK generators could be > specified in the Modeler. > > mrg > > On Fri, Jul 6, 2012 at 2:57 AM, Andrus Adamchik <and...@objectstyle.org> > wrote: >> Per this document Cayenne supports various PK generation strategies with >> "Meaningful Primary Key" being user-defined, and the rest generated by the >> framework: >> >> http://cayenne.apache.org/doc/primary-key-generation.html >> >> PkGenerator is an existing interface that implements these strategies. The >> task is about making it managed by Cayenne dependency injection (DI) >> container. A similar task done in 3.1 was switching DbAdapter to DI. >> Currently DbAdapter owns PkGenerator. The task is about breaking this >> dependency and making PkGenerator directly injectable where it is needed. >> >> BTW this may sound simple, but is actually a fairly deep design task. So if >> you feel like you need to learn Cayenne runtime before taking on it, I'd >> recommend maybe other tasks from my earlier list. But of course you are >> welcome to take on this one right away :) >> >> Andrus >> >> >> On Jul 5, 2012, at 5:59 PM, Eshan Sudharaka wrote: >> >>> Or is it about adding the primary key functionality like auto increment >>> which we can see in JPA ? (generating the values of the primary keys for >>> each rows of a table) >>> On Thu, Jul 5, 2012 at 8:00 PM, Eshan Sudharaka <esudhar...@gmail.com>wrote: >>> >>>> Hi, >>>> I am interested in this task and need some more information regarding >>>> this. I have a basic question regarding this PkGenerator. >>>> >>>> As i see DbEntity contains a collection of DbAttributes for primary key >>>> construction and I think this collection is initialized when we configure >>>> primary keys through the cayenne modeler. So It is bit unclear me to >>>> understand the requirement of having a Pkgenerator while is is the users >>>> responsibility to set the primary key for a DbEntity. It would be great if >>>> you can explain to logic behind this. >>>> >>>> -- >>>> *~Thanks & Regards~* >>>> *** >>>> * >>>> Eshan >>>> >>>> >>> >>> >>> -- >>> *~Thanks & Regards~* >>> *** >>> * >>> P.A.Eshan Sudharaka >>> Dept of Computer Science and Engineering >>> University of Moratuwa >>> Sri Lanka >>> http://esudharaka.blogspot.com/ >> >