<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>Objective Action</title>
			<link>http://www.objectiveaction.com/Kevin/index.cfm</link>
			<description>An Objective Look at Adobe and the Internet</description>
			<language>en-us</language>
			<pubDate>Wed, 08 Sep 2010 12:29:31+0100</pubDate>
			<lastBuildDate>Sun, 20 Dec 2009 10:43:00+0100</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>kevin@objectiveinternet.com</managingEditor>
			<webMaster>kevin@objectiveinternet.com</webMaster>
			
			
			
			
			
			<item>
				<title>Fusebox Scaffolder Alpha 3</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/12/20/Fusebox-Scaffolder-Alpha-3</link>
				<description>
				
				While I was away in Australia I took some time to work on the Fusebox Scaffolder. I am trying right now to get it added to the fusebox web site but in the meantime I have uploaded it here so that you can use it if you want.

Please read the docs before installing it as I have tried to point out the limitations of which there are a few. If you do intall it please let me know how you get on with it as I am trying to see how it works on a number of different platforms.

Currently the main limitation is that it requires you to be using SQL server. In addition it will not create fully working code except unless all the tables in your database have an integer identity as primary key.

Here is &lt;a href=&quot;/Kevin/Enclosures/scaffolderAlpha3.zip&quot; target=&quot;_blank&quot;&gt;the Zip File&lt;/a&gt;. Extract it to your web root with the included directory structure. It will put the code into a directory called /scaffolder. When you have done that you should be able to run it by using a URL like http://127.0.0.1/scaffolder/index.cfm in your browser.
				
				</description>
						
				
				<category>Scaffolding</category>				
				
				<category>Fusebox</category>				
				
				<pubDate>Sun, 20 Dec 2009 10:43:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/12/20/Fusebox-Scaffolder-Alpha-3</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>ColdFusion 9 Released</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/10/13/ColdFusion-9-Released</link>
				<description>
				
				Last week Adobe &lt;a href=&quot;http://www.adobe.com/aboutadobe/pressroom/pressreleases/200910/AdobeColdFusion9NowAvailable.html&quot; target=&quot;_blank&quot;&gt;announced the release of ColdFusion 9&lt;/a&gt;. I am very pleased to have been part of the Beta for CF9 and although I didn&apos;t spend as much time as I would have liked on it, my one enhancement suggestion was incorporated in the final release.

What supprised me about the release was that Adobe&apos;s marketing of the features in CF9 don&apos;t match my list of great new features I have found during the Beta. (I do hope all my favourites are still in the final release!)

Adobe has a list &lt;a href=&quot;http://www.adobe.com/products/coldfusion/features/&quot; target=&quot;_blank&quot;&gt;on their web site&lt;/a&gt; which has the following headings:
&lt;ul&gt;
&lt;li&gt;Office file interoperability&lt;/li&gt;
&lt;li&gt;Tight integration with ColdFusion Builder&lt;/li&gt;
&lt;li&gt;Object-relational mapping&lt;/li&gt;
&lt;li&gt;Microsoft Office SharePoint integration&lt;/li&gt;
&lt;li&gt;Enhanced Adobe Flash Platform integration&lt;/li&gt;
&lt;li&gt;ColdFusion as a Service&lt;/li&gt;
&lt;li&gt;Adobe AIR local/remote database synchronization&lt;/li&gt;
&lt;li&gt;New Ajax controls&lt;/li&gt;
&lt;li&gt;Server Manager&lt;/li&gt;
&lt;li&gt;Built-in support for portlet standards&lt;/li&gt;
&lt;/ul&gt;

It doesn&apos;t match my personal list very closely.
My top five favourites are:
&lt;ul&gt;
&lt;li&gt;Implicit Getters / Setters&lt;/li&gt;
&lt;li&gt;ORM Hibernate Integration&lt;/li&gt;
&lt;li&gt;AJAX UI controls&lt;/li&gt;
&lt;li&gt;Script Enhancements&lt;/li&gt;
&lt;li&gt;Implicit Structure and Array improvements&lt;/li&gt;
&lt;/ul&gt;

What&apos;s your favourite CF9 feature?

Tommorrow eveing at the &lt;a href=&quot;http://groups.adobe.com/groups/59092eb2ce/summary&quot; target=&quot;_blank&quot;&gt;Thames Valley CFUG&lt;/a&gt; I will be presenting an introduction to ORM in CF9 and we will be discussing our favourite enhancements in CF9. Why not come along and find out what CF9 can offer you? It free and I&apos;ll even supply some sandwiches.
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<category>Centaur</category>				
				
				<pubDate>Tue, 13 Oct 2009 10:23:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/10/13/ColdFusion-9-Released</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>TVCFUG October Meeting - What&apos;s New in CF9?</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/10/1/TVCFUG-October-Meeting</link>
				<description>
				
				The ColdFusion 9 public beta release has three main themes:

    * Unrivaled developer productivity,
    * Deep enterprise integration and
    * Simple work flow with Adobe Flash&#xae; Builder", Adobe AIR&#xae; and AJAX to create expressive applications.

At our October meeting we will be discussing what&apos;s new, what&apos;s good and what&apos;s bad in this latest release.

I am particularly interesting to know if you agree with Adobe&apos;s choice of the marketing points they are promoting on the new release.

Please &lt;a href=&quot;http://groups.adobe.com/posts/926977e566&quot; target=&quot;_blank&quot;&gt;register&lt;/a&gt; if you plan to come, so that security are expecting you.

I will provide a few sandwiches and as usual Adobe have given us some goodies to raffle.
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<category>Centaur</category>				
				
				<category>TVCFUG</category>				
				
				<pubDate>Thu, 01 Oct 2009 11:50:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/10/1/TVCFUG-October-Meeting</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>MAX Keynote Sessions Online</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/10/1/MAX-Keynote-Sessions-Online</link>
				<description>
				
				Stacy Sison who does a  lot to support all the Adobe User Groups around the world has arranged for group members to be able to see the MAX keynote sessions live online.

To do that you must register first. If you are interested please go to &lt;a href=&quot;http://max.adobe.com/online/&quot; target=&quot;_blank&quot;&gt;Max Online&lt;/a&gt; register.
				
				</description>
						
				
				<category>Adobe</category>				
				
				<category>Conferences</category>				
				
				<pubDate>Thu, 01 Oct 2009 11:47:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/10/1/MAX-Keynote-Sessions-Online</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>iPhone Applications in ColdFusion</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/9/18/iPhone-Applications-in-ColdFusion</link>
				<description>
				
				Last night I watched and interesting presentation, by Joshua Adams of Adobe, showing how to implement certain types of applications using Javascript and ColdFusion on iPhone.

You may think that building applications for the iPhone wouild be well beyond ColdFusion which is a server side technology. The availability of several javascript libraries allow applications written in CF to run with iPhone as a bit more than a basic browser client.

In &lt;a href=&quot;http://experts.na3.acrobat.com/p69812855/&quot; target=&quot;_blank&quot;&gt;this presentation by Joshua Adams&lt;/a&gt;, you can see how easy it is to make use of some of the features on an iPhone from what is essentially an AJAX application written in CF and Javascript.

If you want to download the slides they are available on &lt;a href=&quot;http://blog.joshuaadams.com/index.cfm/2009/8/14/iPhone-Apps-Adobe-ColdFusion&quot; target=&quot;_blank&quot;&gt;his blog&lt;/a&gt;.

The presented example application uses &lt;a href=&quot;http://www.nimblekit.com/&quot;&gt;nimblekit&lt;/a&gt;, a JS framework for the iPhone. This allows access to some of the special features of the iPhone.

Joshua also mentions several other frameworks that would be suitable for use with CF including &lt;a href=&quot;http://quickconnect.pbworks.com/&quot; target=&quot;_blank&quot;&gt;quickconnect&lt;/a&gt; which can also be used to develop apps for the Symbian Platform and &lt;a href=&quot;http://phonegap.com/&quot; target=&quot;_blank&quot;&gt;PhoneGap&lt;/a&gt; for the blackberry.
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<category>Mobile</category>				
				
				<pubDate>Fri, 18 Sep 2009 08:39:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/9/18/iPhone-Applications-in-ColdFusion</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Stubs and Mocks in cfSpec 0.3</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/9/1/Stubs-and-Mocks-in-cfSpec-03</link>
				<description>
				
				I noticed last week that there is a new version of cfSpec available and took the oportunity to download it.

I was very keen to try out the new Mocking feature as a new project I started needs to be able to do that because the 
web services it will be using won&apos;t be available until after the project has been underway for several weeks. 
&apos;Great,&apos; I thought, I can start straight away and use Mocks for the missing web services.

Unfortunately there is no documentation yet, but Ron Hopper very kindly sent me a document that helped me get started
with writing some simple Mocks and this week I should be able to nail down some more realistic ones for my project.

The new version of cfSpec builds upon the great work done in earlier versions with Stubs, so using a Mock is very 
similar but gives you extra abilities to set what the object returns and test how many times it is called. 
So let&apos;s start with some examples of stubs which worked in version 0.2.
				 [More]
				</description>
						
				
				<category>BDD</category>				
				
				<pubDate>Tue, 01 Sep 2009 12:15:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/9/1/Stubs-and-Mocks-in-cfSpec-03</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Behaviour Driven Development at TVCFUG</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/9/1/Behaviour-Driven-Development-at-TVCFUG</link>
				<description>
				
				One of the tools promoted by Agile Development Gurus is Test Driven Development (TDD) but TDD didn&apos;t work for me. Eventually I discovered Behaviour Driven Development (BDD) and cfSpec which I found much more user friendly.

If you are interested in this new way of thinking about development it would be great to see you at this meeting.

The meeting will convene at 6:00pm for 6:30 Start at Phones International.

We will also be doing the usual raffle and I have a very nice Adobe Rucksack to give away to a lucky winner.

Please email me at tvcfug (at) objectiveinternet (dot) com or log in on Adobe Groups and say you will be attending to ensure your name is on the list on the door. For details of the location please go to our &lt;a href=&quot;http://groups.adobe.com/posts/44eb6acf7d&quot; target=&quot;_blank&quot;&gt;Adobe Groups Site&lt;/a&gt;.
				
				</description>
						
				
				<category>BDD</category>				
				
				<category>TVCFUG</category>				
				
				<pubDate>Tue, 01 Sep 2009 11:38:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/9/1/Behaviour-Driven-Development-at-TVCFUG</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>New stuff in CF9</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/7/13/New-stuff-in-CF9</link>
				<description>
				
				Ben Forta has posted an &lt;a href=&quot;http://www.adobe.com/devnet/coldfusion/articles/coldfusion9_whatsnew.html&quot; target=&quot;_blank&quot;&gt;article&lt;/a&gt; on whats new in CF9. All I can say is that it only scratches the surface of the new features. As soon as I work out what I can say (Non Disclosure Agreement in force) I will post my own list of what I think is good about the new release.

In the meantime what&apos;s your favourite new feature? Please let me know so I can plan a TVCFUG meeting on CF9.
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<category>Centaur</category>				
				
				<pubDate>Mon, 13 Jul 2009 09:44:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/7/13/New-stuff-in-CF9</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Adobe ColdFusion Centaur and ColdFusion Builder Betas on Labs</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/7/13/Adobe-ColdFusion-Centaur-and-ColdFusion-Builder-Betas-on-Labs</link>
				<description>
				
				If you are a ColdFusion user you&apos;ve probably seen the recent announcements about the upcomming release of ColdFusion 9 (aka Centaur) and ColdFusion Builder. Well if you haven&apos;t had a chance to join the Beta program yet and see them for yourself, today is your chance since they are both available today on &lt;a href=&quot;http://labs.adobe.com/technologies/coldfusion9/&quot; target=&quot;_blank&quot;&gt;Adobe Labs&lt;/a&gt;.

I have been playing with the Beta for a while now and am impressed by the new features in version 9 which seem to have taken on board a number of suggestions from the community. I&apos;m just hoping all mine get in before the final release.
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<category>Centaur</category>				
				
				<pubDate>Mon, 13 Jul 2009 09:23:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/7/13/Adobe-ColdFusion-Centaur-and-ColdFusion-Builder-Betas-on-Labs</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Scotch on the Road</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/6/2/Scotch-on-the-Road</link>
				<description>
				
				There were two great changes to the Scotch on the Rocks conference this year. For me the first was the timing. I am usually away during the Bank Holiday week so I have missed the conference on previous occasions for that reason. This year it was one week later so I got to go for a change. 

The other was that it is moveing from place to place with days in London, Manchester and Edinburgh. So I didn&apos;t have to travel to see some really great presentations.

For me the highlights were:
&lt;ul&gt;
&lt;li&gt;David Rutter who gave a really excellent summary of how to make ColdFusion application secure,&lt;/li&gt;
&lt;li&gt;Terry Ryan on Bolt Extensions,&lt;/li&gt;
&lt;li&gt;Terry Ryan on the Hibernate features in CF9, and&lt;/li&gt;
&lt;li&gt;Serge Jespers on Flash Catalyst.&lt;/li&gt;
&lt;/ul&gt;

I thinks the Audience were stunned by the demo of Flash Catalyst even if nobody liked the new name for Flex Builder.

It was also good to meet a few of the people who I have interacted with on here and twitter over tha last year. I&apos;ll write some stuff about the presentations soon.
				
				</description>
						
				
				<category>Adobe</category>				
				
				<category>Conferences</category>				
				
				<pubDate>Tue, 02 Jun 2009 14:04:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/6/2/Scotch-on-the-Road</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Behaviour Driven Development with cfSpec at Devon CFUG</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/5/8/Behaviour-Driven-Development-with-cfSpec-at-Devon-CFUG</link>
				<description>
				
				I will be speaking about Behaviour Driven Development (BDD) and &lt;a href=&quot;http://wiki.github.com/adelphus/cfspec&quot; target=&quot;_blank&quot;&gt;cfSpec&lt;/a&gt; at the Devon CFUG on Wednesday 13th May.

Over the last few weeks I have been preparing a presentation on &lt;a href=&quot;http://behaviour-driven.org/&quot; taget=&quot;_blank&quot;&gt;BDD&lt;/a&gt;, mostly to get the ideas straight in my own head. If you are interested in this new way of thinking about development it would be great to see you in Exeter next week.

The meeting will convene at 6:00pm for 6:30 Start at Crisp eBusiness. &lt;a href=&quot;http://maps.google.co.uk/maps?q=EX4+3SR(Crisp+eBusiness)&amp;ie=UTF8&amp;ll=50.726921,-3.534958&amp;spn=0.007416,0.015428&amp;z=16&amp;iwloc=A&quot; target=&quot;_blank&quot;&gt;Map&lt;/a&gt;.

I have been &lt;a href=&quot;http://www.objectiveaction.com/Kevin/index.cfm/2009/3/5/Behaviour-Driven-Development&quot;&gt;enjoying using BDD&lt;/a&gt; for the last few weeks and hope to have time to write a blog entry or two about it soon.
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<category>BDD</category>				
				
				<pubDate>Fri, 08 May 2009 09:51:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/5/8/Behaviour-Driven-Development-with-cfSpec-at-Devon-CFUG</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Behaviour Driven Development</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/3/5/Behaviour-Driven-Development</link>
				<description>
				
				Following the recent inaugural meeting of the Adobe Web Business group, I was keen to find out more about Agile development and found some &lt;a href=&quot;http://behaviour-driven.org/&quot; target=&quot;_blank&quot;&gt;really&lt;/a&gt; &lt;a href=&quot;http://dannorth.net/introducing-bdd&quot; target=&quot;_blank&quot;&gt;interesting&lt;/a&gt; &lt;a href=&quot;http://www.adelphus.com/2009/1/1/cfspec-behaviour-driven-development-for-coldfusion&quot; target=&quot;_blank&quot;&gt;stuff&lt;/a&gt; about Behaviour Driven Development.

For me one of the interesting points was simply that it focuses on &lt;a href=&quot;http://behaviour-driven.org/PowerfulQuestions&quot; target=&quot;_blank&quot;&gt;Powerful questions&lt;/a&gt; and &lt;a href=&quot;http://behaviour-driven.org/GettingTheWordsRight&quot; target=&quot;_blank&quot;&gt;getting the words right&lt;/a&gt; at the start.

Shortly after the meeting I downloaded &lt;a href=&quot;http://cfspec.riaforge.org/&quot; target=&quot;_blank&quot;&gt;cfSpec&lt;/a&gt; and began playing with it. Now I am hooked. At that time cfSpec was at version 0.1.1 and yesterday I noticed that it has moved on to version 0.2.1 which is good to see. The first was very usable and the second adds several new features.

I might be a bit late to this party as several other bloggers have &lt;a href=&quot;http://www.alanlivie.com/index.cfm/2009/1/6/Coldfusion-finally-gets-BDD-with-cfSpec-framework&quot; target=&quot;_blank&quot;&gt;already&lt;/a&gt; 
&lt;a href=&quot;http://corfield.org/blog/index.cfm/do/blog.entry/entry/BehaviorDriven_Development_with_cfSpec&quot; target=&quot;_blank&quot;&gt;commented&lt;/a&gt; on cfSpec.

There seems to be a growing interest in BDD and in particular I see that Sean Corfield is speaking on BDD at &lt;a href=&quot;http://cfobjective.com/sessions.cfm&quot; target=&quot;_blank&quot;&gt;cf.objective().2009&lt;/a&gt;.

One thing that I have found frustrating is creating tests for old code. To help me do that, I have created an additional &lt;a href=&quot;/client/enclosures/generate.cfm.txt&quot;&gt;custom tag&lt;/a&gt;. You can add the generate tag to cfSpec and then simply point it at an existing cfc to create a framework for the cfSpec. Its a bit of a hack but saves me lots of typing because I was fairly good about adding hints to my CFCs.

&lt;code&gt;
&lt;cfimport taglib=&quot;/cfspec&quot; prefix=&quot;&quot;&gt;
&lt;generate for=&quot;my.cfc.path.cfcname&quot; /&gt;
&lt;/code&gt;

Before I get loads of negative comments, I do realise that this is completly backwards and the wrong way to do the job of creating the tests but its only designed to help when you already have some code and you plan to refactor it. I feel a good first step its to create some tests which can be run after refactoring to prove that the code wasn&apos;t broken in the process. Let me know if you find the tag useful.
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<category>BDD</category>				
				
				<pubDate>Thu, 05 Mar 2009 16:09:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/3/5/Behaviour-Driven-Development</guid>
				
				<enclosure url="http://www.objectiveaction.com/Kevin/enclosures/generate.cfm" length="2183" type="application/text"/>
				
			</item>
			
		 	
			
			
			<item>
				<title>Adobe Business User Group - London</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/2/3/Adobe-Business-User-Group--London</link>
				<description>
				
				My colleague Roger Panton is starting a new user group which will focus on Business issues. The first meeting on Wednesday 11th February 2009 will focus on how Agile software development methods can improve the development process. The meeting will be held at Adobe&apos;s London Office at 4pm.

The agenda is:
&lt;h3&gt;Introduction&lt;/h3&gt;
Claude Englebert, EMEA ColdFusion Product Specialist, Adobe.
&lt;h3&gt;Agile Software Development&lt;/h3&gt;
David McLean  Head of Quality and Delivery, PJ Media.
&lt;h3&gt;Cost Effective Web Development&lt;/h3&gt;
Roger Panton  Business Manager, Objective Internet Ltd.

If your business relies on continual maintenance or development of web based software and you are looking for a more cost effective way to keep up with the pace of change, then you should join our group free of charge.

Who should attend? Programme Managers, IT Managers and Finance Directors. During and following the meeting there will be networking opportunities and refreshments.

To register your attendance at this inaugural meeting please email Roger Panton on roger (AT) objectiveinternet (DOT) com.

More details at &lt;a href=&quot;http://groups.adobe.com/groups/56ed4d12d4/summary&quot;&gt;http://groups.adobe.com/groups/56ed4d12d4/summary&lt;/a&gt;
				
				</description>
						
				
				<category>Adobe</category>				
				
				<pubDate>Tue, 03 Feb 2009 15:58:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/2/3/Adobe-Business-User-Group--London</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>onMissingMethod and Abstract Object - Part 2</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/1/27/onMissingMethod-and-Abstract-Object--Part-2</link>
				<description>
				
				I just did a bit more work on the onMissingMethod handler in my abstract bean cfc.

In case you are interested here are the differences between my implementation and &lt;a href=&quot;http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/140&quot; target=&quot;_blank&quot;&gt;John Whish&apos;s original&lt;/a&gt; which it was based on. 
&lt;ul&gt;
&lt;li&gt;I have improved the code compared to the &lt;a href=&quot;http://www.objectiveaction.com/Kevin/index.cfm/2009/1/26/onMissingMethod-and-Abstract-Objects&quot;&gt;earlier post&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I have made the code work when you have multiple levels of CFC with one extending another. (John&apos;s original code only worked at the first level.&lt;/li&gt;
&lt;li&gt;I have implemented the checking of what is gettable and settable.&lt;li&gt;
&lt;li&gt;I have removed the type checking that John put in, as I prefer to be able to load everything from a form into my bean and call validate to find out what is invalid. (You can always put John&apos;s checking back.)&lt;/li&gt;
&lt;/ul&gt;
Any way here is the code should you want it:
				 [More]
				</description>
						
				
				<category>ColdFusion</category>				
				
				<category>Scaffolding</category>				
				
				<pubDate>Tue, 27 Jan 2009 16:27:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/1/27/onMissingMethod-and-Abstract-Object--Part-2</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>onMissingMethod and Abstract Objects</title>
				<link>http://www.objectiveaction.com/Kevin/index.cfm/2009/1/26/onMissingMethod-and-Abstract-Objects</link>
				<description>
				
				I have finally got around to working a bit more on the fusebox scaffolder project. One of the things I have meaning to do was improve the generated code by using an abstract bean and letting generated beans inherit some base methods. I intend to do this for most of the generated cfcs, but just started with the bean as a first step.

I have not in the past used onMissingMethod but now enough of what I am doing is on CF8 that I decided it was worth incorporating in the generated code. I began by reading up about it to see 
&lt;a href=&quot;http://code.google.com/p/org-corfield-cfmx/source/browse/trunk/wwwroot/org/corfield/component.cfc?r=71&quot; target=&quot;_blank&quot;&gt;what&lt;/a&gt;
&lt;a href=&quot;http://www.pbell.com/index.cfm/2008/4/14/Rebuilding-my-Base-Object&quot; target=&quot;_blank&quot;&gt;others&lt;/a&gt; 
&lt;a href=&quot;http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/140&quot; target=&quot;_blank&quot;&gt;had&lt;/a&gt;
&lt;a href=&quot;http://www.bennadel.com/blog/868-Learning-ColdFusion-8-OnMissingMethod-Event-Handler.htm&quot; target=&quot;_blank&quot;&gt;done&lt;/a&gt;.

There was certainly lots of ideas out there and I decided to take John Whish&apos;s &lt;a href=&quot;http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/140&quot;&gt;dynamicAccessors.cfc&lt;/a&gt; and take it a bit further.

John&apos;s idea was to make use of the &amp;lt;cfproperty&amp;gt; tag to set up the properties in a cfc and then to make use of the onMissingMethod in a base cfc to create dynamic accessors. I really like this idea but I also like Peter Bell&apos;s idea for controlling the access to the getters and setters through a list of property names. 

I was wondering about combining the two ideas and remembered somthing I discovered in the early days of CFCs. You can actaully create your own attributes on many of the CF tags just by adding them to the tag.

So I can write:
&lt;code&gt;
&lt;cfproperty name=&quot;title&quot; type=&quot;string&quot; settable=&quot;true&quot; gettable=&quot;true&quot;/&gt;
&lt;/code&gt;
and ColdFusion will ignore my two new attributes in most respects. What it will do is add them to the metadata so I can read them. This allows me to extend John&apos;s getAccessors() method to update two new structures one for the setters and one for the getters.

&lt;code&gt;
&lt;cffunction name=&quot;getAccessors&quot;
			hint=&quot;I build a structure of public properties and data types.&quot; 
			access=&quot;public&quot;&gt;
		&lt;cfset var metadata = &quot;&quot; /&gt;
		&lt;cfset var properties = arrayNew(1) /&gt;
		&lt;cfset var index = &quot;&quot; /&gt;
			
		&lt;cfif StructKeyExists( variables.instance, &quot;_properties&quot; ) 
			AND StructKeyExists( variables.instance, &quot;_getable&quot; )
			AND StructKeyExists( variables.instance, &quot;_setable&quot; )
			AND IsStruct( variables.instance._properties )
			AND IsStruct( variables.instance._gettable )
			AND IsStruct( variables.instance._settable )&gt;
			
			&lt;cfdump var=&quot;#variables.instance._properties#&quot;/&gt;
			&lt;cfdump var=&quot;#variables.instance._gettable#&quot;/&gt;
			&lt;cfdump var=&quot;#variables.instance._settable#&quot;/&gt;
			&lt;cfabort/&gt;
			
			&lt;cfreturn variables.instance._properties /&gt;
		&lt;cfelse&gt;
			&lt;!--- The first time we get or set a property we need to build a structure of properties and types ---&gt;
			&lt;cfset variables.instance._properties = {} /&gt;
			&lt;cfset variables.instance._gettable = {} /&gt;
			&lt;cfset variables.instance._settable = {} /&gt;
			
			&lt;cfset metadata = getMetaData(this)&gt;
			
			&lt;cfloop condition=&quot;structKeyExists(metadata,&apos;properties&apos;) OR structKeyExists(metadata,&apos;extends&apos;)&quot;&gt;
				&lt;cfif structKeyExists(metadata,&quot;properties&quot;)&gt;
					&lt;cfset properties = metadata.properties /&gt;
					&lt;cfloop array=&quot;#properties#&quot; index=&quot;index&quot;&gt;
						&lt;cfif IsDefined(&quot;index.type&quot;)&gt;
							&lt;cfset StructInsert( variables.instance._properties, index.name, index.type ) /&gt;
						&lt;cfelse&gt;
							&lt;cfset StructInsert( variables.instance._properties, index.name, &quot;any&quot; ) /&gt;
						&lt;/cfif&gt;
						&lt;cfif IsDefined(&quot;index.getable&quot;)&gt;
							&lt;cfset StructInsert( variables.instance._gettable, index.name, index.getable ) /&gt;
						&lt;cfelse&gt;
							&lt;cfset StructInsert( variables.instance._gettable, index.name, &quot;false&quot; ) /&gt;
						&lt;/cfif&gt;
						&lt;cfif IsDefined(&quot;index.setable&quot;)&gt;
							&lt;cfset StructInsert( variables.instance._settable, index.name, index.setable ) /&gt;
						&lt;cfelse&gt;
							&lt;cfset StructInsert( variables.instance._settable, index.name, &quot;false&quot; ) /&gt;
						&lt;/cfif&gt;
					&lt;/cfloop&gt;
				&lt;/cfif&gt;
				&lt;cfif structKeyExists(metadata,&quot;extends&quot;)&gt;
					&lt;cfset metadata = metadata.extends&gt;
				&lt;cfelse&gt;
					&lt;cfset metadata = &quot;&quot;&gt;
				&lt;/cfif&gt;
			&lt;/cfloop&gt;
			
			&lt;cfreturn variables.instance._properties /&gt;	  
		&lt;/cfif&gt;
			
	&lt;/cffunction&gt;
&lt;/code&gt;
I now have two new structures in my object which I can use to test if the generated code should allow you to set or get each property.

A small change to the onMissingMethod() function and I can now control who has access quite easily.

What I really want to know is: Am I mad to do this? After all I am arbitarily extending the language and I didn&apos;t ask anyones permission.

27Jan 16:25 GMT  - Modified to fix a couple of typos.
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<category>Scaffolding</category>				
				
				<category>CodeGeneration</category>				
				
				<pubDate>Mon, 26 Jan 2009 20:48:00+0100</pubDate>
				<guid>http://www.objectiveaction.com/Kevin/index.cfm/2009/1/26/onMissingMethod-and-Abstract-Objects</guid>
				
			</item>
			
		 	
			</channel></rss>