ColdBox allows you to store the details of your CF datasources in your configuration file. This prevents you from needing to store usernames and passwords in your actual code, and allows you to easily switch an application to another database, even with the environment control. In the past this datasource information was presented to you as a CFC object with getter methods.
In ColdBox 4.0 we recognized that the datasource bean was really just a value object with no behaviors-- only data. In the spirit of simplification, we've replaced the datasource bean with a standard struct of data. It contains the same information, but instead of calling a getter, just reference the keys in the struct. An extended find and replace on your app's code base should made quick work of this.
Here's an example of what your code might have looked like on ColdBox 3.x
<--- Dependencies ---> <cfproperty name="dsn" inject="coldbox:datasource:mydsn"> <--- list ---> <cffunction name="list" output="false" access="public" returntype="query" hint="Return the contacts"> <cfset var q = ""> <cfquery name="q" datasource="#dsn.getName()#"> SELECT * FROM contacts ORDER BY name asc </cfquery> <cfreturn q> </cffunction>
And here's that same code ready for ColdBox 4:
<--- Dependencies ---> <cfproperty name="dsn" inject="coldbox:datasource:mydsn"> <--- list ---> <cffunction name="list" output="false" access="public" returntype="query" hint="Return the contacts"> <cfset var q = ""> <cfquery name="q" datasource="#dsn.name#"> SELECT * FROM contacts ORDER BY name asc </cfquery> <cfreturn q> </cffunction>
You'll note the only difference is dsn.getName() turned into dsn.name. Your /config/ColdBox.cfc file will look the same as always. No changes there!
Add Your Comment