Lol, I was in that thread suggesting filtering with Maven, this problem is 
another beast.

As Howard nailed it, one can not eat a cake before baking it.

-borut

Sent from my iPad

On 11. jan. 2012, at 02:03, Paul Stanton <p...@mapshed.com.au> wrote:

> Borut,
> 
> If you want to configure environments differently, I suggest looking into 
> resource filtering via maven.
> 
> see my thread titled 'configuration strategy' for more info.
> 
> p.
> 
> On 4/01/2012 2:59 AM, Borut Bolčina wrote:
>> Hi,
>> 
>> I would still like an advice on the approach on how to initialize custom
>> symbol provider with tapestry provided symbol. The code below ends in
>> IllegalStateException
>> 
>> Construction of service 'SymbolSource' has failed due to recursion: the
>> service depends on itself in some way.
>> 
>> 
>> The code from AppModule:
>> 
>>     public RESTSymbolProvider buildRESTSymbolProvider(Logger logger,
>> @Inject @Symbol(SymbolConstants.EXECUTION_MODE) String executionMode) {
>>         return new RESTSymbolProvider(logger, executionMode);
>>     }
>> 
>>     public void contributeSymbolSource(OrderedConfiguration<SymbolProvider>
>> providers, Logger logger,
>>             @InjectService("RESTSymbolProvider") SymbolProvider
>> restSymbolProvider) {
>>         providers.add("myAppConfiguration", restSymbolProvider);
>>     }
>> 
>> Thanks for any input,
>> borut
>> 
>> 2011/12/30 Borut Bolčina<borut.bolc...@gmail.com>
>> 
>>> Hello,
>>> 
>>> I am in a process of writting my own SymbolProvider (the configuration for
>>> my app will come from REST service) and I am facing a dilemma. The
>>> contribution looks like:
>>> 
>>>     public void
>>> contributeSymbolSource(OrderedConfiguration<SymbolProvider>  providers,
>>> Logger logger) {
>>>         providers.add("myAppConfiguration", new RESTSymbolProvider(logger,
>>> "development"), "after:SystemProperties", "before:ApplicationDefaults");
>>>     }
>>> 
>>> You can see I hardcoded the string "development". I want to replace this
>>> string with another symbol
>>> 
>>> @Symbol(SymbolConstants.EXECUTION_MODE) String executionMode
>>> 
>>> As I need this symbol in another method (sendEmailMessage) in the
>>> AppModule I naively tried like this and failed:
>>> 
>>> public class AppModule {
>>> 
>>>     private String *executionMode*;
>>> 
>>>     public AppModule(@Symbol(SymbolConstants.EXECUTION_MODE) String
>>> executionMode) {
>>>         this.executionMode = executionMode;
>>>     }
>>> 
>>>     @Startup
>>>     public void sendEmailMessage(Logger logger) {
>>>         if ("development".equals(*executionMode*)) {
>>>             logger.info(MarkerFactory.getMarker("EDITORS"), "DEVELOPMENT
>>> Starting najdi-web");
>>>         } else {
>>>             logger.info(MarkerFactory.getMarker("EDITORS"), "PRODUCTION
>>> Starting najdi-web");
>>>         }
>>>     }
>>> 
>>>     public void
>>> contributeSymbolSource(OrderedConfiguration<SymbolProvider>  providers,
>>> Logger logger) {
>>>         providers.add("myAppConfiguration", new RESTSymbolProvider(logger,
>>> *executionMode*), "after:SystemProperties", "before:ApplicationDefaults");
>>>     }
>>> ...
>>> }
>>> 
>>> 
>>> Fails with:
>>> 
>>> [2011/12/30 14:59:04.537] ERROR [o.a.t.i.Registry:log]: Construction of
>>> service 'SymbolSource' has failed due to recursion: the service depends on
>>> itself in some way. Please check
>>> org.apache.tapestry5.ioc.internal.services.SymbolSourceImpl(List) (at
>>> SymbolSourceImpl.java:198) via
>>> org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
>>> TapestryIOCModule.java:49) for references to another service that is itself
>>> dependent on service 'SymbolSource'.
>>> [2011/12/30 14:59:04.538] ERROR [o.a.t.i.Registry:log]: Operations trace:
>>> [2011/12/30 14:59:04.539] ERROR [o.a.t.i.Registry:log]: [ 1] Realizing
>>> service ServletApplicationInitializer
>>> [2011/12/30 14:59:04.539] ERROR [o.a.t.i.Registry:log]: [ 2] Instantiating
>>> service ServletApplicationInitializer implementation via
>>> org.apache.tapestry5.services.TapestryModule.buildServletApplicationInitializer(Logger,
>>> List, ApplicationInitializer) (at TapestryModule.java:1395)
>>> [2011/12/30 14:59:04.540] ERROR [o.a.t.i.Registry:log]: [ 3] Constructing
>>> module class org.apache.tapestry5.services.TapestryModule
>>> [2011/12/30 14:59:04.540] ERROR [o.a.t.i.Registry:log]: [ 4] Determining
>>> injection value for parameter #1
>>> (org.apache.tapestry5.ioc.services.PipelineBuilder)
>>> [2011/12/30 14:59:04.541] ERROR [o.a.t.i.Registry:log]: [ 5] Resolving
>>> object of type org.apache.tapestry5.ioc.services.PipelineBuilder using
>>> MasterObjectProvider
>>> [2011/12/30 14:59:04.541] ERROR [o.a.t.i.Registry:log]: [ 6] Realizing
>>> service ServiceOverride
>>> [2011/12/30 14:59:04.542] ERROR [o.a.t.i.Registry:log]: [ 7] Instantiating
>>> service ServiceOverride implementation via
>>> org.apache.tapestry5.ioc.internal.services.ServiceOverrideImpl(Map) (at
>>> ServiceOverrideImpl.java:31) via
>>> org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
>>> TapestryIOCModule.java:49)
>>> [2011/12/30 14:59:04.542] ERROR [o.a.t.i.Registry:log]: [ 8] Creating plan
>>> to instantiate
>>> org.apache.tapestry5.ioc.internal.services.ServiceOverrideImpl via public
>>> org.apache.tapestry5.ioc.internal.services.ServiceOverrideImpl(java.util.Map)
>>> [2011/12/30 14:59:04.543] ERROR [o.a.t.i.Registry:log]: [ 9] Determining
>>> injection value for parameter #1 (java.util.Map)
>>> [2011/12/30 14:59:04.544] ERROR [o.a.t.i.Registry:log]: [10] Collecting
>>> mapped configuration for service ServiceOverride
>>> [2011/12/30 14:59:04.544] ERROR [o.a.t.i.Registry:log]: [11] Invoking
>>> org.apache.tapestry5.services.TapestryModule.productionModeOverrides(MappedConfiguration,
>>> boolean) (at TapestryModule.java:2871)
>>> [2011/12/30 14:59:04.545] ERROR [o.a.t.i.Registry:log]: [12] Determining
>>> injection value for parameter #2 (boolean)
>>> [2011/12/30 14:59:04.545] ERROR [o.a.t.i.Registry:log]: [13] Resolving
>>> object of type boolean using MasterObjectProvider
>>> [2011/12/30 14:59:04.546] ERROR [o.a.t.i.Registry:log]: [14] Realizing
>>> service SymbolSource
>>> [2011/12/30 14:59:04.546] ERROR [o.a.t.i.Registry:log]: [15] Instantiating
>>> service SymbolSource implementation via
>>> org.apache.tapestry5.ioc.internal.services.SymbolSourceImpl(List) (at
>>> SymbolSourceImpl.java:198) via
>>> org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
>>> TapestryIOCModule.java:49)
>>> [2011/12/30 14:59:04.547] ERROR [o.a.t.i.Registry:log]: [16] Creating plan
>>> to instantiate org.apache.tapestry5.ioc.internal.services.SymbolSourceImpl
>>> via public
>>> org.apache.tapestry5.ioc.internal.services.SymbolSourceImpl(java.util.List)
>>> [2011/12/30 14:59:04.547] ERROR [o.a.t.i.Registry:log]: [17] Determining
>>> injection value for parameter #1 (java.util.List)
>>> [2011/12/30 14:59:04.548] ERROR [o.a.t.i.Registry:log]: [18] Collecting
>>> ordered configuration for service SymbolSource
>>> [2011/12/30 14:59:04.548] ERROR [o.a.t.i.Registry:log]: [19] Invoking
>>> si.najdi.web.services.AppModule.contributeSymbolSource(OrderedConfiguration,
>>> Logger) (at AppModule.java:40)
>>> [2011/12/30 14:59:04.549] ERROR [o.a.t.i.Registry:log]: [20] Constructing
>>> module class si.najdi.web.services.AppModule
>>> [2011/12/30 14:59:04.550] ERROR [o.a.t.i.Registry:log]: [21] Determining
>>> injection value for parameter #1 (java.lang.String)
>>> [2011/12/30 14:59:04.550] ERROR [o.a.t.i.Registry:log]: [22] Resolving
>>> object of type java.lang.String using MasterObjectProvider
>>> [2011/12/30 14:59:04.551] ERROR [o.a.t.i.Registry:log]: [23] Realizing
>>> service SymbolSource
>>> [2011/12/30 14:59:04.569] ERROR [o.a.t.i.s.T.SymbolSource:createObject]:
>>> Construction of service SymbolSource failed: Unable to instantiate class
>>> si.najdi.web.services.AppModule as a module: Exception constructing service
>>> 'SymbolSource': Construction of service 'SymbolSource' has failed due to
>>> recursion: the service depends on itself in some way. Please check
>>> org.apache.tapestry5.ioc.internal.services.SymbolSourceImpl(List) (at
>>> SymbolSourceImpl.java:198) via
>>> org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
>>> TapestryIOCModule.java:49) for references to another service that is itself
>>> dependent on service 'SymbolSource'.
>>> java.lang.RuntimeException: Unable to instantiate class
>>> si.najdi.web.services.AppModule as a module: Exception constructing service
>>> 'SymbolSource': Construction of service 'SymbolSource' has failed due to
>>> recursion: the service depends on itself in some way. Please check
>>> org.apache.tapestry5.ioc.internal.services.SymbolSourceImpl(List) (at
>>> SymbolSourceImpl.java:198) via
>>> org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
>>> TapestryIOCModule.java:49) for references to another service that is itself
>>> dependent on service 'SymbolSource'.
>>> 
>>> Am I facing multiple problems here?
>>> 
>>> Regards,
>>> borut
>>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to