So giving a look at the change log I noticed that there was a breaking
change that was not reflected in the docs.
The xml docs for SelectInterceptors say that

        "If the selector is not interested in modifying the interceptors for
this model, it
        /// should return a null reference and the next selector in line
would be executed (or the default
        /// model.Interceptors)
        /// If the selector return a non null value, this is the value that
is used, and the model.Interectors are ignored, if this
        /// is not the desirable behavior, you need to merge your
interceptors with the ones in model.Interecptors yourself.
        "
That's not true since the change modified the behavior so that the
model.Interceptors are always appended after all interceptors returned by
all interceptor selectors, if any, so it's not true that by returning any
interceptors from a selector then the default ones are discarded. This
inconsistency can bring to duplicate interceptors being applied.

In addition to this I think HasInterceptors is misleading, therefore I would
suggest calling it before calling SelectInterceptors so that in case the
first returns false then the second is not called. This is to centralize the
logic to decide whether a model has interceptors or not in a single place.

Finally, I'd suggest to make the SelectInterceptors contract clearer. Either
modify the model.Interceptors collection or return something from the
method, not both because it's hard to figure out where your interceptors end
up WRT order, which is important.

Ideas?

2010/3/8 Krzysztof Koźmic <[email protected]>

> yes, as well as the official documentation.
>
> W dniu 8 marca 2010 21:50 użytkownik Simone Busoli
> <[email protected]> napisał:
> > About the wiki, are there plans to move the contents in
> > using.castleproject.org there?
> >
> > 2010/3/8 Krzysztof Koźmic <[email protected]>
> >>
> >> If we do one more v2.x build (which I'd like to do) we'd rather limit
> >> breaking changes.
> >> For v3.0 we have some major changes in mind already, so that would not
> be
> >> a big problem as long as the change and migration path are properly
> >> documented (see breakingchanges.txt file in repository)
> >>
> >> On 3/8/2010 9:16 PM, Simone Busoli wrote:
> >>
> >> Sure, although that would probably be a breaking change.
> >>
> >> 2010/3/8 Krzysztof Koźmic <[email protected]>
> >>>
> >>> We'll be more than happy to discuss your ideas and patches with
> >>> improvements, both for code and documentation.
> >>>
> >>> cheers,
> >>> Krzysztof
> >>>
> >>> W dniu 8 marca 2010 21:12 użytkownik Simone Busoli
> >>> <[email protected]> napisał:
> >>> > Thanks, I was just trying to figure out its behavior. I think
> >>> > interceptor
> >>> > selectors stuff can be improved, the API is not intuitive in my
> >>> > opinion, in
> >>> > that you need to know what you need to return for it to behave
> >>> > correctly,
> >>> > although it's documented in the xml docs but you usually don't see it
> >>> > since
> >>> > you're not the client of the API.
> >>> >
> >>> > 2010/3/8 Krzysztof Koźmic <[email protected]>
> >>> >>
> >>> >> oh, and about docs, we added new wiki, that all docs will be
> migrated
> >>> >> to.
> >>> >> feel free to contribute :)
> >>> >>
> >>> >> http://stw.castleproject.org/Windsor.MainPage.ashx
> >>> >>
> >>> >>
> >>> >>
> >>> >> On 3/8/2010 9:04 PM, Simone Busoli wrote:
> >>> >>
> >>> >> Is there documentation about what purpose they are used for or
> should
> >>> >> I
> >>> >> look at the source? I'd expect to put in HasInterceptors the logic
> to
> >>> >> tell
> >>> >> whether SelectInterceptors should be called or not, otherwise I have
> >>> >> to
> >>> >> duplicate the logic in both methods.
> >>> >>
> >>> >> 2010/3/8 Krzysztof Koźmic <[email protected]>
> >>> >>>
> >>> >>> That is correct. Both method are used at different spots and for
> >>> >>> different purpose.
> >>> >>>
> >>> >>> If selector wants is not interested in particular component it
> should
> >>> >>> return null from select method
> >>> >>>
> >>> >>> On 3/8/2010 6:54 PM, SimoneB wrote:
> >>> >>>>
> >>> >>>> Should IModelInterceptorsSelector have its SelectInterceptors
> method
> >>> >>>> called if HasInterceptors returns false?
> >>> >>>>
> >>> >>>> I'd expect not, but I'm experiencing the opposite.
> >>> >>>>
> >>> >>>>
> >>> >>>
> >>> >>> --
> >>> >>> You received this message because you are subscribed to the Google
> >>> >>> Groups
> >>> >>> "Castle Project Users" group.
> >>> >>> To post to this group, send email to
> >>> >>> [email protected].
> >>> >>> To unsubscribe from this group, send email to
> >>> >>> [email protected]<castle-project-users%[email protected]>
> .
> >>> >>> For more options, visit this group at
> >>> >>> http://groups.google.com/group/castle-project-users?hl=en.
> >>> >>>
> >>> >>
> >>> >> --
> >>> >> You received this message because you are subscribed to the Google
> >>> >> Groups
> >>> >> "Castle Project Users" group.
> >>> >> To post to this group, send email to
> >>> >> [email protected].
> >>> >> To unsubscribe from this group, send email to
> >>> >> [email protected]<castle-project-users%[email protected]>
> .
> >>> >> For more options, visit this group at
> >>> >> http://groups.google.com/group/castle-project-users?hl=en.
> >>> >>
> >>> >> --
> >>> >> You received this message because you are subscribed to the Google
> >>> >> Groups
> >>> >> "Castle Project Users" group.
> >>> >> To post to this group, send email to
> >>> >> [email protected].
> >>> >> To unsubscribe from this group, send email to
> >>> >> [email protected]<castle-project-users%[email protected]>
> .
> >>> >> For more options, visit this group at
> >>> >> http://groups.google.com/group/castle-project-users?hl=en.
> >>> >
> >>> > --
> >>> > You received this message because you are subscribed to the Google
> >>> > Groups
> >>> > "Castle Project Users" group.
> >>> > To post to this group, send email to
> >>> > [email protected].
> >>> > To unsubscribe from this group, send email to
> >>> > [email protected]<castle-project-users%[email protected]>
> .
> >>> > For more options, visit this group at
> >>> > http://groups.google.com/group/castle-project-users?hl=en.
> >>> >
> >>>
> >>> --
> >>> You received this message because you are subscribed to the Google
> Groups
> >>> "Castle Project Users" group.
> >>> To post to this group, send email to
> >>> [email protected].
> >>> To unsubscribe from this group, send email to
> >>> [email protected]<castle-project-users%[email protected]>
> .
> >>> For more options, visit this group at
> >>> http://groups.google.com/group/castle-project-users?hl=en.
> >>>
> >>
> >> --
> >> You received this message because you are subscribed to the Google
> Groups
> >> "Castle Project Users" group.
> >> To post to this group, send email to
> >> [email protected].
> >> To unsubscribe from this group, send email to
> >> [email protected]<castle-project-users%[email protected]>
> .
> >> For more options, visit this group at
> >> http://groups.google.com/group/castle-project-users?hl=en.
> >>
> >> --
> >> You received this message because you are subscribed to the Google
> Groups
> >> "Castle Project Users" group.
> >> To post to this group, send email to
> >> [email protected].
> >> To unsubscribe from this group, send email to
> >> [email protected]<castle-project-users%[email protected]>
> .
> >> For more options, visit this group at
> >> http://groups.google.com/group/castle-project-users?hl=en.
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Castle Project Users" group.
> > To post to this group, send email to
> [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<castle-project-users%[email protected]>
> .
> > For more options, visit this group at
> > http://groups.google.com/group/castle-project-users?hl=en.
> >
>
> --
> You received this message because you are subscribed to the Google Groups
> "Castle Project Users" group.
> To post to this group, send email to [email protected]
> .
> To unsubscribe from this group, send email to
> [email protected]<castle-project-users%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/castle-project-users?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en.

Reply via email to