Blog

Tip of the Week: Using Interceptors

Brad Wood December 20, 2012

Spread the word

Brad Wood

December 20, 2012

Spread the word


Share your thoughts

 

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.
 

Add Your Comment

Recent Entries

Ortus June 2024 Newsletter!

Ortus June 2024 Newsletter!

Welcome to the latest edition of the Ortus Newsletter! This month, we're excited to bring you highlights from our sessions at CFCamp and Open South Code, as well as a sneak peek into our upcoming events. Discover the latest developments in BoxLang, our dynamic new JVM language, and catch up on all the insightful presentations by our expert team. Let's dive in!

Maria Jose Herrera
Maria Jose Herrera
June 28, 2024
BoxLang June 2024 Newsletter!

BoxLang June 2024 Newsletter!

We're thrilled to bring you the latest updates and exciting developments from the world of BoxLang. This month, we're diving into the newest beta release, introducing a new podcast series, showcasing innovative integrations, and sharing insights from recent events. Whether you're a seasoned developer or just getting started, there's something here for everyone to explore and enjoy.

Maria Jose Herrera
Maria Jose Herrera
June 28, 2024
BoxLang 1.0.0 Beta 3 Launched

BoxLang 1.0.0 Beta 3 Launched

We are thrilled to announce the release of BoxLang 1.0.0-Beta 3! This latest beta version is packed with exciting new features and essential bug fixes, including robust encryption functionality, enhanced Java interoperability, and more efficient event handling. Key highlights include the introduction of query caching capabilities, seamless coercion of Java Single Abstract Method (SAM) interfaces from BoxLang functions, and support for virtual thread executors. So, let’s dive into the details of what’s new in BoxLang 1.0.0-Beta 3 and how you can start leveraging these updates today!

Luis Majano
Luis Majano
June 28, 2024