Hi Bjello,

I haven't used the tapestry5-cayenne module, but for initializing some
Cayenne (and non-Cayenne) things at application startup, you can use
Tapestry's @Startup annotation in your application module:

http://tapestry.apache.org/registry-startup.html

If the tapestry5-cayenne module provides services, perhaps they are even
passable into your startup methods.  If not, I suppose you could still
initialize the Cayenne runtime there.

You mentioned that there should only be one instance of ServerRuntime.  You
can create multiple instances, but no need to do it for the same
configuration.  However, if you have multiple models (in the past this
would be multiple DataMaps in a single Cayenne model), then you'll need to
create a ServerRuntime for each.

mrg



On Fri, Nov 23, 2012 at 6:22 AM, <devnull2...@gmx.de> wrote:

> > Yeah this is a familiar problem, which essentially comes down to the fact
> > that while Cayenne has all the info for change tracking, the API to use
> it
> > is somewhat complex. In Cayenne 3.1 we provide a better way (that we
> still
> > need to document), based on lifecycle events and a few extensions in
> > cayenne-lifecycle.jar. So here is how you might approach it:
>
> Thank you for your example. I've seen lifecycle mentioned somewhere before
> but I didn't know how to use it. Well, I still don't know how to get these
> two lines into my tapestry app where everything is inversion of control:
>
> >
> runtime.getDataDomain().getEntityResolver().getCallbackRegistry().addListener(new
> LastModifiedListener());
> > runtime.getDataDomain().addFilter(new ChangeSetFilter());
>
> I use tapestr5-cayenne so I simply put a dependency in my pom.xml and use
> it like e. g. @Inject ObjectContextProvider provider
>
> The only class in the TapestryCayenneModule that uses a private field
> ServerRuntime is DataContextProviderImpl (implements
> ObjectContextProvider), a service that gets not only bound but also
> overridden in TapestryCayenneModule, so that I can't override it in my own
> AppModule.java (where I could add those two lines from your example). :(
>
> Just to make sure I'm not mistaken: runtime in your example is
> ServerRuntime and there should be only one runtime? I need to get the
> runtime that is used in the TapestryCayenneModule where my Cayenne contexts
> are coming from?
>
> I also tried to use the Cayenne Modeler to add the listener, but it's only
> possible on the object entity level. Adding an entity-listener to the
> map.xml produced the warning that DataMap listeners are no longer
> supported. It would've solved only half of my problem anyway cause I need
> to add the filter, too.
>
> Guess I need to ask some questions on the tapestry mailing list next ... ;)
>
> BTW: Where could I find the schema for the map?
> The link on the cayenne website doesn't work:
> http://cayenne.apache.org/schema/3.0/modelMap.html
> --> Not Found
> Same for http://cayenne.apache.org/schema/3.0/modelMap.xsd
>
> -Bjello
>
>
>
>

Reply via email to