On 10/4/07, David Jencks <email@example.com> wrote:
On Oct 4, 2007, at 11:21 AM, Alex Karasulu wrote:
If this idea of configuring lots of interceptor lists in
server.xml worked out it might be pretty easy for these to be specified per partition as well.
I think we could have a combinatorial explosion if we did this. Perhaps partitions should just
expose their "skiplist" rather than defining a chain specifically for each partition's suffix for each
The combinatorial explosion certainly seems like a real danger. I kind of think the skip list goes with the operation better than with the partition.
The skip list can also go into the interceptor. Interceptors may be configured with a set of distinguished names
to be skipped. The InterceptorChain can leverage this information to automatically bypass an interceptor based
on the distinguished name of the target entry the operation is performed on.
If the functional names you talk about below (i.e. "normalization" ) can be configured in the interceptor for different
regions of the DIT then this can be controlled pretty well. This alternative my be better at targeting specific functionality.
For example Matt will want to just skip one or two interceptors at most for his partition. Configuring this as an exception
on the interceptor may be best. Don't know tho.
BTW there are major concerns with bypassing interceptors where bypassing one interceptor may cause another to
fail. This nasty coupling is what I want to get rid of but don't know how exactly.
Thinking about how the skip lists work now I recall that they aren't based on interceptor identity but name although in trunk the name is by default the class name of the interceptor. lets see if I can explain this so anyone can understand what I'm thinking.... if the skip lists work by functional name and the partitions supply the skip lists with the interceptors named functionally then the skip lists would work with different interceptor chains even though the implementation of some functions would be with different classes.
e.g. the normalization would be done by a different interceptor in the normal and the Matt partitions, but they'd have the same name... so if a skip list included "Normalization" that interceptor, whatever it happened to be for the target partition, would get skipped.
Yes we should use symbolic/functional names you suggest instead of the interceptor class name.
I'll try to explain again from a different point of view...
- partitions specify a "complete" interceptor stack for themselves. The interceptors have functional names that reflect what they do rather than necessarily their class.
The "complete" part sounds like it might lead to greater verbosity and might also cause other severe problems
where we cannot have two instances of the same interceptor in the same DirectoryService. Perhaps we can use
reuse but still there will be one offs and issues if we do do that.
- skip lists are based on these functional names
- there's something before we get into the interceptor stack that picks the right interceptor stack based on the target partition
This can be done but there are just some functions (interceptors) that must be handled or else critical services fail.
- the skip lists now work for any interceptor stack because they say what functionality to skip.
What I don't know is if (3), the thing that picks the correct interceptor stack, is possible to write.