Hi Felix!

thanks a lot for following up - unfortunately, once updated my local copy
of Sling, reinstalled everything and re-set up my environment, I noticed
that even if I hardcode a Feature to return `true`, the Resource would be
hidden anyway...

I guess that Feature#isEnabled(ExecutionContext) method is invoked but not
correctly evaluated... do you have an idea why it could happen?

TIA, Alles Gute!
-Simo


http://people.apache.org/~simonetripodi/
http://twitter.com/simonetripodi


On Wed, Jan 29, 2014 at 1:40 PM, Carsten Ziegeler <[email protected]>wrote:

> I think we should avoid the double evaluation - especially as this might
> result in interesting situations, a feature is enabled in the global filter
> by disabled in the per request filter.
> Apart from enabling a feature based on request information, features might
> be enabled based on user information - which can only get once the resource
> resolver is enabled - so it makes sense to have this in the
> ExecutionContext.
>
> I guess lazy evaluation is the only way to solve this - the other would be
> to not use filters and add the code to the sling main servlet, something
> which I would try avoid :)
>
> If you want to, I can give the lazy evaluation a try?
>
> Carsten
>
>
> 2014-01-29 Felix Meschberger <[email protected]>
>
> > Hi
> >
> > Thanks for reporting. This is actually a consequence of me removing the
> > global ClientContext filter yesterday. I have fixed it now in trunk (as
> > well as another bug causing negative features to not be evaluated
> > correctly).
> >
> > Why is the global filter needed ? Because the initial resource resolution
> > takes place *before* the Sling Filters are called. Thus, the only way to
> > setup the "global" per-request client context properly before resource
> > resolver kicks in is to have the global filter set.
> >
> > Hence we have two filters again.
> >
> > So maybe, we should start thinking about whether eager evaluation of the
> > flags might become too expensive or how we can actually improve in other
> > ways ?
> >
> > Regards
> > Felix
> >
> > Am 29.01.2014 um 11:03 schrieb Simone Tripodi <[email protected]
> >:
> >
> > > Hi all mates,
> > >
> > > I am using the new FeatureFlags APIs to implement my own Flags rules
> but
> > I
> > > noticed that Features are never evaluated, I mean that I cannot track
> > > any Feature#isEnabled(ExecutionContext) method invocation.
> > >
> > > It is enough for a resource having a sling:features property with a
> valid
> > > service name to be disabled -and dropping it re-enables the Resource-
> it
> > > doesn't matter which boolean value the
> > > method Feature#isEnabled(ExecutionContext) returns, it is not hit
> neither
> > > evaluated.
> > >
> > > How can I provide you a valid IT to demonstrate it?
> > >
> > > TIA, all the best!
> > > -Simo
> > >
> > > http://people.apache.org/~simonetripodi/
> > > http://twitter.com/simonetripodi
> >
> >
>
>
> --
> Carsten Ziegeler
> [email protected]
>

Reply via email to