An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

Entries Tagged as coldspring

Better Living Through Transfer and ColdSpring

August 15, 2008 ·

We have a live system with customer data and a new requirement comes along that a particular piece of customer data must be encrypted in the database from now on. We already encrypt some columns (using Triple DES - which you might have guessed given the recent posts on my blog and here about mimicking ColdFusion's encryption in Java/Groovy). What is the smallest possible code change to ensure that as any user updates their data in future, this item will automatically be encrypted - whilst still handling the case of legacy data being unencrypted? We use Transfer for all our persistent business objects and almost all of our business objects have a decorator defined (for validation or some additional business logic). We also use Brian's TDOBeanInjectorObserver to automatically inject services into our business objects - just add a setter for a service and the bean injector takes care of the rest. Here's the bean injector definition in our ColdSpring file:
<bean id="transferObjectInjector" class="coldspring.transfer.TDOBeanInjectorObserver">
   <constructor-arg name="transfer"><ref bean="transfer" /></constructor-arg>
   <constructor-arg name="suffixList"><value>service,datasource</value></constructor-arg>
   <constructor-arg name="debugMode"><value>true</value></constructor-arg>
</bean>
Normally you would declare it non-lazy but we already do other non-lazy initialization so in our ColdSpring factory initialization code, we do this:
<cfset bf.getBean("transferObjectInjector") />
to force the bean injector to be initialized which, in turn, registers itself as a Transfer event listener (so that it can intercept object creation). The suffixList specifies that any set*Service() method or set*Datasource() method on the business objects managed by Transfer should be matched to beans defined in ColdSpring and injected. So how do we add the on-demand encryption to our business object's data?

[Read more →]

Tags: coldfusion · coldspring · orm

Life at Broadchoice

May 28, 2008 ·

May has been a quiet month on the blog because it has been an extremely busy month at Broadchoice. We completed our 2.0.2 and 2.0.3 releases and launched the new platform with a fair bit of press coverage. The platform is powered by ColdFusion 8.0.1, running Model-Glue 2 (BER), ColdSpring 1.2 BER and Transfer 1.0 BER and runs on a cluster of 64-bit Linux servers with synchronization of the Transfer cache managed through a set of ActiveMQ JMS server instances. The database is MySQL. We're continuing to work on a stream of minor releases as well as planning our next major release with a lot of new features. I'll be pulling together some presentations and articles about how we're using the frameworks together (because I think we're doing some interesting and unusual things, behind the scenes). I'll some a few snippets of code at Scotch in both of my presentations (and again at CFUNITED). I'm talking to the CFDevcon organizers about appropriate topics and they suggested a framework-related session so that might be the first unveiling of some of our ColdSpring / Transfer tricks and tips. I expect Ray will also be blogging about some aspects of our application architecture in due course. Feel free to sign up for a free Broadchoice account and see what we've been up to! Our support site (also powered by the Broadchoice Web Platform, as is our public website - we like to eat our own dog food!) has several ways for you to provide feedback to us!

Tags: broadchoice · cfdevcon08 · cfunited08 · coldfusion · coldspring · modelglue · orm

Frameworks, Frameworks Everywhere

May 09, 2008 ·

Kay Smoljak is running a series of interviews with framework developers and has a summary article on SitePoint that includes a survey of people's framework usage. It's going to be a great series of articles and makes interesting reading (FarCry and COOP have been covered so far with Fusebox, Mach-II, Transfer and ColdBox coming soon - and Model-Glue and ColdSpring et al to follow). The survey will only be open for a few more days so rush over and make your voice heard!

Tags: coldbox · coldfusion · coldspring · farcry · fusebox · machii · modelglue · orm

cf.Objective() 2008 Introduction to ColdSpring

May 02, 2008 ·

Mark Drew will be presenting an Introduction to ColdSpring on Saturday in the SA5A slot at 2:40pm as Hal Helms is unable to attend the conference. Thank you Mark for volunteering at the last minute - and we're all hoping Hal feels better soon.

Tags: cfobjective · coldfusion · coldspring

Transfer Cache Synchronization in a Cluster

April 14, 2008 ·

If you use Mark Mandel's awesome Transfer ORM in a cluster, you've probably wondered what to do about keeping the cache in sync across servers in the cluster. I've had to solve this problem a couple of times now and I figured I should publish an example of how to do this.

[Read more →]

Tags: architecture · cfobjective · coldfusion · coldspring · j2ee · orm · oss

Which is the greatest ColdFusion framework?

April 12, 2008 ·

That's a question that crops up over and over again. I've blogged about it in the past. My answer - as I'm sure most folks would expect - is "it depends". The question came up on a mailing list again the other day and someone jumped in full of praise for ColdBox and then someone else said "Sean would say it depends" and went on to plug cf.Objective() as the "perfect place" to answer the question, wishing they could be there. Here's what I said in response:

[Read more →]

Tags: cfobjective · coldbox · coldfusion · coldspring · farcry · fusebox · machii · modelglue · orm

cf.Objective() 2008 - The First...

April 10, 2008 ·

This year's cf.Objective() has a lot of firsts. If you're not attending, you're going to miss out on a lot of world premier events! We've worked hard to make cf.Objective() 2008 a "must see" event. We have a number of firsts this year that we're very proud of:
  • The public release of Open BlueDragon on May 3rd!
  • The public unveiling - and Alpha - of Model-Glue 3: Gesture!
  • The public unveiling of Mate, the new Flex framework from AsFusion!
  • The first conference to feature the latest rising star in the frameworks world: ColdBox - with an introductory session and a two hour, hands-on advanced workshop!
  • The first public information about Swiz, the new Flex framework from Chris Scott of ColdSpring fame!
  • Speaking of Chris Scott, we're the first conference to feature a two-hour, hands-on workshop for ColdSpring!
  • We're also the first conference to feature a two-hour, hands-on workshop on agile development for ColdFusion developers by the leading light in automated process & testing, John Paul Ashenfelter!
How can you pass this up? $629 for three full days of brain-cramming, enterprise-level information in a hotel that's only $120 a night! Register Now! The room rate is only guaranteed for a few more days! If you're a Mach-II user - or thinking of using Mach-II - you might also be interested in the pre-conference classes.

Tags: bluedragon · cfobjective · coldbox · coldfusion · coldspring · flex · machii · modelglue · openbd · oss · swiz

TransferDecorator bean injector

January 14, 2008 ·

Brian Kotek has released his Transfer decorator bean injector observer which I'm very excited about because I just needed this functionality for a client's project and had to write a version myself. Brian's is more sophisticated and, hopefully, will be integrated into ColdSpring in due course. Now I can use his version instead of mine and know that I'm using a community-supported resource. I know Brian Ghidinelli also ran into this issue and had started to write his own as well. I expect he'll switch to Brian Kotek's version now. So what does it do? Well, as you build complex domain objects by writing decorators for Transfer objects, you find you need access to services that you are managing with ColdSpring. Transfer provides an event model so you can add a listener (observer) for the afterNew event and use that to inject dependencies into your domain objects. It's a fairly manual process. What Brian's CFC does is completely automate the process. You declare the injector in your ColdSpring file and pass in Transfer to its constructor. When ColdSpring initializes the injector, the injector registers itself as an observer for that event and then it automatically injects any matching services, based on setters in the decorator. Very slick!

Tags: coldfusion · coldspring · orm

ColdSpring 1.2 RC1 Available

December 10, 2007 ·

You can download the 1.2 Release Candidate from the ColdSpring site. The documentation has yet to catch up but there are a lot of changes since the 1.0 release including aliases, abstract/parent beans, various useful factory beans, support for cfcUnit (with abstract test beans), the ColdspringProperty for Mach-II and all sorts of other goodies.

Tags: coldfusion · coldspring

Giving Thanks... for Chris Scott!

November 25, 2007 ·

Thanksgiving is a time to be thankful and this year many of us will want to give thanks to Chris Scott for an amazing series of updates to ColdSpring that complete what will be ColdSpring 1.2 (there was no 1.1). Over the last few days he has committed fixes for two bugs including enabling lazy-init="false", configuration factory beans, autowired test cases for cfcUnit and a transactional autorwired test case. This is great news for people using cfcUnit (you all are, aren't you?) as well as providing a number of great usability additions. This is also great news for folks who feel constrained to only use official releases. The last official release of ColdSpring (1.0) was so long ago that lots of great features are only available in the BER: aliases, includes, abstract beans etc. This has been particularly troublesome for such folks trying to use Model-Glue with Transfer (or Reactor) since that has relied on aliases for quite a while. A new official release of ColdSpring (1.2) is just around the corner!

Tags: coldfusion · coldspring