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