Transcript Document

ColdSpring
Powered Fusebox
In Action
Adam Wayne Lehman
ColdFusion Specialist
Adobe Systems, Inc.
[email protected]
2006 Adobe Systems Incorporated. All Rights Reserved.
About Me

ColdFusion Specialist at Adobe

Solutions Engineer

Technical Evangelist

Member of the ColdFusion Product Team

10+ years of ColdFusion experience

Previous Lives

US Department of State

Johns Hopkins University
2006 Adobe Systems Incorporated. All Rights Reserved.
Agenda

Introduction to ColdSpring

Fusebox / ColdSpring MVC

ColdSpring Lexicons

Demo

Q&A
2006 Adobe Systems Incorporated. All Rights Reserved.
What is ColdSpring?

ColdSpring is a Model Framework

Community driven, open source ColdFusion component container
inspired by J2EE Spring Framework

Dave Ross

Chris Scott

Uses the J2EE Spring syntax and DTD for its xml config file

ColdFusion’s first Aspect Oriented Programming framework

Service layer framework for CFCs

Manages the lifecycle and dependencies of your CFCs

You don’t have to alter your existing CFCs to get them to work with ColdSpring

Enforces best practices in domain design

The most popular ColdFusion framework today!
2006 Adobe Systems Incorporated. All Rights Reserved.
Fusebox MVC
Event
(fuseaction)
• Processes and responded to events
• Can update the model directly
• Circuit.xml
Controller
• Domain model
• Abstracts the database
• acts, qrys & CFCs
• Renders model into UI
• HTML
View
2006 Adobe Systems Incorporated. All Rights Reserved.
• dsp_myForm.cfm
Model
Fusebox _VC

Use Fusebox to manage the
controller and the view

View
Controller


Procedural style better suited for
HTML development

Easier for designers and content
managers
Controller

Configured ‘declaratively’ through
xml

Highly extensible (lexicons)

Tons of existing solutions to
common problems (plugins)
View
2006 Adobe Systems Incorporated. All Rights Reserved.
ColdSpring M_ _

Use ColdSpring to manage the
model and define the domain

OO design solves complex problems

Full Component Lifecycle

Manages Dependencies

Configured ‘declaratively’ through xml

Very lightweight

Model is framework agnostic
2006 Adobe Systems Incorporated. All Rights Reserved.
Model
Singletons & Factories


Singletons

Objects that persist across requests

Minimal object creation = fast application
Factories

Responsible for maintaining Singletons

Handles configuration

Manages the object lifecycle

Creates the object

Persist the object

Directs requests to the object
2006 Adobe Systems Incorporated. All Rights Reserved.
Inversion of Control / Dependency Injection

Objects not responsible for managing dependencies

ColdSpring’s factory bakes the dependencies in during object creation
(dependency injection)

Setter Injection

Construction Injection
2006 Adobe Systems Incorporated. All Rights Reserved.
All CFCs are not the same

Value Object (DTO or Domain
Object)

DAO

fetch, save, remove, create, update

Gateway

Services

Façade for a group of model components

Should only talk to their components or
other services
Value Object
2006 Adobe Systems Incorporated. All Rights Reserved.
Service
Gateway
DAO
ColdSpring and Fusebox in Action

PDF and FlashPaper 2 reports with <CFReport /> and the ColdFusion Report
Builder tool

Integrated printable documents with <CFDocument />

Demonstrate a ColdFusion MX 7 SMS mobile application
 LitePost Demo
 ColdSpring Lexicons
 Working with ColdSpring
2006 Adobe Systems Incorporated. All Rights Reserved.
Initializing ColdSpring

Create a fuseaction to initialize ColdSpring
<circuit access="internal" xmlns:cs="coldspring/">
<cs:initialize coldspringfactory="servicefactory“>
<cs:bean beanDefinitionFile="#expandPath(‘coldspring-services.xml')#" />
</cs:initialize>
</circuit>

Add fuseaction call to fusebox.xml.cfm
<globalfuseactions>
<appinit>
<do action="home.initColdSpring" />
</appinit>
</globalfuseactions>
2006 Adobe Systems Incorporated. All Rights Reserved.
Using ColdSpring

Getting a ColdSpring object in circuit.xml
<fuseaction name=“displayAllEntries”
<cs:get bean=“entryService” returnvariable=“REQUEST.entryService” />
<invoke object=“REQUEST.entryService” method=“getEntries”
returnvariable=“REQUEST.entries” />
or
<set name=“REQUEST.entries” value=“#REQUEST.entryService()#” />
</fuseaction>
2006 Adobe Systems Incorporated. All Rights Reserved.
Resources


Official FuseBox Website

http://www.fusebox.org

http://forums.fusebox.org
Official ColdSpring Website


http://www.coldspringframework.org
Sean Corfield (primary contributor to FuseBox 5)

http://www.corfield.org
2006 Adobe Systems Incorporated. All Rights Reserved.
2006 Adobe Systems Incorporated. All Rights Reserved.