Hi guys,
having a bit of trouble overriding my services with T5.2 (build
from a few
days ago ... can't use 5.1 due to some bugs that got fixed in 5.2).
I have
AppModule and a submodule:
@SubModule( { ServicesModule.class })
public class AppModule {
public static void bind(ServiceBinder binder) {
// this works if ISiteService is not bound in
ServicesModule
// binder.bind(ISiteService.class,
MySiteService.class);
}
public static void contributeServiceOverride(
MappedConfiguration<Class<?>, Object>
configuration)
{
// this fails with exception below
configuration.addInstance(ISiteService.class,
MySiteService.class);
}
}
On startup I get an error below about recursive loading of
'ServiceOverride'. MySiteService has a long chain of dependencies,
but
nothing is recursive in it. If instead I override with a mock
service with
no dependencies, things work. So the culprit here is not the custom
services, but rather Tapestry 'ServiceOverride'. Any idea what's
wrong?
Thanks,
Andrus
[02/Apr/2010:13:50:03] main ERROR Registry: Construction of service
'ServiceOverride' has failed due to recursion: the service depends
on itself
in some way. Please check
org.apache.tapestry5.ioc.internal.services.ServiceOverrideImpl(Map)
(at
ServiceOverrideImpl.java:31) via
org
.apache
.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
TapestryIOCModule.java:46) for references to another service that
is itself
dependent on service 'ServiceOverride'.
[02/Apr/2010:13:50:03] main ERROR Registry: Operations trace:
[02/Apr/2010:13:50:03] main ERROR Registry: [ 1] Realizing service
ServletApplicationInitializer
[02/Apr/2010:13:50:03] main ERROR Registry: [ 2] Invoking
org
.apache
.tapestry5
.services.TapestryModule.buildServletApplicationInitializer(Logger,
List, ApplicationInitializer) (at TapestryModule.java:1435)
[02/Apr/2010:13:50:03] main ERROR Registry: [ 3] Constructing
module class
org.apache.tapestry5.services.TapestryModule
[02/Apr/2010:13:50:03] main ERROR Registry: [ 4] Determining
injection
value for parameter #1
(org.apache.tapestry5.ioc.services.PipelineBuilder)
[02/Apr/2010:13:50:03] main ERROR Registry: [ 5] Resolving object
of type
org.apache.tapestry5.ioc.services.PipelineBuilder using
MasterObjectProvider
[02/Apr/2010:13:50:03] main ERROR Registry: [ 6] Realizing service
ServiceOverride
[02/Apr/2010:13:50:03] main ERROR Registry: [ 7] Invoking
org.apache.tapestry5.ioc.internal.services.ServiceOverrideImpl(Map)
(at
ServiceOverrideImpl.java:31) via
org
.apache
.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
TapestryIOCModule.java:46)
[02/Apr/2010:13:50:03] main ERROR Registry: [ 8] Determining
injection
value for parameter #1 (java.util.Map)
[02/Apr/2010:13:50:03] main ERROR Registry: [ 9] Collecting mapped
configuration for service ServiceOverride
[02/Apr/2010:13:50:03] main ERROR Registry: [10] Invoking method
xxxxx
.services.AppModule.contributeServiceOverride(MappedConfiguration)
(at
AppModule.java:25).
[02/Apr/2010:13:50:03] main ERROR Registry: [11] Autobuilding
instance of
class xxxxx.services.site.MySiteService
[02/Apr/2010:13:50:03] main ERROR Registry: [12] Determining
injection
value for parameter #1 (xxxx.service.db.IDataService)
[02/Apr/2010:13:50:03] main ERROR Registry: [13] Resolving object
of type
xxxx.service.db.IDataService using MasterObjectProvider
[02/Apr/2010:13:50:03] main ERROR Registry: [14] Realizing service
ServiceOverride
[02/Apr/2010:13:50:03] main ERROR ServiceOverride: Construction of
service
ServiceOverride failed: Error invoking constructor
org.apache.tapestry5.ioc.internal.services.ServiceOverrideImpl(Map)
(at
ServiceOverrideImpl.java:31) via
org
.apache
.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
TapestryIOCModule.java:46) (for service 'ServiceOverride'): Error
invoking
service contribution method
xxxxx
.services.AppModule.contributeServiceOverride(MappedConfiguration):
Error invoking constructor
xxxxx.services.site.MySiteService(IDataService)
(at MySiteService.java:16) (for service 'ServiceOverride'): Exception
constructing service 'ServiceOverride': Construction of service
'ServiceOverride' has failed due to recursion: the service depends
on itself
in some way. Please check
org.apache.tapestry5.ioc.internal.services.ServiceOverrideImpl(Map)
(at
ServiceOverrideImpl.java:31) via
org
.apache
.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
TapestryIOCModule.java:46) for references to another service that
is itself
dependent on service 'ServiceOverride'.
...
java.lang.IllegalStateException: Construction of service
'ServiceOverride'
has failed due to recursion: the service depends on itself in some
way.
Please check
org.apache.tapestry5.ioc.internal.services.ServiceOverrideImpl(Map)
(at
ServiceOverrideImpl.java:31) via
org
.apache
.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
TapestryIOCModule.java:46) for references to another service that
is itself
dependent on service 'ServiceOverride'.
at
org
.apache
.tapestry5
.ioc
.internal
.RecursiveServiceCreationCheckWrapper
.createObject(RecursiveServiceCreationCheckWrapper.java:52)
at
org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator
$1.invoke(OperationTrackingObjectCreator.java:45)
at
org
.apache
.tapestry5
.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:
68)
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org