Table of contents Introduction Contributing Guide Release History What's New With 7.3.0 What's New With 7.2.0 What's New With 7.1.0 What's New With 7.0.0 Release Notes Upgrading to ColdBox 7 What is ColdBox What is MVC About This Book Author For Newbies 60 Minute Quick Start Installing ColdBox My First ColdBox Application My First Handler & View Linking Events Together Working with Events Adding A Layout Adding A Model RESTFul Data Next Steps Getting Started Guide Getting Started Installation Application Templates Conventions Configuration ColdBox.cfc Configuration Directives CacheBox ColdBox Conventions Environments Flash InterceptorSettings Interceptors Layouts LayoutSettings LogBox Modules ModuleSettings Settings WireBox System Settings (Java Properties and Environment Variables) Using Settings Bootstrapper - Application.cfc The Basics Request Context Routing Requirements Rewrite Rules Application Router Routing DSL Routing By Convention Pattern Placeholders Routing Methods Resourceful Routes Named Routes Routing Groups Routing Namespaces Building Routable Links RESTFul Extension Detection HTTP Method Spoofing HTML Base Tag Pathinfo Providers Event Handlers How are events called? Getting & Setting Values Setting Views Relocating Rendering Data Sending Files Interception Methods Pre Advices Post Advices Around Advices Model Integration Model Data Binding HTTP Method Security Implicit Methods Executing Events Executing Routes Viewlets - Reusable Events Event Caching Validation Layouts & Views Views Rendering Views Rendering External Views Rendering With Local Variables Rendering Collections View Caching View Helpers View Events Layouts Basic Layouts Default Layout Nested Layouts Overriding Layouts Layouts From A Module Layout Helpers Layout Events Implicit Layout-View Declarations Helpers UDF's ColdBox Elixir Models Domain Modeling Service Layer Data Layers Book Conventions Location WireBox Binder Super Type Usage Methods Injection DSL ColdBox Namespace CacheBox Namespace EntityService Namespace Executor Namespace Java Namespace LogBox Namespace Models Namespace Provider Namespace WireBox Namespace Object Scopes Coding: Solo Style Datasource Contact.cfc ContactDAO.cfc ContactService.cfc Contacts Handler Coding: ActiveEntity Style ORM Contact.cfc Contacts Handler Views Coding: Virtual Service Layer ORM Contacts.cfc Contacts Handler Views Coding: ORM Scaffolding ORM Contacts.cfc Scaffold Interceptors How do they work? Conventions Interceptor Declaration Interceptor Registration Dynamic Registration Core Interception Points Application Life Cycle Events Object Creating Events Layout-View Events Module Events CacheBox Events Restricting Execution Interceptor Output Buffer Custom Events Configuration Registration Programmatic Registration Listening Announcing Interceptions Unregistering Interceptors Reporting Methods Interceptor Asynchronicity Async Announcements Async Listeners With Join Async Listeners No Join Asynchronous Annotations HMVC Modules Core Modules Locations Parent Configuration Module Layout Changing The Module Layout Module Service Module Lifecycle Module Registration Module Activation Module Unloading Common Methods Loading New Modules Loading A-la-carte Modules Module Events ModuleConfig Public Module Properties The Decorated Variables The configure() Method Module Settings Environment Control Interceptor Events Module Event Executions URL Routing Default Route Execution Module Routes Files Module Async Scheduling Request Context Module Methods Layout and View Renderings Layout/View Discovery Overriding Views Overriding Layouts Default Module Layout Explicit Module Renderings Models Module CF Mappings Module Dependencies Module Helpers Module Bundles Module Inception Testing Testing Quick Start Testing ColdBox Applications Test Harness ColdBox Testing Classes Testing Methods Integration Testing Test Annotations Life-Cycle Events Request Setup() The execute() Method HTTP Testing Methods Testing Without Virtual Application Interceptor Testing Model Object Testing Tips & Tricks Digging Deeper Async Programming Async Pipelines & Futures Parallel Computations Executors Scheduled Tasks ColdBox Proxy Getting Started The Base Proxy Object The Event Handlers Distinguishing Request Types RenderData() Proxy Events Standard Return Types Caveats & Gotchas Controller Decorator ColdBox Scheduled Tasks Flash RAM Flash Storage Using Flash RAM Creating Your Own Flash Scope HTML Helper REST Handler Request Context Decorator Recipes Building REST APIs ColdBox Exception Handling Debugging ColdBox Apps Clearing the View Cache Basic HTTP Authentication Interceptor Architecture Concepts How ColdBox Works