Contributing a service to the Alias service configuration fails if the service 
uses a non-standard scope, such as perthread
---------------------------------------------------------------------------------------------------------------------------

                 Key: TAPESTRY-1596
                 URL: https://issues.apache.org/jira/browse/TAPESTRY-1596
             Project: Tapestry
          Issue Type: Bug
          Components: tapestry-core, tapestry-ioc
    Affects Versions: 5.0.4
         Environment: 5.0.5-SNAPSHOT
            Reporter: Howard M. Lewis Ship
            Assignee: Howard M. Lewis Ship


The issue is that the ServiceLifecycleSource service is making indirect use of 
the Alias service for some of its dependencies.  Thus the Alias service must be 
fully instantiated for SLS to be instantiated, but when contributing a service 
to Alias, the SLS must be instantiated first, to provide the necessary proxy.  
Need to defer out the creation of the proxy.

Caused by: java.lang.RuntimeException: Error invoking service contribution 
method 
org.apache.tapestry.ioc.services.TapestryIOCModule.contributeServiceLifecycleSource(MappedConfiguration,
 ObjectLocator): Error invoking constructor 
org.apache.tapestry.ioc.internal.services.PerThreadServiceLifecycle(ThreadCleanupHub,
 ClassFactory) (at PerThreadServiceLifecycle.java:54) (for service 
'ServiceLifecycleSource'): Exception constructing service 'Alias': Construction 
of service 'Alias' has failed due to recursion: the service depends on itself 
in some way. Please check 
org.apache.tapestry.services.TapestryModule.build(Log, String, AliasManager, 
Collection) (at TapestryModule.java:248) for references to another service that 
is itself dependent on service 'Alias'.
        at 
org.apache.tapestry.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:112)
        at 
org.apache.tapestry.ioc.internal.ContributionDefImpl.contribute(ContributionDefImpl.java:73)
        at 
org.apache.tapestry.ioc.internal.RegistryImpl.addToMappedConfiguration(RegistryImpl.java:379)
        at 
org.apache.tapestry.ioc.internal.RegistryImpl.getMappedConfiguration(RegistryImpl.java:332)
        at 
org.apache.tapestry.ioc.internal.ServiceResourcesImpl.getMappedConfiguration(ServiceResourcesImpl.java:97)
        at 
org.apache.tapestry.ioc.internal.AbstractServiceCreator.addMappedConfigurationParameter(AbstractServiceCreator.java:160)

    public PerThreadServiceLifecycle(ThreadCleanupHub threadCleanupHub,
            @InjectService("ClassFactory")
            ClassFactory classFactory)
    {
        _threadCleanupHub = threadCleanupHub;
        _classFactory = classFactory;
    }

A temporary fix would be for the ThreadCleanupHub to be injected using 
@InjectService.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to