[Tip of the Week] Using Interceptors

One of the most powerful parts of the ColdBox framework are interceptors. Interception points are events that happen over the life cycle of your application or a user request which are broadcast by the framework. Examples would be preProcess (when a request first comes in), onException (when an error happens), or preViewRender (before a view is rendered). If you any code you want to execute at those points, or if you want to override/modify the default behavior of the framework, you simply need to register an interceptor to listen for that broadcast event.

Interceptors, like most everything else in ColdBox, are implemented as simple CFCs which have a configure() method that is called on their creation. Then you create as many methods as you want named after the interception points you want to respond to.

For Example:
/interceptors/GateKeeper.cfc
component{
property name=“securityService” inject=“model”;

function configure(){}

function preEvent(event,interceptData){
if(interceptData.processedEvent == ‘secure.page’ && !securityService.loggedIn()) {
setNextEvent(“login.page”);
}
}
}

Then, all you have to do is register your interceptor in the config like so:
interceptors = [
{class=“interceptors.GateKeeper”, properties={}}
];

Now, the code in our preEvent method will get called upon to run before each event in your application. This keeps cross cutting concerns nicely encapsulated in a way that can easily be turned on and off without actually touching the parts of the app that they are listening to.

Check out the full list of interception points here in the docs: http://wiki.coldbox.org/wiki/Interceptors.cfm

P.S. As if all the built-in ColdBox interception points weren’t cool enough, you can create your own custom interceptions in your app like orderCreated, userLoggedIn, or accountDeleted and then write interceptors that listen for them and do special logic.

Thanks!

~Brad

ColdBox Platform Evangelist
Ortus Solutions, Corp

E-mail: brad@coldbox.org
ColdBox Platform: http://www.coldbox.org
Blog: http://www.codersrevolution.com