you can get it as symbol

contributeAliasOverrides(
    @InjectService("MyRequestExceptionHandler")
RequestExceptionHandler myHandler,
    @Inject @Symbol(TapestryConstants.PRODUCTION_MODE_SYMBOL) boolean
productionMode,
    Configuration<AliasContribution> configuration) {

then pass it to the service


Davor Hrg


On Feb 19, 2008 12:01 PM, Geoff Callender
<[EMAIL PROTECTED]> wrote:
> Many thanks, Davor.  Here's what worked to display a custom exception
> report page ONLY IF tapestry.production-mode=true.
>
> In services.AppModule:
>
>      public static void bind(ServiceBinder binder) {
>          binder.bind(RequestExceptionHandler.class,
> MyRequestExceptionHandler.class).withId("MyRequestExceptionHandler");
>      }
>
>      public static void
> contributeAliasOverrides(@InjectService("MyRequestExceptionHandler")
>          RequestExceptionHandler myHandler,
> Configuration<AliasContribution> configuration) {
>
> configuration
> .add(AliasContribution.create(RequestExceptionHandler.class,
> myHandler));
>      }
>
> In services.MyRequestHandler, which is identical to Tapestry's
> DefaultRequestExceptionHandler except (1) it gets the production-mode
> property (couldn't see how to inject it - we're in the services
> package here):
>
>      static private final String _productionModeStr =
> System.getProperty(TapestryConstants.PRODUCTION_MODE_SYMBOL);
>      private boolean _productionMode =
> Boolean.parseBoolean(_productionModeStr);
>
> and (2) in its handleRequestException(...) method
>
>      Page page = null;
>
>      if (_productionMode) {
>          _logger.error("MyExceptionReport page will be shown.");
>          page = _pageCache.get("MyExceptionReport");
>      }
>      else {
>          _logger.error("Tapestry ExceptionReport page will be shown.");
>          page = _pageCache.get("ExceptionReport");
>      }
>
> But I'm still looking forward to the much simpler 
> https://issues.apache.org/jira/browse/TAPESTRY-2169
>
> Cheers,
>
> Geoff
>
>
> On 19/02/2008, at 12:47 AM, Davor Hrg wrote:
>
> > Alias,
> > http://tapestry.apache.org/tapestry5/tapestry-core/guide/alias.html
> >
> > or
> >
> > decorate
> > http://wiki.apache.org/tapestry/Tapestry5HowToDecorateService
> > http://tapestry.apache.org/tapestry5/tapestry-ioc/decorator.html
> >
> > Davor hrg
> >
> > On Feb 18, 2008 2:34 PM, Geoff Callender
> > <[EMAIL PROTECTED]> wrote:
> >> Thanks again, but sorry - no cigar.
> >>
> >> 00:27:35,038 ERROR [RequestHandler] Construction of service
> >> RequestHandler failed: Error invoking service builder method
> >> org.apache.tapestry.services.TapestryModule.build(Logger, List,
> >> Dispatcher) (at TapestryModule.java:905) (for service
> >> 'RequestHandler'): Error invoking service contribution method
> >> org
> >> .apache
> >> .tapestry
> >> .services
> >> .TapestryModule.contributeRequestHandler(OrderedConfiguration,
> >> Context, RequestExceptionHandler, long, long, LocalizationSetter):
> >> Service interface
> >> org.apache.tapestry.services.RequestExceptionHandler
> >> is matched by 2 services: MyRequestExceptionHandler,
> >> RequestExceptionHandler.  Automatic dependency resolution requires
> >> that exactly one service implement the interface.
> >>
> >> The broader question I don't yet grasp is how to override the
> >> implementation of a core service.
> >>
> >> As for exception reporting, it occurred to me that it would be much
> >> simpler to solve with a new component.  See what you think of this
> >> thought:
> >>
> >>        https://issues.apache.org/jira/browse/TAPESTRY-2169
> >>
> >> Cheers,
> >>
> >> Geoff
> >>
> >>
> >> On 19/02/2008, at 12:16 AM, Davor Hrg wrote:
> >>
> >>> binder.bind(MyRequestExceptionHandler.class);
> >>>
> >>> On Feb 18, 2008 12:00 PM, Geoff Callender
> >>> <[EMAIL PROTECTED]> wrote:
> >>>> Thanks for the quick response, but no joy.  Now it fails when the
> >>>> first page is requested because now there are 2 implementations of
> >>>> the
> >>>> one service.
> >>>>
> >>>> 21:55:24,145 ERROR [RequestHandler] Construction of service
> >>>> RequestHandler failed: Error invoking service builder method
> >>>> org.apache.tapestry.services.TapestryModule.build(Logger, List,
> >>>> Dispatcher) (at TapestryModule.java:905) (for service
> >>>> 'RequestHandler'): Error invoking service contribution method
> >>>> org
> >>>> .apache
> >>>> .tapestry
> >>>> .services
> >>>> .TapestryModule.contributeRequestHandler(OrderedConfiguration,
> >>>> Context, RequestExceptionHandler, long, long, LocalizationSetter):
> >>>> Service interface
> >>>> org.apache.tapestry.services.RequestExceptionHandler
> >>>> is matched by 2 services: MyRequestExceptionHandler,
> >>>> RequestExceptionHandler.  Automatic dependency resolution requires
> >>>> that exactly one service implement the interface.
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> On 18/02/2008, at 9:51 PM, Davor Hrg wrote:
> >>>>
> >>>>> binder.bind(RequestExceptionHandler.class,
> >>>>> MyRequestExceptionHandler
> >>>>> .class).withId("MyRequestExceptionHandler");
> >>>>>
> >>>>> On Feb 18, 2008 11:42 AM, Geoff Callender
> >>>>> <[EMAIL PROTECTED]> wrote:
> >>>>>> I can't find the right way to configure AppModule.  Latest
> >>>>>> attempt is
> >>>>>> simply to do this:
> >>>>>>
> >>>>>>      public static void bind(ServiceBinder binder) {
> >>>>>>              binder.bind(RequestExceptionHandler.class,
> >>>>>> MyRequestExceptionHandler.class);
> >>>>>>      }
> >>>>>>
> >>>>>> but it seems that's not legal.  Stacktrace snippet is:
> >>>>>>
> >>>>>> 21:12:45,403 ERROR [[/jumpstart]] Exception starting filter app
> >>>>>> java.lang.RuntimeException: Service id 'RequestExceptionHandler'
> >>>>>> has
> >>>>>> already been defined by
> >>>>>> org
> >>>>>> .apache
> >>>>>> .tapestry
> >>>>>> .internal
> >>>>>> .services.DefaultRequestExceptionHandler(RequestPageCache,
> >>>>>> PageResponseRenderer, Logger) (at
> >>>>>> DefaultRequestExceptionHandler.java:
> >>>>>> 37) and may not be redefined by 
> >>>>>> jumpstart.web.services.MyRequestExceptionHandler
> >>>>>> (RequestPageCache, PageResponseRenderer, Logger) (at
> >>>>>> MyRequestExceptionHandler.java:43). You should rename one of the
> >>>>>> service builder methods.
> >>>>>>      at
> >>>>>> org
> >>>>>> .apache
> >>>>>> .tapestry.ioc.internal.RegistryImpl.<init>(RegistryImpl.java:
> >>>>>> 174)
> >>>>>>
> >>>>>> Geoff
> >>>>>>
> >>>>>>
> >>>>>> On 18/02/2008, at 2:00 AM, Davor Hrg wrote:
> >>>>>>
> >>>>>>> yes :)
> >>>>>>>
> >>>>>>> either that,
> >>>>>>> or pass the value to your ExceptionReporter
> >>>>>>> and have customized page for both dev and production :)
> >>>>>>>
> >>>>>>> Davor Hrg
> >>>>>>>
> >>>>>>> On Feb 17, 2008 2:49 PM, Geoff Callender
> >>>>>>> <[EMAIL PROTECTED]> wrote:
> >>>>>>>> So you're suggesting that I test the value of the system
> >>>>>>>> property
> >>>>>>>> tapestry.production-mode in AppModule and use it to condition
> >>>>>>>> whether
> >>>>>>>> I contribute an ExceptionReporter.  Is that right?
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> On 17/02/2008, at 11:49 PM, Davor Hrg wrote:
> >>>>>>>>
> >>>>>>>>> you can use that symbol in your custom erro page too,
> >>>>>>>>> either omit the contribution,
> >>>>>>>>> or display different message
> >>>>>>>>>
> >>>>>>>>> On Feb 17, 2008 1:25 PM, Geoff Callender
> >>>>>>>>> <[EMAIL PROTECTED]> wrote:
> >>>>>>>>>> Is there a way to make it use your own custom exception
> >>>>>>>>>> report
> >>>>>>>>>> page
> >>>>>>>>>> only if -Dtapestry.production-mode=true?
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> On 17/02/2008, at 10:47 PM, Geoff Callender wrote:
> >>>>>>>>>>
> >>>>>>>>>>> I like it - I think it's the right default.  Just need to
> >>>>>>>>>>> make
> >>>>>>>>>>> sure
> >>>>>>>>>>> everyone's aware of it.
> >>>>>>>>>>>
> >>>>>>>>>>> Geoff
> >>>>>>>>>>>
> >>>>>>>>>>> On 17/02/2008, at 9:58 PM, Davor Hrg wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> it's exactly that
> >>>>>>>>>>>>
> >>>>>>>>>>>> On Feb 17, 2008 11:20 AM, Chris Poulsen
> >>>>>>>>>>>> <[EMAIL PROTECTED]>
> >>>>>>>>>>>> wrote:
> >>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Could this be related to the introduction of production
> >>>>>>>>>>>>> mode ?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I had to add:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>               <systemProperties>
> >>>>>>>>>>>>>                   <systemProperty>
> >>>>>>>>>>>>>                       <name>tapestry.production-mode</
> >>>>>>>>>>>>> name>
> >>>>>>>>>>>>>                       <value>false</value>
> >>>>>>>>>>>>>                   </systemProperty>
> >>>>>>>>>>>>>               </systemProperties>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Into the maven-jetty-plugin configuration to get the nice
> >>>>>>>>>>>>> exception page
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> HTH
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> --
> >>>>>>>>>>>>> Chris
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Joost Schouten (ml) wrote:
> >>>>>>>>>>>>>> I'm experiencing the same with 5.0.11
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Cheers,
> >>>>>>>>>>>>>> Joost
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Geoff Callender wrote:
> >>>>>>>>>>>>>>> Is anyone else seeing this?  The exception report page
> >>>>>>>>>>>>>>> in
> >>>>>>>>>>>>>>> T5.0.10 has
> >>>>>>>>>>>>>>> no detail - I'm getting only a heading and the
> >>>>>>>>>>>>>>> exception,
> >>>>>>>>>>>>>>> eg.
> >>>>>>>>>>>>>>> An unexpected application exception has occurred.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Render queue error in BeginRender[examples/jodatime/
> >>>>>>>>>>>>>>> 1:pagelink]:
> >>>>>>>>>>>>>>> java.lang.ClassNotFoundException: caught an exception
> >>>>>>>>>>>>>>> while
> >>>>>>>>>>>>>>> obtaining
> >>>>>>>>>>>>>>> a class file for
> >>>>>>>>>>>>>>> jumpstart.web.components.DateMidnightField
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Cheers,
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Geoff
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> ---------------------------------------------------------------------
> >>>>>>>>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>>>>>>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> ---------------------------------------------------------------------
> >>>>>>>>>>>>> To unsubscribe, e-mail: users-
> >>>>>>>>>>>>> [EMAIL PROTECTED]
> >>>>>>>>>>>>> For additional commands, e-mail: users-
> >>>>>>>>>>>>> [EMAIL PROTECTED]
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> ---------------------------------------------------------------------
> >>>>>>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>>>>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> ---------------------------------------------------------------------
> >>>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>>>>>>> For additional commands, e-mail: users-
> >>>>>>>>> [EMAIL PROTECTED]
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> ---------------------------------------------------------------------
> >>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>> ---------------------------------------------------------------------
> >>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>>
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>
> >>>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
>
>

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

Reply via email to