Hi again, Ok, seems too complicated.
Another way maybe : use the StripesFilter instance that is bound to the ServletContext. In net.sourceforge.stripes.controller.StripesFilter#init : this.servletContext.setAttribute(StripesFilter.class.getName(), this); So I guess that you can retrieve the filter's configuration by : StripesFilter sf = (StripesFilter)servletContext.getAttribute(StripesFilter. class.getName()) Configuration c = sf.getInstanceConfiguration(); Now for the multiple configs, I'm not aware of any docs, users, or even use cases for the feature. I don't see the need for a webapp with multiple runtime configs, especially in Stripes which does everything once at startup time... I think it's a relic from ancient ages where containers were not managing classloader isolation very well... If you find any use for this, please tell me, I'd like to know :P HTH Rémi 2016-08-01 19:03 GMT+02:00 Juan Pablo Santos Rodríguez < juanpablo.san...@gmail.com>: > Hi Remi, > > quite there, but still not sure if there is a better way to do this. > > ConfigurableComponent is used on two separate places: > - to instantiate core parts of Stripes (i.e. object factory, action bean > resolver, property binder, context factory, etc.). Stripes only allows to > have on of each one of those parts, so if I want to access there Stripes' > configuration I have to replace one of those core, default classes with a > custom one. Not very appealing. Also, at that stage, Stripes Configuration > hasn't finished, so depending on which part you substitute, you may not > have all the information you need from Stripes configuration. > > - to initialize Interceptors which also implement ConfigurableComponent. I > went this way, hoping that I could declare an Interceptor without > annotating it with @Intercepts (so it would be called only when > initializated), but if the Interceptor isn't annotated, then it gets > ignored. So I've ended up with an empty intercepts() method which get's > called on every request, but at least I'm able to get the required > configuration at init() time. Not the cleanest thing, but it gets things > done. I also looked at ObjectPostProcessors, but they're instantiated too > early to be able to have a look at url bindings. > > Ideally, to support this kind of use cases, it would be nice to have some > sort of CustomConfigurableComponent (empty interface extending > ConfigurableComponent) which Stripes could use to initialize all classes > implementing it after it's done with the other ConfigurableComponents. > Thoughts? > > Finally, just out of curiosity, regarding multiple configs: I've come > accross some comments on StripesFilter saying that it's possible, is there > any more documentation about this feature? I've had a quick look at > StripesFilter code, so most probably are more comments or javadocs > elsewhere. > > > thanks in advance, > juan pablo > > > > On Thu, Jul 28, 2016 at 3:09 PM, VANKEISBELCK Remi <r...@rvkb.com> wrote: > >> Hi Juan Pablo, >> >> Maybe keep the configuration it as a static field of a >> @ConfigurableComponent ? >> >> Note that it'll work only if you have one config. Stripes config allows >> to do lots of fancy stuff that I personally never used, but who knows, that >> door is open :P >> >> Cheers >> >> Rémi >> >> >> >> 2016-07-28 14:27 GMT+02:00 Juan Pablo Santos Rodríguez < >> juanpablo.san...@gmail.com>: >> >>> Hi, >>> >>> we're currently developing some MBeans for some administrative tasks and >>> we would like to expose all registered ActionBeans URLs through JMX. >>> Obtaining them is easy, if you have a request routed through StripesFilter: >>> >>> Map< String, Object > stripesUrlBindings() { >>> final Map< String, Object > stripesUrlBindings = new HashMap<>(); >>> if( StripesFilter.getConfiguration() != null && >>> StripesFilter.getConfiguration().getActionResolver() instanceof >>> AnnotatedClassActionResolver ) { >>> final AnnotatedClassActionResolver acar = ( >>> AnnotatedClassActionResolver >>> )StripesFilter.getConfiguration().getActionResolver(); >>> final Map< String, Class< ? extends ActionBean > > >>> stripesOriginalUrlBindings = acar.getUrlBindingFactory().getPathMap(); >>> for( final Map.Entry< String, Class< ? extends ActionBean > >>> > entry : stripesOriginalUrlBindings.entrySet() ) { >>> final Map< String, String > map = new LinkedHashMap<>(); >>> map.put( "actionbean", >>> entry.getValue().getCanonicalName() ); >>> stripesUrlBindings.put( "{[" + entry.getKey() + >>> "],methods=[*]}", map ); >>> } >>> } >>> return stripesUrlBindings; >>> } >>> >>> However, a JMX call is not going to be routed through the StripesFilter >>> so StripesFilter.getConfiguration() yields null, and an error stating that >>> the request hasn't been routed through Stripes is logged. >>> >>> any ideas on how to proceed? >>> >>> >>> thanks in advance, >>> juan pablo >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> Stripes-users mailing list >>> Stripes-users@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/stripes-users >>> >>> >> >> >> ------------------------------------------------------------------------------ >> >> _______________________________________________ >> Stripes-users mailing list >> Stripes-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/stripes-users >> >> >
------------------------------------------------------------------------------
_______________________________________________ Stripes-users mailing list Stripes-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/stripes-users