<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>RSS feed for InstantSpot site I Love ColdFusion</title><link>http://johnfallen.instantspot.com</link><description>ColdFusion Is Great</description><language>en-us</language><copyright>This work is Copyright &#xA9; 2009 by I Love ColdFusion</copyright><generator>RSSVille ColdFusion FeedMaker, version 1.0</generator><pubDate>Sat, 07 Nov 2009 16:02:37 GMT</pubDate><item><title>AOP ROCKS</title><link>http://johnfallen.instantspot.com/blog/2007/01/22/AOP-ROCKS</link><description>&lt;p&gt;  I was at the point to adding Validation to my Model tBLog engine, a transposition of &lt;a href=&quot;http://www.compoundtheory.com/?action=transfer.index&quot; target=&quot;_blank&quot;&gt;Mark Mandel&amp;#39;s tBlog&lt;/a&gt; example application to &lt;a href=&quot;http://www.model-glue.com/&quot; target=&quot;_blank&quot;&gt;Model Glue Unity&lt;/a&gt;.  &lt;/p&gt;  &lt;p&gt;  ARG, I don&amp;#39;t want to muck up controller or model code with Validation! Where the heck will it go cleanly? Example of updatePost:  &lt;/p&gt;  &lt;p&gt;  &lt;strong&gt;ModelGlue.xml:&lt;/strong&gt;  &lt;/p&gt;  &lt;p&gt;  &amp;lt;!--&lt;br /&gt;  updatePost&lt;br /&gt;  Description: I submit the frmPost.cfm form&lt;br /&gt;  --&amp;gt;&lt;br /&gt;  &amp;lt;event-handler name=&amp;quot;updatePost&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;broadcasts&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;message name=&amp;quot;checkUserLogin&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;message name=&amp;quot;updatePost&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/broadcasts&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;results&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;result do=&amp;quot;listPosts&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/results&amp;gt;&lt;br /&gt;  &amp;lt;/event-handler&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &lt;strong&gt;BlogController.cfc (Front controller for HTML requests):&lt;/strong&gt;  &lt;/p&gt;  &lt;p&gt;  &amp;lt;!--- updatePost ---&amp;gt;&lt;br /&gt;  &amp;lt;cffunction name=&amp;quot;updatePost&amp;quot; hint=&amp;quot;I ask the model to save / update a Post.&amp;quot; access=&amp;quot;public&amp;quot; returnType=&amp;quot;any&amp;quot; output=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfargument name=&amp;quot;event&amp;quot; type=&amp;quot;any&amp;quot; /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;!--- get the values from the framework ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var ID = arguments.event.getValue(&amp;quot;ID&amp;quot;) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var Title = arguments.event.getValue(&amp;quot;Title&amp;quot;) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var body = arguments.event.getValue(&amp;quot;body&amp;quot;) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var PostFile = arguments.event.getValue(&amp;quot;PostFile&amp;quot;) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var VideoFile = arguments.event.getValue(&amp;quot;VideoFile&amp;quot;) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var Category = arguments.event.getValue(&amp;quot;Category&amp;quot;) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var User = arguments.event.getValue(&amp;quot;User&amp;quot;) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var IDComment = arguments.event.getValue(&amp;quot;IDComment&amp;quot;) /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;!--- ask the model to update the Post ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var updatePost = variables.BlogService.updatePost(ID, Title, body, PostFile, VideoFile, Category, User, IDComment) /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;cfreturn arguments.event /&amp;gt;&lt;br /&gt;  &amp;lt;/cffunction&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &lt;strong&gt;BlogService.cfc (service layer to react to requests, HTML front controller or remote requests):&lt;/strong&gt;  &lt;/p&gt;  &lt;p&gt;  &amp;lt;!--- updatePost ---&amp;gt;&lt;br /&gt;  &amp;lt;cffunction name=&amp;quot;updatePost&amp;quot; hint=&amp;quot;I ask Transfer to update a post.&amp;quot; access=&amp;quot;public&amp;quot; displayname=&amp;quot;Save Post&amp;quot; returntype=&amp;quot;any&amp;quot; output=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfargument name=&amp;quot;ID&amp;quot; hint=&amp;quot;I am the ID of the Post that is being updated.&amp;lt;br /&amp;gt;I am required.&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfargument name=&amp;quot;Title&amp;quot; hint=&amp;quot;I am the Title of the post.&amp;lt;br /&amp;gt;I am required.&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfargument name=&amp;quot;body&amp;quot; hint=&amp;quot;I am the body of the post.&amp;lt;br /&amp;gt;I am required.&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfargument name=&amp;quot;PostFile&amp;quot; hint=&amp;quot;I am the PostFile of the post.&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfargument name=&amp;quot;VideoFile&amp;quot; hint=&amp;quot;I am the VideoFile of the post.&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfargument name=&amp;quot;Category&amp;quot; hint=&amp;quot;I am the list of Catagories of the post.&amp;lt;br /&amp;gt;I am required.&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfargument name=&amp;quot;User&amp;quot; hint=&amp;quot;I am the User who posted the post.&amp;lt;br /&amp;gt;I am required.&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfargument name=&amp;quot;IDComment&amp;quot; hint=&amp;quot;I am the list of comments that will be deleted.&amp;lt;br /&amp;gt;I am required.&amp;quot;&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;!--- get the post ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var post = variables.transfer.get(&amp;quot;post.Post&amp;quot;, arguments.ID) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;!--- make and array of the incomming category ID&amp;#39;s ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var categories = listToArray(arguments.category)&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var len = ArrayLen(categories) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var PostFileName = &amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset var VideoFileName = &amp;quot;&amp;quot; /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;!--- check if there is a file ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfif len(arguments.PostFile)&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;cfset PostFileName = variables.FileService.uploadPostFile(arguments.PostFile) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;!--- set the PostFileName ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;cfset post.setPostFileName(PostFileName) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/cfif&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;!--- check if there is a video ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfif len(arguments.VideoFile)&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;cfset VideoFileName = variables.FileService.uploadVideo(arguments.VideoFile) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;!--- set the VideoFileName ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;cfset post.setVideoFileName(VideoFileName) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/cfif&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;!--- set the title and body ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset post.setTitle(arguments.title) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset post.setBody(arguments.Body) /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;!--- set the user ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset post.setUser(variables.transfer.get(&amp;quot;user.User&amp;quot;, arguments.user)) /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;!--- clear out the categories ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset post.clearCategory() /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;!--- loop through the categories and add them back in ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfloop from=&amp;quot;1&amp;quot; to=&amp;quot;#len#&amp;quot; index=&amp;quot;counter&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;cfset category = variables.transfer.get(&amp;quot;system.Category&amp;quot;, categories[counter]) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;cfset post.addCategory(category) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/cfloop&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;!--- do sorting afterwould to make sure they are in the right order ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset post.sortCategory() /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;!--- delete the comments that are selected ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfif (StructKeyExists(arguments, &amp;quot;IDComment&amp;quot;))&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;cfset IDComments = listToArray(arguments.IDComment) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;cfset len = ArrayLen(IDComments) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;cfloop from=&amp;quot;1&amp;quot; to=&amp;quot;#len#&amp;quot; index=&amp;quot;counter&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cfset comment = transfer.get(&amp;quot;post.Comment&amp;quot;, IDComments[counter]) /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--- comment is removed implicitely from Post on delete ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cfset x = transfer.delete(comment) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;/cfloop&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/cfif&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;lt;!--- save the Post ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cfset x = transfer.save(post) /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;lt;/cffunction&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &lt;strong&gt;FileService.cfc called by BlogService.cfc(updatePost)&lt;/strong&gt;  &lt;/p&gt;  &lt;p&gt;  &amp;lt;!--- uploadPostFile ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cffunction name=&amp;quot;uploadPostFile&amp;quot; hint=&amp;quot;I upload a file to the public file directroy. I then then retrun the name.&amp;quot; displayname=&amp;quot;Upload Post File&amp;quot; access=&amp;quot;public&amp;quot; returntype=&amp;quot;any&amp;quot; output=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;cfargument name=&amp;quot;PostFileName&amp;quot; hint=&amp;quot;I am the file being uploaded.&amp;lt;br /&amp;gt;I am required.&amp;quot; /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--- upload the single file ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cffile&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;action=&amp;quot;upload&amp;quot;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;destination = &amp;quot;#ExpandPath(&amp;#39;/com/blog/views/public/uploads/posts/&amp;#39;)#&amp;quot;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nameconflict=&amp;quot;overwrite&amp;quot;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filefield=&amp;quot;PostFile&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--- get the file name ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cfset PostFileName = (#cffile.SERVERFILE#)&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cfreturn PostFileName /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/cffunction&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;  &lt;/p&gt;  &lt;p&gt;  &lt;br /&gt;  &amp;nbsp;&amp;lt;!--- uploadVideo ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;cffunction name=&amp;quot;uploadVideo&amp;quot; hint=&amp;quot;I parse a video into flash with FFMPEG (Google: FFMPEG), I then place the flash file into the public video directroy. I then put the uploaed video into the &amp;#39;origionalvideo&amp;#39; folder at the COM level.&amp;quot; displayname=&amp;quot;Upload Video&amp;quot; access=&amp;quot;public&amp;quot; returntype=&amp;quot;any&amp;quot;output=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;cfargument name=&amp;quot;VideoFile&amp;quot; hint=&amp;quot;I am the video being uploaded.&amp;lt;br /&amp;gt;I am required.&amp;quot; /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--- upload the video to the a directory at the COM level ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cffile&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;action=&amp;quot;upload&amp;quot;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;destination = &amp;quot;#ExpandPath(&amp;#39;/origionalvideo/&amp;#39;)#&amp;quot;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nameconflict=&amp;quot;overwrite&amp;quot;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filefield=&amp;quot;VideoFile&amp;quot; /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--- convert the video with FFMPEG ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cfexecute name = &amp;quot;#ExpandPath(&amp;#39;/&amp;#39;)#ffmpeg.exe&amp;quot;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;arguments = &amp;quot;-i #ExpandPath(&amp;#39;/origionalvideo/&amp;#39;)##cffile.SERVERFILE# -s 320x240 -r 15 -b 2000 -ar 44100 -ab 64 -ac 2 #ExpandPath(&amp;#39;/com/blog/views/public/uploads/video/&amp;#39;)##replace(cffile.SERVERFILE, &amp;quot;.&amp;quot;, &amp;quot;&amp;quot;)#.flv&amp;quot;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;outputFile = &amp;quot;C:\&amp;quot;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;timeout = &amp;quot;90000000&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/cfexecute&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--- create the file name ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cfset VideoFileName = &amp;quot;#replace(cffile.SERVERFILE, &amp;quot;.&amp;quot;, &amp;quot;&amp;quot;)#.flv&amp;quot; /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cfreturn VideoFileName /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/cffunction&amp;gt;  &lt;/p&gt;  &lt;p&gt;  Now if anyone can tell me where a logical place to put Security or Validation is please?  &lt;/p&gt;  &lt;p&gt;  &lt;strong&gt;&lt;a href=&quot;http://www.coldspringframework.org/&quot; target=&quot;_blank&quot;&gt;ColdSpring&lt;/a&gt; AOP HOW I LOVE THEE:&lt;/strong&gt;  &lt;/p&gt;  &lt;p&gt;  &amp;lt;!--&lt;br /&gt;  Desicription: I am called by ColdSpring BEFORE the BlogService.cfc.&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;I take the request and pass the data to the Validaiton.cfc.&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;Validation.cfc checks:&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;1. There is a title&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;2. There is a category&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;3. video is a .avi, .mpg, .mov, or .wmv.&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;  --&amp;gt;&lt;br /&gt;  &amp;lt;bean id=&amp;quot;ValidationAdvisor&amp;quot;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;class=&amp;quot;coldspring.aop.support.NamedMethodPointcutAdvisor&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;property name=&amp;quot;advice&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;ref bean=&amp;quot;Validation&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/property&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;property name=&amp;quot;mappedNames&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;value&amp;gt;updatePost&amp;lt;/value&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/property&amp;gt;&lt;br /&gt;  &amp;lt;/bean&amp;gt;&lt;br /&gt;  &amp;lt;!-- the Validatoin.cfc called by ValidationAdvisor ---&amp;gt;&lt;br /&gt;  &amp;lt;bean id=&amp;quot;Validation&amp;quot; class=&amp;quot;&amp;amp;applicationMapping;aspects.Validation&amp;quot; singleton=&amp;quot;true&amp;quot; autowire=&amp;quot;byName&amp;quot; /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;  &lt;/p&gt;  &lt;p&gt;  &amp;lt;!-- I am the Proxy for the BlogService.cfc. See the TargetBlogService bean below. --&amp;gt;&lt;br /&gt;  &amp;lt;bean id=&amp;quot;BlogService&amp;quot;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;class=&amp;quot;coldspring.aop.framework.ProxyFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;property name=&amp;quot;target&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;ref bean=&amp;quot;TargetBlogService&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/property&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;property name=&amp;quot;interceptorNames&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;list&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;value&amp;gt;securityAdvisor&amp;lt;/value&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;lt;/list&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;lt;/property&amp;gt;&lt;br /&gt;  &amp;lt;/bean&amp;gt;  &lt;/p&gt;  &lt;p&gt;  &lt;br /&gt;  &amp;lt;!-- BlogService&amp;nbsp; PROXIED BY COLDSPRING --&amp;gt;&lt;br /&gt;  &amp;lt;bean id=&amp;quot;TargetBlogService&amp;quot; class=&amp;quot;&amp;amp;applicationMapping;model.BlogService&amp;quot; singleton=&amp;quot;true&amp;quot; autowire=&amp;quot;byName&amp;quot; /&amp;gt;  &lt;/p&gt;  &lt;p&gt;  I am consuming my addPost incoming request with the ColdSpring framework  &lt;/p&gt;  &lt;p&gt;  My core blog code dose not change! HAPPY ME HAPPY ME!  &lt;/p&gt;  &lt;p&gt;  &lt;a href=&quot;http://www.coldspringframework.org/&quot; target=&quot;_blank&quot;&gt;Thanks Dave Ross! ColdSpring&amp;#39;s AOP ROCKS&lt;/a&gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;  &lt;/p&gt;  </description><pubDate>Mon, 22 Jan 2007 18:37:32 GMT</pubDate><guid>http://johnfallen.instantspot.com/blog/2007/01/22/AOP-ROCKS</guid><category>Building The Blog</category></item><item><title>Delivering HTML objects???</title><link>http://johnfallen.instantspot.com/blog/2007/01/17/Delivering-HTML-objects</link><description>&lt;p&gt;  Anyone see any benefit for a blog engine to serve its CORE HTML from a Proxy?  &lt;/p&gt;  &lt;p&gt;  This way when you mess with your templates you are never messing with the BASE application HTML, which I would like. Especially if what was coming in was SUPER defined and ease to understand.  &lt;/p&gt;  &lt;p&gt;  ColdSpring can &amp;quot;look&amp;quot; at the request and then after the &amp;quot;whole request&amp;quot; is finished run a method, I&amp;#39;m thinking its called renderHTML which will deliver a XHTML. Then inside your templates you might have something like:  &lt;/p&gt;  &lt;p&gt;  indexTemplate:&lt;br /&gt;  &amp;lt;!-------------------------- &amp;gt;&lt;br /&gt;  Posts&amp;lt;br/&amp;gt;&lt;br /&gt;  &amp;lt;cfoutput&amp;gt;&lt;br /&gt;  #getAllPosts()#&lt;br /&gt;  &amp;lt;/cfoutput&amp;gt;&lt;br /&gt;  &amp;lt;!-------------------------- &amp;gt;  &lt;/p&gt;  &lt;p&gt;  Now getAllPosts would return the approate fully formed XHTML so all you need to worry about it the .css styling.  &lt;/p&gt;  &lt;p&gt;  Also if you ever wanted to change the XHTML the files would be in a &amp;quot;DisplayFoundation&amp;quot; directory.  &lt;/p&gt;  &lt;p&gt;  I just like the idea of getting &amp;quot;displayObject&amp;quot; that I can put anywhere on the page and NEVER have to worry about &amp;quot;Forming&amp;quot; the dataObjects that are coming in from Model-Glue.  &lt;/p&gt;  &lt;p&gt;  Just a thought or it might be complicated? I don&amp;#39;t know, but you all are messing around with the blogs and would have a better perspective.  &lt;/p&gt;  &lt;p&gt;  PS: I finally &amp;quot;got&amp;quot; &lt;a href=&quot;http://www.coldspringframework.org/&quot; target=&quot;_blank&quot;&gt;ColdSpring&lt;/a&gt; this weekend. THANK GOD FOR &lt;a href=&quot;http://www.coldspringframework.org/&quot; target=&quot;_blank&quot;&gt;COLDSPRING!!&lt;/a&gt;  &lt;/p&gt;  </description><pubDate>Wed, 17 Jan 2007 19:23:48 GMT</pubDate><guid>http://johnfallen.instantspot.com/blog/2007/01/17/Delivering-HTML-objects</guid><category>Building The Blog</category></item><item><title>Front End Is Trying to Kill Me</title><link>http://johnfallen.instantspot.com/blog/2006/11/21/Front-End-Is-Trying-to-Kill-Me</link><description>&lt;p&gt;  I am TOTALLY tired of the front end nightmare!  &lt;/p&gt;  &lt;p&gt;  Will Flex save me? I just printed out the Flex Store 2_1 and have been reading &lt;a href=&quot;http://weblogs.macromedia.com/swebster/&quot;&gt;Steve Webster&amp;rsquo;s&lt;/a&gt; (how kewl is Webster for the name of a RIA framework creator???!?!?, LOVE IT) &lt;a href=&quot;http://www.adobe.com/devnet/flex/articles/cairngorm_pt1.html&quot;&gt;6 part series on Flex Development&lt;/a&gt;. I think Flex will be the answer I have been looking for.  &lt;/p&gt;  &lt;p&gt;  What will Flex save me from? STUPID BROWSERS!!!!! I love how CF makes making the backend easy, but trying to wrestle &lt;a href=&quot;http://developer.yahoo.com/yui/&quot;&gt;Yahoo UI&lt;/a&gt;, &lt;a href=&quot;http://dojotoolkit.org/&quot;&gt;Dojo&lt;/a&gt;, or &lt;a href=&quot;http://script.aculo.us/&quot;&gt;script.aculo.us&lt;/a&gt;, or my fav &lt;a href=&quot;http://www.twinhelix.com/&quot;&gt;TwinHelix&lt;/a&gt; (MOST LIGHT WEIGHT, MOST CROSS BROWSER SUPPORT DTHML LIB out there) to solve some problem that my designers have made every time is getting to be a bummer.  &lt;/p&gt;  &lt;p&gt;  F this HTML stuff, give me something that works. I think it is here.  &lt;/p&gt;  &lt;p&gt;  I think I am going to try to give Reactor Blog a Flex front end.  &lt;/p&gt;  &lt;p&gt;  Ill post code if it comes out.  &lt;/p&gt;  &lt;p&gt;  bigLove to ColdFusion,&lt;br /&gt;  &lt;strong&gt;ja&lt;/strong&gt;  &lt;/p&gt;  </description><pubDate>Tue, 21 Nov 2006 17:41:15 GMT</pubDate><guid>http://johnfallen.instantspot.com/blog/2006/11/21/Front-End-Is-Trying-to-Kill-Me</guid></item></channel></rss>