Ok, we'll need to re-test this case, and implement the missing registration API.
On Aug 3, 2011, at 9:09 PM, Joseph Senecal wrote: > Andrus, > > Yes, I was using a per DataMap listener. > > I'll try using individual class listeners for the prototype and see how that > works. > > These listeners are really part of the basic operation of the DB interface, > so they are common to all programs using the database. Currently I'm > considering having the template generate the listener methods in each class, > along with code that will install the listener for that class the first time > the class is referenced (probably using a static initializer). This will > allow the listener methods to be customized for each class instead of having > to check the model. Annotations will help there. > > Joe > > On Aug 3, 2011, at 10:50 AM, Andrus Adamchik wrote: > >> Hi Joe, >> >> On Aug 3, 2011, at 10:29 AM, Joseph Senecal wrote: >> >>> I'm trying to configure a single listener object to listen to a couple of >>> events for all objects. This is to update modCounts and lastModTimes just >>> before the commit. >>> >>> The documentation says this is configured in the Cayenne modeler, but >>> doesn't explain how. I found how to specify a class and methods, but it >>> doesn't seem to be getting called. >> >> This is odd. This certainly works for me. Here is an example from one of my >> map.xml files (created by the Modeler) : >> >> This part is a listener within <obj-enntity> tags: >> >> <entity-listener class="com.foo.listener.MyListener"> >> <post-persist method-name="objectPostPersistCallback"/> >> </entity-listener> >> >> This part is callbacks on persistent objects themselves: >> >> <post-add method-name="onPostAdd"/> >> <pre-update method-name="onPreUpdate"/> >> >> These are per-entity callbacks/listeners. Are you setting a listener per >> DataMap? (I personally haven't used "global" listeners, but those should >> work too). Could you confirm - we'll re-test this case then. >> >>> I can see how to do it programmatically, but is there a cleaner solution >>> that I'm missing? >> >> Personally I am moving to setting everything programmatically, as it allows >> me to have different listeners for the same shared entities in different >> Java projects. So my preferred method is the latest 3.1M2 API based on >> annotations: >> >> runtime.getChannel().getEntityResolver().getCallbackRegistry().addListener(listener) >> >> But again - this is for per-entity listeners. Not per-DataMap. (Which >> reminds me - we need to support this flavor in per-DataMap case). >> >> Cheers, >> Andrus > >
