Jasig/cas — pull request #248 by leleuj (2013-05-09 08:37:56+00:00)
Title: CAS-1292: Front Channel SLO

Implementing front SLO is pretty complex and has big impacts on the source code. So I propose to do it in two pull requests :
- the first one to change the ```cas-server-core``` to make it able to handle front SLO and still performs the back SLO
- the second one to change the ```cas-server-webapp``` to really perform front SLO in addition to back SLO.

This pull request is the first one to change the ```cas-server-core```.
Regarding tests, I made manual tests but a dedicated class for automated tests : ```LogoutManagerImplTests``` is still to be created.

*The key questions :*
1) **have one logout manager or put logout logic in services**
So far, the services (```AbstractWebApplicationService``` and inherited classes) hold their logout logic through the ```logOutOfService``` method.
Following the advice given by https://github.com/serac/cas/commit/7855e2293a8a14cf85bec6283fae1cb560e9156f, I created one logout manager which has the logout logic and clean strongly the services classes. It has many impacts as the ```httpClient``` is now injected in the ```LogoutManagerImpl``` and no more in argument extractors and services classes.
I think it improves the general design of the source code.

2) **when to find if the service is back or front SLO : at service creation or at logout**
To be able to perform properly the SLO, the logout manager must know if the service requires back or front channel SLO (```LogoutType```).
This can be computed using the ```servicesManager``` bean :
- at service creation (in the argument extractors)
- at logout (in the logout manager) : this is what is implemented here. I made this choice because I think that the logout type only makes sense at logout.

Please review and let me know what you think...