Hi,
Göktük asked if there is a way to transform Interceptors to be bundles
instead of being statically loaded in core.
I tried to play around the idea yesterday in the train, and I faced some
interesting challenges.
o First, many interecptors are doing calls to the chain again, but with
a restricted set of interceptors. For instance, in the
SchemaInterceptor, we go through the chain again when modifying the
schema itself. In order to speedup the operation, we declare a BYPASS
sets of interceptors (I'm not sure it's a good idea, but right now, this
is how we proceed). At the end, this BYPASS set is declared this way :
private static final Collection<String> BYPASS;
static
{
Set<String> c = new HashSet<String>();
c.add( AuthenticationInterceptor.class.getName() );
c.add( AciAuthorizationInterceptor.class.getName() );
c.add( DefaultAuthorizationInterceptor.class.getName() );
c.add( ExceptionInterceptor.class.getName() );
c.add( SchemaInterceptor.class.getName() );
BYPASS = Collections.unmodifiableCollection( c );
}
As we can see, it creates a static dependency on interceptors. It might
be a better idea to use logical names instead of class names, and let
the OSGi container retrieve the classes itself.
o Second, we have places in core were we call the interceptors, like in
DefaultDirectoryService :
public boolean isPwdPolicyEnabled()
{
AuthenticationInterceptor authenticationInterceptor =
(AuthenticationInterceptor)getInterceptor(
AuthenticationInterceptor.class.getName() );
if ( authenticationInterceptor == null )
{
return false;
}
PpolicyConfigContainer pwdPolicyContainer =
authenticationInterceptor.getPwdPolicyContainer();
return ( ( pwdPolicyContainer != null )
&& ( ( pwdPolicyContainer.getDefaultPolicy() != null )
|| ( pwdPolicyContainer.hasCustomConfigs() ) ) );
}
I'm quite sure we should do that in anothr way...
Right, now, I'm experimenting, moving each interceptors into a dedicated
project (under apacheds/interceptors/authn, ...) to see what are the
impacts. I'll come back with some more informations when I'll have a
clear vision about the impacts.
Tahnks !
--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com