<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.clearcrystalmedia.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Polymorphism</title>
	
	<link>http://www.clearcrystalmedia.com/pm</link>
	<description>using the right technology at the right time</description>
	<lastBuildDate>Fri, 23 Jul 2010 13:27:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.clearcrystalmedia.com/polymorphism" /><feedburner:info uri="polymorphism" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>39.965131</geo:lat><geo:long>-83.004316</geo:long><feedburner:emailServiceId>polymorphism</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Playing around with automatic validations in Wheels 1.1</title>
		<link>http://feeds.clearcrystalmedia.com/~r/polymorphism/~3/8f3ubyIoc-0/</link>
		<comments>http://www.clearcrystalmedia.com/pm/automatic-validations-wheels-1-1/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 12:02:26 +0000</pubDate>
		<dc:creator>Chris Peters</dc:creator>
				<category><![CDATA[ColdFusion on Wheels]]></category>

		<guid isPermaLink="false">http://www.clearcrystalmedia.com/pm/?p=491</guid>
		<description><![CDATA[<p>A cool new feature coming up in ColdFusion on Wheels 1.1 is <em>automatic validations</em>. I <a href="http://labs.clearcrystalmedia.com/cfwheels/automatic-validations">wrote a page</a> last night to play around with the new feature a little and figure out how it all works.</p>]]></description>
			<content:encoded><![CDATA[<p>A cool new feature coming up in ColdFusion on Wheels 1.1 is <em>automatic validations</em>. I <a href="http://labs.clearcrystalmedia.com/cfwheels/automatic-validations">wrote a page</a> last night to play around with the new feature a little and figure out how it all works.</p>
<p>In a nutshell, automatic validations remove the need for you to call simple validation functions like <code>validatesPresenceOf()</code>, <code>validatesLengthOf()</code>, and <code>validatesNumericalityOf()</code> in your models. Wheels will introspect your database fields for signals like <code>NOT NULL</code>, data types, and maximum lengths. When you call <code>save()</code>, <code>create()</code>, or <code>update()</code>, Wheels will run the validations for you based on this information (unless you specify otherwise).</p>
<p>If the database is already storing this information about your data, why not leverage it without writing any more code? Very clever stuff.</p>
<p>Here are the beginnings of <a href="http://labs.clearcrystalmedia.com/cfwheels/automatic-validations">my experimentation with the new feature</a>. Feel free to follow along and see what&#8217;s coming up in the next version. There will be more.</p>

<!-- start wp-tags-to-technorati 1.01 -->

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/polymorphism/~4/8f3ubyIoc-0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.clearcrystalmedia.com/pm/automatic-validations-wheels-1-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.clearcrystalmedia.com/pm/automatic-validations-wheels-1-1/</feedburner:origLink></item>
		<item>
		<title>Bug fixes in ColdFISH on Wheels version 0.3</title>
		<link>http://feeds.clearcrystalmedia.com/~r/polymorphism/~3/dhxNQZsX2qA/</link>
		<comments>http://www.clearcrystalmedia.com/pm/bug-fixes-coldfish-on-wheels-version-0-3/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 01:36:46 +0000</pubDate>
		<dc:creator>Chris Peters</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion on Wheels]]></category>
		<category><![CDATA[cfwheels]]></category>
		<category><![CDATA[coldfish]]></category>
		<category><![CDATA[coldfish on wheels]]></category>
		<category><![CDATA[coldfusion on wheels]]></category>
		<category><![CDATA[dave shuck]]></category>
		<category><![CDATA[expandpath]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://www.clearcrystalmedia.com/pm/?p=486</guid>
		<description><![CDATA[<p>I went to deploy my new <a href="http://cfwheels.org/plugins/listing/40">ColdFISH on Wheels plugin</a> on my Linux server and got a curious error. Especially if you're using Linux, you'll want to upgrade to ColdFISH on Wheels 0.3 <abbr title="as soon as possible">ASAP</abbr>.</p>
<p>What happened? Read on to find out.</p>]]></description>
			<content:encoded><![CDATA[<p>I went to deploy my new <a href="http://cfwheels.org/plugins/listing/40">ColdFISH on Wheels plugin</a> on my Linux server and got a curious error. Especially if you&#8217;re using Linux, you&#8217;ll want to upgrade to ColdFISH on Wheels 0.3 <abbr title="as soon as possible">ASAP</abbr>.</p>
<p>So what was the error? It involved <a href="http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7c67.html"><code>ExpandPath()</code></a>. Fortunately, <a title="Strange behavior with ColdFusion ExpandPath() when using Symbolic Links" href="http://daveshuck.instantspot.com/blog/2009/09/23/Strange-behavior-with-ColdFusion-ExpandPath-when-using-Symbolic-Links">Dave Shuck&#8217;s blog saved the day for me</a>. Evidently <code>"/config/coldfishconfig.xml"</code> means something different on Linux than <code>"./config/coldfishconfig.xml"</code>. It was really strange what the first string translated to on my server. It was some weird path involving <code>"shared://"</code>.</p>
<p>Go figure.</p>
<p>How the hell did any of us ever get by before Google got really good and  everyone blogged about their solutions to problems?</p>

<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/cfwheels' rel='tag' target='_self'>cfwheels</a>, <a class='technorati-link' href='http://technorati.com/tag/coldfish' rel='tag' target='_self'>coldfish</a>, <a class='technorati-link' href='http://technorati.com/tag/coldfish+on+wheels' rel='tag' target='_self'>coldfish on wheels</a>, <a class='technorati-link' href='http://technorati.com/tag/ColdFusion' rel='tag' target='_self'>ColdFusion</a>, <a class='technorati-link' href='http://technorati.com/tag/coldfusion+on+wheels' rel='tag' target='_self'>coldfusion on wheels</a>, <a class='technorati-link' href='http://technorati.com/tag/dave+shuck' rel='tag' target='_self'>dave shuck</a>, <a class='technorati-link' href='http://technorati.com/tag/expandpath' rel='tag' target='_self'>expandpath</a>, <a class='technorati-link' href='http://technorati.com/tag/linux' rel='tag' target='_self'>linux</a>, <a class='technorati-link' href='http://technorati.com/tag/plugin' rel='tag' target='_self'>plugin</a>, <a class='technorati-link' href='http://technorati.com/tag/plugins' rel='tag' target='_self'>plugins</a></p>

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/polymorphism/~4/dhxNQZsX2qA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.clearcrystalmedia.com/pm/bug-fixes-coldfish-on-wheels-version-0-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.clearcrystalmedia.com/pm/bug-fixes-coldfish-on-wheels-version-0-3/</feedburner:origLink></item>
		<item>
		<title>Structuring CFCs a little like Ruby</title>
		<link>http://feeds.clearcrystalmedia.com/~r/polymorphism/~3/tMgPS-iRyqA/</link>
		<comments>http://www.clearcrystalmedia.com/pm/structuring-cfcs-like-ruby/#comments</comments>
		<pubDate>Wed, 19 May 2010 02:36:19 +0000</pubDate>
		<dc:creator>Chris Peters</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion on Wheels]]></category>
		<category><![CDATA[cfml]]></category>
		<category><![CDATA[cfwheels]]></category>
		<category><![CDATA[coldfusion on wheels]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ror]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubyonrails]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.clearcrystalmedia.com/pm/?p=465</guid>
		<description><![CDATA[<p>As I hit the books and learned about Ruby on Rails a couple years ago, there was one thing that I admired about how Ruby handles public and private sections of classes.</p>
<p>How can I take a lesson from Ruby and apply it to my CFML coding? I'm glad that you asked! Read on for more details.</p>]]></description>
			<content:encoded><![CDATA[<p>As I hit the books and learned about Ruby on Rails a couple years ago, there was one thing that I admired about how Ruby handles public and private sections of classes.</p>
<p>Take this, for example:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> PostsController <span style="color:#006600; font-weight:bold;">&lt;</span> ApplicationController
    before_filter <span style="color:#ff3333; font-weight:bold;">:find_post</span>, <span style="color:#ff3333; font-weight:bold;">:only</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:show</span>, <span style="color:#ff3333; font-weight:bold;">:edit</span>, <span style="color:#ff3333; font-weight:bold;">:update</span>, <span style="color:#ff3333; font-weight:bold;">:destroy</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> show
        <span style="color:#008000; font-style:italic;"># ...</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> edit
        <span style="color:#008000; font-style:italic;"># ...</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> update
        <span style="color:#008000; font-style:italic;"># ...</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> destroy
        <span style="color:#008000; font-style:italic;"># ...</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    private
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> find_post
        <span style="color:#0066ff; font-weight:bold;">@post</span> = Post.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span>params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:id</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Using the <code>private</code> keyword, the interpreter knows that all methods defined in the section afterward are private. It&#8217;s a pretty clean way of demarcating different blocks of code that have different roles.</p>
<p>While we have no such set of keywords for <abbr title="ColdFusion Markup Language">CFML</abbr> except at the function level, why not use comments to do similar structuring of your <abbr title="ColdFusion Component">CFC</abbr>s?</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfcomponent</span> extends<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;Controller&quot;</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
    <span style="color: #808080; font-style: italic;">&lt;!-------------------------------------&gt;</span>
    <span style="color: #808080; font-style: italic;">&lt;!--- Public ---&gt;</span>
&nbsp;
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cffunction</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;init&quot;</span><span style="color: #0000FF;">&gt;</span></span>
        <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfset</span> filters<span style="color: #0000FF;">&#40;</span>through<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;findPost, only=&quot;</span>show,edit,update,destroy<span style="color: #009900;">&quot;)&gt;</span></span>
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #990000; font-weight: bold;">cffunction</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cffunction</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;show&quot;</span><span style="color: #0000FF;">&gt;</span></span>
        <span style="color: #808080; font-style: italic;">&lt;!--- ... ---&gt;</span>
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #990000; font-weight: bold;">cffunction</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cffunction</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;edit&quot;</span><span style="color: #0000FF;">&gt;</span></span>
        <span style="color: #808080; font-style: italic;">&lt;!--- ... ---&gt;</span>
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #990000; font-weight: bold;">cffunction</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cffunction</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;update&quot;</span><span style="color: #0000FF;">&gt;</span></span>
        <span style="color: #808080; font-style: italic;">&lt;!--- ... ---&gt;</span>
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #990000; font-weight: bold;">cffunction</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cffunction</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;destroy&quot;</span><span style="color: #0000FF;">&gt;</span></span>
        <span style="color: #808080; font-style: italic;">&lt;!--- ... ---&gt;</span>
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #990000; font-weight: bold;">cffunction</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
    <span style="color: #808080; font-style: italic;">&lt;!-------------------------------------&gt;</span>
    <span style="color: #808080; font-style: italic;">&lt;!--- Private ---&gt;</span>
&nbsp;
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cffunction</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;findPost&quot;</span> <span style="color: #0000FF;">access</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;private&quot;</span><span style="color: #0000FF;">&gt;</span></span>
        <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfset</span> post <span style="color: #0000FF;">=</span> model<span style="color: #0000FF;">&#40;</span><span style="color: #009900;">&quot;post&quot;</span><span style="color: #0000FF;">&#41;</span>.findByKey<span style="color: #0000FF;">&#40;</span>params.key<span style="color: #0000FF;">&#41;</span><span style="color: #0000FF;">&gt;</span></span>
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #990000; font-weight: bold;">cffunction</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #990000; font-weight: bold;">cfcomponent</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p>A perfect translation? No. But an idea on how to use some simple comments to make your life easier when maintaining your code in the future.</p>
<p>I&#8217;ve taken it a step farther and also have been creating &#8220;Filters&#8221; sections for filters, just before &#8220;Private&#8221; methods.</p>

<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/cfml' rel='tag' target='_self'>cfml</a>, <a class='technorati-link' href='http://technorati.com/tag/cfwheels' rel='tag' target='_self'>cfwheels</a>, <a class='technorati-link' href='http://technorati.com/tag/ColdFusion' rel='tag' target='_self'>ColdFusion</a>, <a class='technorati-link' href='http://technorati.com/tag/coldfusion+on+wheels' rel='tag' target='_self'>coldfusion on wheels</a>, <a class='technorati-link' href='http://technorati.com/tag/Programming' rel='tag' target='_self'>Programming</a>, <a class='technorati-link' href='http://technorati.com/tag/rails' rel='tag' target='_self'>rails</a>, <a class='technorati-link' href='http://technorati.com/tag/ror' rel='tag' target='_self'>ror</a>, <a class='technorati-link' href='http://technorati.com/tag/ruby' rel='tag' target='_self'>ruby</a>, <a class='technorati-link' href='http://technorati.com/tag/rubyonrails' rel='tag' target='_self'>rubyonrails</a>, <a class='technorati-link' href='http://technorati.com/tag/web+development' rel='tag' target='_self'>web development</a></p>

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/polymorphism/~4/tMgPS-iRyqA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.clearcrystalmedia.com/pm/structuring-cfcs-like-ruby/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.clearcrystalmedia.com/pm/structuring-cfcs-like-ruby/</feedburner:origLink></item>
		<item>
		<title>Full CFScript CFCs aren’t yet where they need to be</title>
		<link>http://feeds.clearcrystalmedia.com/~r/polymorphism/~3/oJZq_xD9308/</link>
		<comments>http://www.clearcrystalmedia.com/pm/full-cfscript-cfcs-not-where-they-need-to-be/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 02:48:34 +0000</pubDate>
		<dc:creator>Chris Peters</dc:creator>
				<category><![CDATA[Administrivia]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[ccm]]></category>
		<category><![CDATA[cfml]]></category>
		<category><![CDATA[cfscript]]></category>
		<category><![CDATA[chris peters]]></category>
		<category><![CDATA[clear crystal media]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[polymorphism]]></category>
		<category><![CDATA[railo]]></category>

		<guid isPermaLink="false">http://www.clearcrystalmedia.com/pm/?p=459</guid>
		<description><![CDATA[<p>A few months ago, I blogged about my excitement about the role that <a title="Script-based controllers and models, tag-based views" href="http://www.clearcrystalmedia.com/pm/script-controllers-models-tag-views/">full script <abbr title="ColdFusion Component">CFC</abbr>s could have in an <abbr title="Model-View-Controller">MVC</abbr> stack</a>, particularly with ColdFusion on Wheels. In my excitement to try out the new feature, I had spent much of a Saturday manually converting all of my components into CFScript components in my portal project called <a href="http://github.com/clearcrystalmedia/Administrivia">Administrivia</a>.</p>
<p>Unfortunately, the CFScript part of ColdFusion isn't quite where it needs to be yet. Read on to find out why.</p>]]></description>
			<content:encoded><![CDATA[<p>A few months ago, I blogged about my excitement about the role that <a title="Script-based controllers and models, tag-based views" href="http://www.clearcrystalmedia.com/pm/script-controllers-models-tag-views/">full script <abbr title="ColdFusion Component">CFC</abbr>s could have in an <abbr title="Model-View-Controller">MVC</abbr> stack</a>, particularly with ColdFusion on Wheels. In my excitement to try out the new feature, I had spent much of a Saturday manually converting all of my components into CFScript components in my portal project called <a href="http://github.com/clearcrystalmedia/Administrivia">Administrivia</a>.</p>
<p>Unfortunately, the CFScript part of ColdFusion isn&#8217;t quite where it needs to be yet.</p>
<p>Don&#8217;t get me wrong: CFScript is <em>much</em> improved over where it was in previous versions of ColdFusion. And I don&#8217;t get angry when I experiment with a feature and it doesn&#8217;t work out, but I also try my hardest to know when to back off and undo any damage before it goes <em>too far</em>.</p>
<h2>What didn&#8217;t work</h2>
<p>As it turns out, doing custom database queries in CFScript is very cumbersome. It starts feeling a little too much like <abbr title="PHP Hypertext Preprocessor">PHP</abbr>. Maybe even worse!</p>
<p>Consider this beautiful, expressive simplicity that we all love about <abbr title="ColdFusion Markup Language">CFML</abbr>:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfquery</span> <span style="color: #0000FF;">datasource</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;#get('dataSourceName')#&quot;</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;local.apps&quot;</span><span style="color: #0000FF;">&gt;</span></span>
    SELECT DISTINCT
        A.*
    FROM
        apps A
        JOIN appgroupmemberships G
            ON A.id = G.appid
    WHERE
        G.usergroupid IN (<span style="color: #0000FF;">#local.groupIds#</span>)
        AND deletedat IS NULL
<span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #990000; font-weight: bold;">cfquery</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p>And replace it with this garbage:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;">local.queryService = new Query(datasource=get('dataSourceName'));
local.queryService.setSql(&quot;
    SELECT DISTINCT
        A.*
    FROM
        apps A
        JOIN appgroupmemberships G
            ON A.id = G.appid
        WHERE
            G.usergroupid IN (<span style="color: #0000FF;">#local.groupIds#</span>)
            AND deletedat IS NULL
&quot;);
local.apps = local.queryService.Execute().GetResult();</pre></div></div>

<p>The last line is the part that really gets me. What is this, Java?</p>
<p>Also, it gets much worse when you need to cut in and out of the <abbr title="Structured Query Language">SQL</abbr> string that you&#8217;re building in order to add in <code>if</code> logic, loops, calls to <code>AddParam()</code>, etc.</p>
<p>The other big annoyance to me is CFScript&#8217;s lack of coverage for many of the other data communication tags. It hurts to not have equal functionality available for <code>cffeed</code>, <code>cfldap</code>, etc. I need to call more than just databases in my models and controllers.</p>
<h2>Realization: I need to support Railo too</h2>
<p>I need to work on adding support for <a href="http://www.getrailo.org/">Railo</a>, which <a href="http://railo.uservoice.com/forums/21016-general/suggestions/230165-full-cfscript-support?ref=title">doesn&#8217;t yet support full script-based components anyway</a>. So it was probably in my best interest to take some time to convert my components back to <abbr title="ColdFusion Markup Language">CFML</abbr> again.</p>
<p>Perhaps our paths shall cross again some day, CFScript. Until then, I bid you adieu.</p>

<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/adobe' rel='tag' target='_self'>adobe</a>, <a class='technorati-link' href='http://technorati.com/tag/ccm' rel='tag' target='_self'>ccm</a>, <a class='technorati-link' href='http://technorati.com/tag/cfml' rel='tag' target='_self'>cfml</a>, <a class='technorati-link' href='http://technorati.com/tag/cfscript' rel='tag' target='_self'>cfscript</a>, <a class='technorati-link' href='http://technorati.com/tag/chris+peters' rel='tag' target='_self'>chris peters</a>, <a class='technorati-link' href='http://technorati.com/tag/clear+crystal+media' rel='tag' target='_self'>clear crystal media</a>, <a class='technorati-link' href='http://technorati.com/tag/ColdFusion' rel='tag' target='_self'>ColdFusion</a>, <a class='technorati-link' href='http://technorati.com/tag/oop' rel='tag' target='_self'>oop</a>, <a class='technorati-link' href='http://technorati.com/tag/polymorphism' rel='tag' target='_self'>polymorphism</a>, <a class='technorati-link' href='http://technorati.com/tag/railo' rel='tag' target='_self'>railo</a></p>

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/polymorphism/~4/oJZq_xD9308" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.clearcrystalmedia.com/pm/full-cfscript-cfcs-not-where-they-need-to-be/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://www.clearcrystalmedia.com/pm/full-cfscript-cfcs-not-where-they-need-to-be/</feedburner:origLink></item>
		<item>
		<title>404 error handling in ColdFusion on Wheels</title>
		<link>http://feeds.clearcrystalmedia.com/~r/polymorphism/~3/Ef2oo9JpAco/</link>
		<comments>http://www.clearcrystalmedia.com/pm/404-error-handling-cfwheels/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 19:29:13 +0000</pubDate>
		<dc:creator>Chris Peters</dc:creator>
				<category><![CDATA[ColdFusion on Wheels]]></category>
		<category><![CDATA[404 errors]]></category>
		<category><![CDATA[cfml]]></category>
		<category><![CDATA[cfwheels]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[coldfusion on wheels]]></category>
		<category><![CDATA[error handling]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.clearcrystalmedia.com/pm/?p=453</guid>
		<description><![CDATA[<p>This is fairly simple, but I figured that I would share my approach for 404 error pages in <a href="http://cfwheels.org/">ColdFusion on Wheels</a> and see if anyone has a different/better way of doing it. This example demonstrates code used on <a href="http://cfwheels.org/">cfwheels.org</a>.</p>
<p>Read on to learn more.</p>]]></description>
			<content:encoded><![CDATA[<p>This is fairly simple, but I figured that I would share my approach for 404 error pages in <a href="http://cfwheels.org/">ColdFusion on Wheels</a> and see if anyone has a different/better way of doing it. This example demonstrates code used on <a href="http://cfwheels.org/">cfwheels.org</a>.</p>
<h2>The strategy</h2>
<p>What I really wanted was a function that I could call whenever a given view&#8217;s record could not be found.</p>
<p>In my example case, I wanted to handle user <abbr>ID</abbr>s in the <a href="http://cfwheels.org/user">People Directory</a> that represent records that don&#8217;t exist. I had ended up removing user 31 (and a few others), so I wanted to display a helpful 404 error message every time <a href="http://cfwheels.org/user/profile/31" rel="nofollow">http://cfwheels.org/user/profile/31</a> was accessed.</p>
<h2>404 error page</h2>
<p>So the first step was to create the 404 page itself, which I stored at <kbd>views/main/error404.cfm</kbd>.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfsetting</span> enablecfoutputonly<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;true&quot;</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfset</span> layout.<span style="color: #0000FF;">title</span> <span style="color: #0000FF;">=</span> <span style="color: #009900;">&quot;Page Not Found | ColdFusion on Wheels&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfset</span> layout.header1 <span style="color: #0000FF;">=</span> <span style="color: #009900;">&quot;Page Not Found&quot;</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfset</span> layout.breadcrumbs <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">&#91;</span><span style="color: #009900;">&quot;Page Not Found&quot;</span><span style="color: #0000FF;">&#93;</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
<span style="color: #808080; font-style: italic;">&lt;!--- 404 error ---&gt;</span>
<span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfheader</span> statuscode<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;404&quot;</span> statustext<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;Not Found&quot;</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfoutput</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">p</span><span style="color: #0000FF;">&gt;</span></span>
    We're sorry. We couldn't find the page that you're looking for. It has either been removed, or perhaps
    you are accessing an inaccurate <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">abbr</span> <span style="color: #0000FF;">title</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;Uniform Resource Locator&quot;</span><span style="color: #0000FF;">&gt;</span></span>URL<span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #000000; font-weight: bold;">abbr</span><span style="color: #0000FF;">&gt;</span></span>.
<span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #000000; font-weight: bold;">p</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">h2</span><span style="color: #0000FF;">&gt;</span></span><span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">label</span> <span style="color: #0000FF;">for</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;search-query-404&quot;</span><span style="color: #0000FF;">&gt;</span></span>Search<span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #000000; font-weight: bold;">label</span><span style="color: #0000FF;">&gt;</span></span><span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #000000; font-weight: bold;">h2</span><span style="color: #0000FF;">&gt;</span></span>
#startFormTag(controller=&quot;search&quot;, id=&quot;cse-search-box&quot;, method=&quot;get&quot;)#
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">div</span><span style="color: #0000FF;">&gt;</span></span>
        <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">input</span> <span style="color: #0000FF;">type</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;hidden&quot;</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;cx&quot;</span> <span style="color: #0000FF;">value</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;005724978648843866544:jpej79qhz14&quot;</span> <span style="color: #0000FF;">/&gt;</span></span>
        <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">input</span> <span style="color: #0000FF;">type</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;hidden&quot;</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;cof&quot;</span> <span style="color: #0000FF;">value</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;FORID:10&quot;</span> <span style="color: #0000FF;">/&gt;</span></span>
        <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">input</span> <span style="color: #0000FF;">type</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;hidden&quot;</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;ie&quot;</span> <span style="color: #0000FF;">value</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;UTF-8&quot;</span> <span style="color: #0000FF;">/&gt;</span></span>
        <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">input</span> <span style="color: #0000FF;">id</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;search-query-404&quot;</span> <span style="color: #0000FF;">type</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;text&quot;</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;q&quot;</span> <span style="color: #0000FF;">/&gt;</span></span>
        <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">input</span> <span style="color: #0000FF;">type</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;submit&quot;</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;sa&quot;</span> <span style="color: #0000FF;">value</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;Search&quot;</span> <span style="color: #0000FF;">/&gt;</span></span>
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #000000; font-weight: bold;">div</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #0000FF;">#endFormTag<span style="color: #0000FF;">&#40;</span><span style="color: #0000FF;">&#41;</span>#</span>
&nbsp;
<span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">h2</span><span style="color: #0000FF;">&gt;</span></span>Start from the Home Page<span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #000000; font-weight: bold;">h2</span><span style="color: #0000FF;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">p</span><span style="color: #0000FF;">&gt;</span></span><span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #000000; font-weight: bold;">strong</span><span style="color: #0000FF;">&gt;</span></span>#linkTo(text=&quot;ColdFusion on Wheels Home &amp;raquo;&quot;, route=&quot;home&quot;)#<span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #000000; font-weight: bold;">strong</span><span style="color: #0000FF;">&gt;</span></span><span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #000000; font-weight: bold;">p</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #990000; font-weight: bold;">cfoutput</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfsetting</span> enablecfoutputonly<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p>The real meat is the fact that I put the &lt;cfheader&gt; 404 reference in the view file. I look at anything that&#8217;s sent to the browser as a job for the view to handle, so that&#8217;s why I put the call there instead of in the controller file. In fact, because the page is fairly &#8220;dumb,&#8221; I didn&#8217;t put <em>anything</em> in the <code>Main</code> controller.</p>
<h2>Rendering helper</h2>
<p>I also put a quick <code>render404()</code> function in the base controller at <kbd>controllers/Controller.cfc</kbd> so that I wouldn&#8217;t need to manually call <code>renderPage(controller="main", action="error404")</code> every time that I wanted to reference this new view. Your preference may be to not do this, but I&#8217;ll leave that up to you. <img src='http://www.clearcrystalmedia.com/pm/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cffunction</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;render404&quot;</span> <span style="color: #0000FF;">hint</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;Renders a 404 error page.&quot;</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfset</span> renderPage<span style="color: #0000FF;">&#40;</span>controller<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;main&quot;</span>, <span style="color: #0000FF;">action</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;error404&quot;</span><span style="color: #0000FF;">&#41;</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #990000; font-weight: bold;">cffunction</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<h2>Handling 404 errors in the controller</h2>
<p>The last step involved actually using this functionality in the case that an invalid record <abbr>ID</abbr> was passed in the <abbr title="Uniform Resource Locator">URL</abbr>. So the <kbd>user/profile</kbd> action now looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"> <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cffunction</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;profile&quot;</span> <span style="color: #0000FF;">hint</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;Displays user profile.&quot;</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfset</span> user <span style="color: #0000FF;">=</span> model<span style="color: #0000FF;">&#40;</span><span style="color: #009900;">&quot;customer&quot;</span><span style="color: #0000FF;">&#41;</span>.findByKey<span style="color: #0000FF;">&#40;</span>params.key<span style="color: #0000FF;">&#41;</span><span style="color: #0000FF;">&gt;</span></span>
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfset</span> loggedInUser <span style="color: #0000FF;">=</span> getLoggedInCustomer<span style="color: #0000FF;">&#40;</span><span style="color: #0000FF;">&#41;</span><span style="color: #0000FF;">&gt;</span></span>
    <span style="color: #808080; font-style: italic;">&lt;!--- If profile found, show it ---&gt;</span>
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfif</span> <span style="color: #0000FF;">IsObject</span><span style="color: #0000FF;">&#40;</span>user<span style="color: #0000FF;">&#41;</span><span style="color: #0000FF;">&gt;</span></span>
        <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfset</span> sites <span style="color: #0000FF;">=</span> user.sites<span style="color: #0000FF;">&#40;</span>where<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;isApproved=1&quot;</span><span style="color: #0000FF;">&#41;</span><span style="color: #0000FF;">&gt;</span></span>
        <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfset</span> plugins <span style="color: #0000FF;">=</span> user.plugins<span style="color: #0000FF;">&#40;</span>where<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;isApproved=1&quot;</span><span style="color: #0000FF;">&#41;</span><span style="color: #0000FF;">&gt;</span></span>
    <span style="color: #808080; font-style: italic;">&lt;!--- 404 error if not found ---&gt;</span>
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfelse</span><span style="color: #0000FF;">&gt;</span></span>
        <span style="color: #333333;"><span style="color: #0000FF;">&lt;</span><span style="color: #990000; font-weight: bold;">cfset</span> render404<span style="color: #0000FF;">&#40;</span><span style="color: #0000FF;">&#41;</span><span style="color: #0000FF;">&gt;</span></span>
    <span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #990000; font-weight: bold;">cfif</span><span style="color: #0000FF;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #0000FF;">&lt;/</span><span style="color: #990000; font-weight: bold;">cffunction</span><span style="color: #0000FF;">&gt;</span></span></pre></div></div>

<p>Fairly simple stuff. When loading the <code>user</code> object, I check to see if an object was returned. If not, then show the 404 page. Pretty reusable, and it only requires an additional if/else block in the controller to decide what to do.</p>
<p>Plus the file at <kbd>events/onmissingtemplate.cfm</kbd> can just use <code>&lt;cfhttp&gt;</code> to phone <a href="http://cfwheels.org/main/error404" rel="nofollow">http://cfwheels.org/main/error404</a> in order to display the exact same error message during a more generic &#8220;template not found&#8221; scenario.</p>
<p>Besides identifying other places in the application to call <code>render404()</code>, that&#8217;s pretty much it.</p>

<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/404+errors' rel='tag' target='_self'>404 errors</a>, <a class='technorati-link' href='http://technorati.com/tag/cfml' rel='tag' target='_self'>cfml</a>, <a class='technorati-link' href='http://technorati.com/tag/cfwheels' rel='tag' target='_self'>cfwheels</a>, <a class='technorati-link' href='http://technorati.com/tag/ColdFusion' rel='tag' target='_self'>ColdFusion</a>, <a class='technorati-link' href='http://technorati.com/tag/coldfusion+on+wheels' rel='tag' target='_self'>coldfusion on wheels</a>, <a class='technorati-link' href='http://technorati.com/tag/error+handling' rel='tag' target='_self'>error handling</a>, <a class='technorati-link' href='http://technorati.com/tag/framework' rel='tag' target='_self'>framework</a>, <a class='technorati-link' href='http://technorati.com/tag/frameworks' rel='tag' target='_self'>frameworks</a>, <a class='technorati-link' href='http://technorati.com/tag/mvc' rel='tag' target='_self'>mvc</a>, <a class='technorati-link' href='http://technorati.com/tag/web+development' rel='tag' target='_self'>web development</a></p>

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/polymorphism/~4/Ef2oo9JpAco" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.clearcrystalmedia.com/pm/404-error-handling-cfwheels/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.clearcrystalmedia.com/pm/404-error-handling-cfwheels/</feedburner:origLink></item>
	</channel>
</rss>
