<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>Bob&apos;s Blog - ColdFusion Tidbits - Transfer</title>
			<link>http://www.silverwareconsulting.com/index.cfm</link>
			<description>Some stuff about ColdFusion and Transfer</description>
			<language>en-us</language>
			<pubDate>Thu, 09 Sep 2010 05:05:42 -0400</pubDate>
			<lastBuildDate>Wed, 04 Mar 2009 16:20:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>bob.silverberg@gmail.com</managingEditor>
			<webMaster>bob.silverberg@gmail.com</webMaster>
			
			<item>
				<title>Getting Started with VT - Adding Validation Behaviour to Transfer Objects</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2009/3/4/Getting-Started-with-VT--Adding-Validation-Behaviour-to-Transfer-Objects</link>
				<description>
				
				&lt;p&gt;I have been working with my own validation framework, which I&apos;ve named ValidateThis! (VT for short), for the past several months, and thought that it was time to talk about it some more, and provide some guidance to anyone who is interested in giving it a try.  To that end I&apos;m going to start a series about getting started with ValidateThis, specifically discussing using it to add validation behaviour to Transfer objects.  The framework has been developed to allow for integration into any model that uses business objects, so Transfer is not a requirement to make use of VT, but as an example of integration with Transfer has already been done it seems like a sensible place to start.&lt;/p&gt;
&lt;p&gt;As I haven&apos;t written about VT for quite some time I&apos;ll start with a brief introduction to VT and then move on to a practical guide to using VT with Transfer.&lt;/p&gt;
&lt;h3&gt;What is it?&lt;/h3&gt;
&lt;p&gt;VT is a set of ColdFusion components which enable a developer to add validation &quot;smarts&quot; into their Business Objects.  The developer defines all of the validation business rules for an object in an xml file, and VT then automatically translates those into both client-side and server-side validation code.  There is a lot more to it than that, but that is the foundation of what it does.  If you want to see a demo of it in action, check it out at &lt;a href=&quot;http://www.validatethis.org&quot; target=&quot;_blank&quot;&gt;www.validatethis.org&lt;/a&gt;.  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>ValidateThis</category>				
				
				<category>Transfer</category>				
				
				<category>ValidateThis and Transfer</category>				
				
				<pubDate>Wed, 04 Mar 2009 16:20:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2009/3/4/Getting-Started-with-VT--Adding-Validation-Behaviour-to-Transfer-Objects</guid>
				
			</item>
			
			<item>
				<title>Single-Table Inheritance with Transfer</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2009/1/27/SingleTable-Inheritance-with-Transfer</link>
				<description>
				
				&lt;p&gt;I want to talk about object inheritance, which may sound a bit enigmatic, so I&apos;m going to start with an example:&lt;/p&gt;
&lt;p&gt;Let&apos;s say I have a number of types of &lt;strong&gt;Employees&lt;/strong&gt; that I&apos;m trying to model.  I have &lt;strong&gt;Developers&lt;/strong&gt;, who have attributes such as &lt;em&gt;favouriteLanguage&lt;/em&gt; and &lt;em&gt;enjoysDeathMetal&lt;/em&gt; and behaviours such as &lt;em&gt;code()&lt;/em&gt; and &lt;em&gt;test()&lt;/em&gt;.  I have &lt;strong&gt;Designers&lt;/strong&gt;, who have attributes such as &lt;em&gt;favouriteColour&lt;/em&gt; and &lt;em&gt;toleratesDevelopers&lt;/em&gt; and behaviours such as &lt;em&gt;makePretty()&lt;/em&gt; and &lt;em&gt;makePrettier()&lt;/em&gt;.  And I have &lt;strong&gt;Analysts&lt;/strong&gt;, who have attributes such as &lt;em&gt;levelOfAttentionToDetail&lt;/em&gt; and &lt;em&gt;totalPagesOfRequirementsProduced&lt;/em&gt; and behaviours such as &lt;em&gt;ask()&lt;/em&gt; and &lt;em&gt;tell()&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In addition to those specific attributes and behaviours, all of these employee types also share some common attributes, such as &lt;em&gt;userName&lt;/em&gt;, &lt;em&gt;firstName&lt;/em&gt; and &lt;em&gt;lastName&lt;/em&gt; and also have common behaviours such as &lt;em&gt;startDay()&lt;/em&gt;, &lt;em&gt;takeBreak()&lt;/em&gt; and &lt;em&gt;askForRaise()&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This is an example of &lt;em&gt;inheritance&lt;/em&gt;, a form of one-to-one relationship.  We can say that a &lt;strong&gt;Developer&lt;/strong&gt; &lt;em&gt;is an&lt;/em&gt; &lt;strong&gt;Employee&lt;/strong&gt;, a &lt;strong&gt;Designer&lt;/strong&gt; &lt;em&gt;is an&lt;/em&gt; &lt;strong&gt;Employee&lt;/strong&gt; and an &lt;strong&gt;Analyst&lt;/strong&gt; &lt;em&gt;is an&lt;/em&gt; &lt;strong&gt;Employee&lt;/strong&gt;.  It is not an example of &lt;em&gt;composition&lt;/em&gt;.  We would not say that a &lt;strong&gt;Developer&lt;/strong&gt; &lt;em&gt;has an&lt;/em&gt; &lt;strong&gt;Employee&lt;/strong&gt; or that an &lt;strong&gt;Employee&lt;/strong&gt; &lt;em&gt;has a&lt;/em&gt; &lt;strong&gt;Developer&lt;/strong&gt;. The terms that are commonly used to describe this relationship between classes are &lt;em&gt;Supertype&lt;/em&gt; and &lt;em&gt;Subtype&lt;/em&gt;.  &lt;strong&gt;Employee&lt;/strong&gt; is a &lt;em&gt;Supertype&lt;/em&gt;, while &lt;strong&gt;Developer&lt;/strong&gt;, &lt;strong&gt;Designer&lt;/strong&gt; and &lt;strong&gt;Analyst&lt;/strong&gt; are all &lt;em&gt;Subtypes&lt;/em&gt; of &lt;strong&gt;Employee&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;So, the question is, how do I implement this model using Transfer?  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>Transfer</category>				
				
				<category>OO Design</category>				
				
				<pubDate>Tue, 27 Jan 2009 19:53:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2009/1/27/SingleTable-Inheritance-with-Transfer</guid>
				
			</item>
			
			<item>
				<title>How I Use Transfer Today - A Gateway MapFactoryBean</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/11/24/How-I-Use-Transfer-Today--A-Gateway-MapFactoryBean</link>
				<description>
				
				I left something critical out of my &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/11/12/How-I-Use-Transfer-Today--Encapsulating-Database-Access&quot;&gt;last post&lt;/a&gt; about how I&apos;m using Transfer (an ORM for ColdFusion) these days.&lt;/p&gt;
&lt;p&gt;If you&apos;ve been following along you&apos;ll know that I&apos;m using an &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/21/How-I-Use-Transfer--Part-VIII--My-Abstract-Transfer-Decorator-Object--Simple-Methods&quot;&gt;Abstract Transfer Decorator&lt;/a&gt;, which all of my concrete decorators extend, and that I&apos;m using &lt;a href=&quot;http://www.briankotek.com/blog/&quot; target=&quot;_blank&quot;&gt;Brian Kotek&lt;/a&gt;&apos;s most excellent &lt;a href=&quot;http://coldspringutils.riaforge.org/&quot; target=&quot;_blank&quot;&gt;Bean Injector&lt;/a&gt; to load singletons into my Transfer objects.  This raises an interesting issue: How to inject the appropriate Gateway Object into my Transfer Object.  [More]
				</description>
				
				<category>Transfer</category>				
				
				<category>ColdFusion</category>				
				
				<category>Coldspring</category>				
				
				<category>OO Design</category>				
				
				<category>How I Use Transfer</category>				
				
				<pubDate>Mon, 24 Nov 2008 16:33:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/11/24/How-I-Use-Transfer-Today--A-Gateway-MapFactoryBean</guid>
				
			</item>
			
			<item>
				<title>How I Use Transfer Today - Encapsulating Database Access</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/11/12/How-I-Use-Transfer-Today--Encapsulating-Database-Access</link>
				<description>
				
				I&apos;ve been meaning to follow up on my &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/How-I-Use-Transfer&quot;&gt;How I Use Transfer&lt;/a&gt; series, as I&apos;ve made a few changes to the way I write my ColdFusion code since that series was written.  One of the biggest changes was to encapsulate all database access in my Gateway components.&lt;/p&gt;
&lt;p&gt;Now I say biggest not because it took a lot of time and effort to make the change, in fact the opposite is true.  I say biggest simply because it represented a significant shift in the way I&apos;m designing my model.  Let me start with the rationale for making this change.  [More]
				</description>
				
				<category>Transfer</category>				
				
				<category>ColdFusion</category>				
				
				<category>OO Design</category>				
				
				<category>How I Use Transfer</category>				
				
				<pubDate>Wed, 12 Nov 2008 10:59:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/11/12/How-I-Use-Transfer-Today--Encapsulating-Database-Access</guid>
				
			</item>
			
			<item>
				<title>I Don&apos;t Care What An ORM Is!</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/11/3/I-Dont-Care-What-An-ORM-Is</link>
				<description>
				
				There have been &lt;a href=&quot;http://www.firemoss.com/post.cfm/does-coldfusion-have-no-real-orm-frameworks&quot; target=&quot;_blank&quot;&gt;some&lt;/a&gt; &lt;a href=&quot;http://www.firemoss.com/post.cfm/what-makes-a-framework-an-orm&quot; target=&quot;_blank&quot;&gt;postings&lt;/a&gt; recently about the state of the ORM landscape in ColdFusion, and while I have found this conversation interesting, I have not found it particularly useful.&lt;/p&gt;
&lt;p&gt;There exists a group of ColdFusion developers, myself included, who would like to improve the way that we write and structure our code.  We have been encouraged to adopt a more object oriented approach to our development, and I, for one, have found it to be of great benefit.&lt;/p&gt;
&lt;p&gt;One of the things that has made this transition easier for me is the existence of these &quot;ORMs&quot; for ColdFusion.  I started off with &lt;a href=&quot;http://www.alagad.com/go/products-and-projects/reactor-for-coldfusion&quot; target=&quot;_blank&quot;&gt;Reactor&lt;/a&gt;, and now use &lt;a href=&quot;http://www.transfer-orm.com/&quot; target=&quot;_blank&quot;&gt;Transfer&lt;/a&gt;, and I have found that not only do these &quot;ORMs&quot; do a lot of the more menial tasks for me, but they also encourage me to &quot;think in objects&quot;.  Sure, the objects that I&apos;m working with are closely tied to the physical database structure, but they&apos;re still objects.  I still get the benefit of encapsulation, and through the use of Transfer decorators I feel that I am able to give my objects meaningful behaviour, thereby creating rich business objects.&lt;/p&gt;
&lt;p&gt;I know from experience that when a developer is starting down this path it can be quite daunting, and we often look to those with more experience than ourselves for guidance.  I hope that someone in that boat would not be &quot;turned off&quot; the existing set of &quot;ORMs&quot; for ColdFusion because they are not considered to be true ORMs.&lt;/p&gt;	
 &lt;p&gt;This brings me to the title of this post, which was inspired by a post by &lt;a href=&quot;http://www.pbell.com/index.cfm/2008/10/27/I-Dont-Care-What-An-Object-Is&quot; target=&quot;_blank&quot;&gt;Peter Bell&lt;/a&gt;.  I find Transfer to be an indispensable tool for building OO-like applications with ColdFusion, and can only encourage people to investigate and use it.  It may not be a true ORM, but that doesn&apos;t make it any less useful.  Let&apos;s not throw the baby out with the bath water.&lt;/p&gt; 
				</description>
				
				<category>ColdFusion</category>				
				
				<category>Transfer</category>				
				
				<category>OO Design</category>				
				
				<pubDate>Mon, 03 Nov 2008 23:49:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/11/3/I-Dont-Care-What-An-ORM-Is</guid>
				
			</item>
			
			<item>
				<title>ValidateThis! - Server Side Validation Architecture</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/10/14/ValidateThis--Server-Side-Validation-Architecture</link>
				<description>
				
				In this installment of my series about object oriented validations with ColdFusion I&apos;m going to describe the overall architecture of the framework.  I have tried to apply the following object oriented principles as I&apos;ve been designing this, which should help me achieve the goals described in the &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/10/6/ValidateThis--An-Object-Oriented-Approach-to-Validations&quot;&gt;first article in the series&lt;/a&gt;:
&lt;ul&gt;
	&lt;li&gt;Encapsulate what varies.&lt;/li&gt;
	&lt;li&gt;Don&apos;t repeat yourself (DRY).&lt;/li&gt;
	&lt;li&gt;The Open-Closed Principle: Classes should be open for extension, yet closed for modification.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Following those principles has yielded a design that results in a lot of objects and may seem unnecessarily complex.  I believe that the complexity is required to achieve the goals, but some may disagree.  One of my reasons for writing about how I&apos;ve designed this is to solicit feedback from any interested parties which may solidify and/or change that belief.  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>ValidateThis</category>				
				
				<category>Transfer</category>				
				
				<category>OO Design</category>				
				
				<pubDate>Tue, 14 Oct 2008 14:27:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/10/14/ValidateThis--Server-Side-Validation-Architecture</guid>
				
			</item>
			
			<item>
				<title>ValidateThis! - An Object Oriented Approach to Validations</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/10/6/ValidateThis--An-Object-Oriented-Approach-to-Validations</link>
				<description>
				
				I have &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/6/23/How-I-Use-Transfer--Part-I--Introduction&quot;&gt;written&lt;/a&gt; in the past about the &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/6/24/How-I-Use-Transfer--Part-II--Model-Architecture&quot;&gt;approach&lt;/a&gt; I take to building an object oriented model layer for my ColdFusion applications.  For the most part I was happy with the way I designed things and the code that I wrote.  There was one area, however, that I was never really that pleased with; validations.&lt;/p&gt;
&lt;p&gt;So I spent the past several weeks working on a whole new approach to doing validations, and I am now ready to share it with anyone who is interested.  Because I intend for this to become a standard tool in my development toolset, I am going to refer to it as a Validation Framework.  I&apos;m not sure if that is an appropriate use of the term, but it&apos;s my code and my blog, so that&apos;s what I&apos;m going to call it. 
&lt;/p&gt;
&lt;p&gt;I had the following goals for my validation framework:  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>ValidateThis</category>				
				
				<category>Transfer</category>				
				
				<category>OO Design</category>				
				
				<pubDate>Mon, 06 Oct 2008 11:41:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/10/6/ValidateThis--An-Object-Oriented-Approach-to-Validations</guid>
				
			</item>
			
			<item>
				<title>Easy Access to Primary Keys in Transfer Objects</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/8/22/Easy-Access-to-Primary-Keys-in-Transfer-Objects</link>
				<description>
				
				I just added a couple of new methods to my &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/21/How-I-Use-Transfer--Part-VIII--My-Abstract-Transfer-Decorator-Object--Simple-Methods&quot;&gt;AbstractTransferDecorator&lt;/a&gt; to make some of my ColdFusion development tasks easier.  I found that when trying to write abstract code I needed to know the name of the primary key column of my object, and also sometimes needed to know the value of that column for the current object.  So I wrote two new methods to address those needs:
&lt;ul&gt;
	&lt;li&gt;__getPKColumn() - Returns the name of the id column for the current object.&lt;/li&gt;
	&lt;li&gt;__getPKValue() - Returns the value of that column for the current object.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;I chose to prefix the method names with a double underscore so I wouldn&apos;t end up overwriting the getters if any of my objects ever have those names as properties.  Although I&apos;m fairly certain that would never happen it seems like a good idea nonetheless.  Here&apos;s the code:  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>Transfer</category>				
				
				<pubDate>Fri, 22 Aug 2008 07:43:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/8/22/Easy-Access-to-Primary-Keys-in-Transfer-Objects</guid>
				
			</item>
			
			<item>
				<title>Transfer&apos;s getMemento() has Changed</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/8/20/Transfers-getMemento-has-Changed</link>
				<description>
				
				Although I have been fairly vocal about the fact that the getMemento() method available from Transfer (an ORM for ColdFusion) is undocumented and subject to change, and have even written &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/6/17/Using-Transfer-Metadata-to-Create-a-Memento&quot;&gt;my own implementation of it&lt;/a&gt; in my &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/21/How-I-Use-Transfer--Part-VIII--My-Abstract-Transfer-Decorator-Object--Simple-Methods&quot;&gt;AbstractTransferDecorator&lt;/a&gt;, I discovered today that I am still calling it one place in my ColdFusion application code (which I wrote a long time ago).  And that one line of code is now throwing an error.  I understand from &lt;a href=&quot;http://www.12robots.com/index.cfm/2008/8/13/Form-Handling-and-Validation-with-ColdBox-ColdSpring-and-Transfer#comments&quot;&gt;some comments&lt;/a&gt; on &lt;a href=&quot;http://www.12robots.com/&quot;&gt;Jason Dean&apos;s&lt;/a&gt; blog that the internal implementation of mementos did change recently, in Transfer 1.1 according to &lt;a href=&quot;http://www.compoundtheory.com/&quot;&gt;Mark Mandel&lt;/a&gt;, which explains my problem.&lt;/p&gt;
&lt;p&gt;
I just thought it would be worth sharing this with the community, as I have a feeling that I&apos;m not the only one to use getMemento() on occasion.  So be warned: if any of your code uses getMemento() test it with the latest BER of Transfer as you may need to make changes to your code before deploying Transfer 1.1.&lt;/p&gt; 
				</description>
				
				<category>ColdFusion</category>				
				
				<category>Transfer</category>				
				
				<pubDate>Wed, 20 Aug 2008 08:54:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/8/20/Transfers-getMemento-has-Changed</guid>
				
			</item>
			
			<item>
				<title>How I Use Transfer - Part X - My Abstract Transfer Decorator Object - Validations</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/7/27/How-I-Use-Transfer--Part-X--My-Abstract-Transfer-Decorator-Object--Validations</link>
				<description>
				
				In the &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/22/How-I-Use-Transfer--Part-IX--My-Abstract-Transfer-Decorator-Object--The-Populate-Method&quot;&gt;previous post&lt;/a&gt; in this series about Transfer (an ORM for ColdFusion) I discussed the populate() method of my AbstractTransferDecorator.  Having discussed some of the simple methods of this object in the &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/21/How-I-Use-Transfer--Part-VIII--My-Abstract-Transfer-Decorator-Object--Simple-Methods&quot;&gt;post prior to that&lt;/a&gt;, what remains is a discussion of how I&apos;m currently using this object to do validations.&lt;/p&gt;
&lt;p&gt;There are three methods in this object that are used to support validations in my apps:
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;getValidations()&lt;/strong&gt; - This returns an array of business rules that apply to the Business Object.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;addValidation()&lt;/strong&gt; - This is a helper method to make defining validations simpler.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;validate()&lt;/strong&gt; - This contains generic validation routines that are shared by all Business Objects.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;Let&apos;s start with getValidations(), which returns an array of business rules.  This array does not include any information about implementing those rules, it simply describes the rule, and any requirements for the rule.  For example, one rule might be &lt;em&gt;Required&lt;/em&gt;, which simply means that the user must enter a value for the property.  Another rule might be &lt;em&gt;Range&lt;/em&gt;, in which case the array item would also include the upper and lower limits of the range.  One of the nice things about this approach is that this array can be used to generate both client side and server side validations.  So I only have to describe the validations for a given object once in my app, and then I have additional pieces of code which take these rules and automatically generate the JavaScript required for client validations, and the CF code required for server side validations.  We&apos;ll see an example of the latter when we discuss the validate() method later in this post.  [More]
				</description>
				
				<category>Transfer</category>				
				
				<category>ColdFusion</category>				
				
				<category>OO Design</category>				
				
				<category>How I Use Transfer</category>				
				
				<pubDate>Sun, 27 Jul 2008 04:49:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/7/27/How-I-Use-Transfer--Part-X--My-Abstract-Transfer-Decorator-Object--Validations</guid>
				
			</item>
			
			<item>
				<title>How I Use Transfer - Part IX - My Abstract Transfer Decorator Object - The Populate Method</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/7/22/How-I-Use-Transfer--Part-IX--My-Abstract-Transfer-Decorator-Object--The-Populate-Method</link>
				<description>
				
				In the &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/21/How-I-Use-Transfer--Part-VIII--My-Abstract-Transfer-Decorator-Object--Simple-Methods&quot;&gt;previous post&lt;/a&gt; in this series about Transfer (an ORM for ColdFusion) I introduced my AbstractTransferDecorator and discussed some of its simpler methods.  In this post I want to go through the populate() method in detail.  I have posted bits and pieces of this method in the past, but I don&apos;t think I&apos;ve ever documented the whole thing, as it stands today. I&apos;ll break it into pieces to make it a bit more manageable.
&lt;code&gt;
&lt;cffunction name=&quot;populate&quot; access=&quot;public&quot; output=&quot;false&quot; returntype=&quot;void&quot; hint=&quot;Populates the object with values from the argumemnts&quot;&gt;
	&lt;cfargument name=&quot;args&quot; type=&quot;any&quot; required=&quot;yes&quot; /&gt;
	&lt;cfargument name=&quot;FieldList&quot; type=&quot;any&quot; required=&quot;no&quot; default=&quot;&quot; /&gt;
	
	&lt;cfset var theFieldList = &quot;&quot; /&gt;
	&lt;cfset var TransferMetadata = getTransfer().getTransferMetaData(getClassName()) /&gt;
	&lt;cfset var Properties = TransferMetadata.getPropertyIterator() /&gt;
	&lt;cfset var theProperty = 0 /&gt;
	&lt;cfset var varName = 0 /&gt;
	&lt;cfset var varType = 0 /&gt;
	&lt;cfset var varValue = 0 /&gt;
	&lt;cfset var CompType = 0 /&gt;
	&lt;cfset var hasIterator = false /&gt;
	&lt;cfset var theIterator = 0 /&gt;
	&lt;cfset var theComposition = 0 /&gt;
	&lt;cfset var ChildClass = 0 /&gt;
	&lt;cfset var ChildPKName = 0 /&gt;
	&lt;cfset var theChild = 0 /&gt;
&lt;/code&gt;  [More]
				</description>
				
				<category>Transfer</category>				
				
				<category>ColdFusion</category>				
				
				<category>OO Design</category>				
				
				<category>How I Use Transfer</category>				
				
				<pubDate>Tue, 22 Jul 2008 10:44:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/7/22/How-I-Use-Transfer--Part-IX--My-Abstract-Transfer-Decorator-Object--The-Populate-Method</guid>
				
			</item>
			
			<item>
				<title>How I Use Transfer - Part VIII - My Abstract Transfer Decorator Object - Simple Methods</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/7/21/How-I-Use-Transfer--Part-VIII--My-Abstract-Transfer-Decorator-Object--Simple-Methods</link>
				<description>
				
				In the &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/14/How-I-Use-Transfer--Part-VI--My-Abstract-Gateway-Object&quot;&gt;past&lt;/a&gt; &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/15/How-I-Use-Transfer--Part-VII--A-Concrete-Gateway-Object&quot;&gt;two&lt;/a&gt; posts in this series about &lt;a href=&quot;http://www.transfer-orm.com/&quot;&gt;Transfer&lt;/a&gt; (an ORM for ColdFusion) I discussed how I have implemented my Abstract and Concrete Gateways.  As you may recall from &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/6/24/How-I-Use-Transfer--Part-II--Model-Architecture&quot;&gt;Part II&lt;/a&gt;, that leaves my AbstractTransferDecorator Object as the final abstract object in my model.  There is a lot of code in this object, and I plan to provide a lot of explanation, so I&apos;m going to break this up into a few posts.&lt;/p&gt;
&lt;p&gt;My AbstractTransferDecorator acts as a base object for all of my Concrete Decorators, and, because most of my Business Objects are created for me by Transfer, it really acts as an Abstract Business Object.  For a basic overview of what a decorator is, and how one is used with Transfer, check out &lt;a href=&quot;http://docs.transfer-orm.com/wiki/Writing_Decorators.cfm&quot;&gt;this page&lt;/a&gt; from the Transfer docs.&lt;/p&gt;
&lt;p&gt;I have blogged about this object a &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2007/9/26/A-Generic-Decorator-for-Transfer--A-Populate-Method&quot;&gt;few&lt;/a&gt; &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/4/16/Using-Transfer-Decorators-to-Deal-with-Invalid-Data&quot;&gt;times&lt;/a&gt; &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/6/17/Using-Transfer-Metadata-to-Create-a-Memento&quot;&gt;before&lt;/a&gt;, but the posts in this series will, for now, supercede all of those previous posts, as this object continues to change.  In fact, this object has a few methods and techniques the design of which I&apos;m not crazy about right now.  There will definitely be changes coming, at some point down the road.  [More]
				</description>
				
				<category>Transfer</category>				
				
				<category>ColdFusion</category>				
				
				<category>OO Design</category>				
				
				<category>How I Use Transfer</category>				
				
				<pubDate>Mon, 21 Jul 2008 12:11:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/7/21/How-I-Use-Transfer--Part-VIII--My-Abstract-Transfer-Decorator-Object--Simple-Methods</guid>
				
			</item>
			
			<item>
				<title>How I Use Transfer - Part VII - A Concrete Gateway Object</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/7/15/How-I-Use-Transfer--Part-VII--A-Concrete-Gateway-Object</link>
				<description>
				
				In the &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/14/How-I-Use-Transfer--Part-VI--My-Abstract-Gateway-Object&quot;&gt;previous post&lt;/a&gt;, I described my Abstract Gateway Object.  As I did with the Service Objects, I&apos;m going to take a moment to describe a Concrete Gateway Object as an illustration of how I use the Abstract Gateway.  I&apos;ll start with a recap of the differences between the Abstract Gateway and Concrete Gateways, followed by a look at the code of a specific Concrete Gateway.&lt;/p&gt;
&lt;ul&gt;&lt;strong&gt;The Abstract Gateway Object&lt;/strong&gt;
	&lt;li&gt;Is never instantiated as an object.&lt;/li&gt;
	&lt;li&gt;Cannot be used as is.&lt;/li&gt;
	&lt;li&gt;Is only ever used as a base object for Concrete Gateway Objects.&lt;/li&gt;
	&lt;li&gt;There is only one Abstract Gateway Object, called AbstractGateway.cfc.&lt;/li&gt;
	&lt;li&gt;Does not have any Transfer classes associated with it.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;strong&gt;Concrete Gateway Objects&lt;/strong&gt;
	&lt;li&gt;Are instantiated as objects.&lt;/li&gt;
	&lt;li&gt;Methods on them are called by Service Objects.&lt;/li&gt;
	&lt;li&gt;All extend AbstractGateway.cfc.&lt;/li&gt;
	&lt;li&gt;There are many Concrete Gateway Objects, e.g., UserGateway.cfc, ProductGateway.cfc, ReviewGateway.cfc, etc.&lt;/li&gt;
	&lt;li&gt;Have one &quot;main&quot; Transfer class associated with them, but can interact with others via code specific to the Concrete Gateway.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One thing to note here is that my Gateway Objects are all injected into Service Objects via Coldspring, and are only called by Service Objects.  So the Service acts as an API to the entire model.  If a Business Object needs to call a method on a gateway, it calls it via a Service Object that is injected into the Business Object.  [More]
				</description>
				
				<category>Transfer</category>				
				
				<category>ColdFusion</category>				
				
				<category>OO Design</category>				
				
				<category>How I Use Transfer</category>				
				
				<pubDate>Tue, 15 Jul 2008 13:27:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/7/15/How-I-Use-Transfer--Part-VII--A-Concrete-Gateway-Object</guid>
				
			</item>
			
			<item>
				<title>How I Use Transfer - Part VI - My Abstract Gateway Object</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/7/14/How-I-Use-Transfer--Part-VI--My-Abstract-Gateway-Object</link>
				<description>
				
				In the &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/3/How-I-Use-Transfer--Part-IV--My-Abstract-Service-Object&quot;&gt;past&lt;/a&gt; &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/8/How-I-Use-Transfer--Part-V--A-Concrete-Service-Object&quot;&gt;few&lt;/a&gt; &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/8/How-I-Use-Transfer--Part-V1--A-Comment-and-Response&quot;&gt;posts&lt;/a&gt; in the series I discussed, at length, how I have implemented my service layer, which consists of an Abstract Service Object and Concrete Service Objects.  I decided to take it easy this time around and just look at my AbstractGateway Object, as it&apos;s pretty simple in comparison.&lt;/p&gt;
&lt;p&gt;As with the AbstractService, this object is not meant to be instantiated on its own, but rather acts as a base object which my concrete Gateway Objects extend. There are only three public methods in my AbstractGateway:
&lt;ul&gt;
	&lt;li&gt;GetList(), which returns a listing for the default entity&lt;/li&gt;
	&lt;li&gt;GetActiveList(), which returns a listing for the default entity, but only includes Active records&lt;/li&gt;
	&lt;li&gt;ReInitActiveList(), which is used to reinitialize the cached query for the Active List (see below for details)&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;  [More]
				</description>
				
				<category>Transfer</category>				
				
				<category>ColdFusion</category>				
				
				<category>OO Design</category>				
				
				<category>How I Use Transfer</category>				
				
				<pubDate>Mon, 14 Jul 2008 06:35:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/7/14/How-I-Use-Transfer--Part-VI--My-Abstract-Gateway-Object</guid>
				
			</item>
			
			<item>
				<title>How I Use Transfer - Part V.1 - A Comment and Response</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2008/7/8/How-I-Use-Transfer--Part-V1--A-Comment-and-Response</link>
				<description>
				
				&lt;a href=&quot;http://www.briankotek.com/blog/&quot;&gt;Brain Kotek&lt;/a&gt; wrote a lengthy and informative comment to &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2008/7/8/How-I-Use-Transfer--Part-V--A-Concrete-Service-Object&quot;&gt;my last blog post&lt;/a&gt;.  I started composing a response as a comment of my own, but it got very long, and I think that both Brian&apos;s comment and my response contribute greatly to the series, so I&apos;ve turned my response into a blog post.  I&apos;m including Brian&apos;s comments in quotes throughout this post.&lt;/p&gt;  [More]
				</description>
				
				<category>Transfer</category>				
				
				<category>ColdFusion</category>				
				
				<category>OO Design</category>				
				
				<category>How I Use Transfer</category>				
				
				<pubDate>Tue, 08 Jul 2008 10:28:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2008/7/8/How-I-Use-Transfer--Part-V1--A-Comment-and-Response</guid>
				
			</item>
			</channel></rss>