> @Startup
> public void init(ObjectContextProvider provider) { ... }

I tried it this way but sadly I get the same exception on startup as before.

> (Don't mix DataContext with ObjectContextProvider.)

"DataContext" in my example was just the id of the service.

>From TapestryCayenneModule:
public static void bind(ServiceBinder binder) 
{
    binder.bind(ObjectContextProvider.class, DataContextProviderImpl.class)
        .withMarker(Cayenne.class).withId("DataContext");
}                                  ^^^^^^^^^^^^^^^^^^^^^

I'd tried it several ways
@InjectService("ObjectContextProvider") ObjectContextProvider provider
    --> no service with this name

@InjectService("DataContext") ObjectContextProvider provider
--> TapestryIOCModule.RegistryStartup Construction of service RegistryStartup 
failed: org.apache.tapestry5.ioc.internal.OperationException

@Inject ObjectContextProvider provider
--> same exception as above

ObjectContextProvider provider
--> same exception as above

On the tapestry web page you linked they say
"RegistryStartup occurs after eager loaded services are instantiated."
I guess this means it occurs before non-eager services are instantiated and 
ObjectContextProvider isn't eager loaded. So I'm afraid it's just not available 
yet.


> > public void init() {
> >     ServerRuntime runtime = new ServerRuntime("cayenne.xml");
> > 
> runtime.getDataDomain().getEntityResolver().getCallbackRegistry().addListener(new
> > LastModifiedListener());
> >     runtime.getDataDomain().addFilter(new ChangeSetFilter());
> > }
> >

This way there are no exceptions on startup. I put in some logging and the size 
of runtime.getDataDomain().getFilters() in the init method is 1 (no surprise). 
I couldn't find a method to get the number of listeners.

But the lastmodified date isn't set when I edit something. So I added some 
logging output in the insertAudit(DataObject object) of the 
LastModifiedListener and in the page class in onSuccessFromEditForm(). The 
insertAudit method never logs anything, i. e. it doesn't get called. And in the 
page class dataContext.getParentDataDomain().getFilters().size() is 0.
Too bad.


Reply via email to