Category Selected:

tutorials

Blog

Module Lifecycles Explained

Luis Majano |  March 29, 2011

In this short entry I just wanted to lay out a few new diagrams that explain the lifecycle of ColdBox modules.  As always, all our documentation reflects these changes as well.  This might help some of you developers getting ready to win that ColdBox Modules contest and get some cash and beer!

Read More

WireBox Binder and Configuration Introduction

Curt Gratz |  March 15, 2011

This video shows the basics of setting up a "Binder" with WireBox and how to setup mappings and alias using the WireBox DSL for super simple dependency injection that is easy to read.

WireBox Binder and Configuration Introduction... from Curt Gratz on Vimeo.

Again, this is not even scratching the surface of what the binder in WireBox can do. Below are some other simple changes you could make to the binder or ways you could do injection

So this line

.initArg(name="daoPath",dsl="id:daoPath"); Could change to .initArg(name="",ref="daoPath") //refpoints to an id directly

as one possible alternative, so if we wanted, we could remove the .initArg and do it via annotations

function init(required daoPath inject) or function init(required daoPath inject="id") or function init(required daoPath inject="id:daoPath")

So, as you can see, you can do your injections a variety of ways. Now, go, read the docs, and install WireBox and get wiring your model up the easy way.

Read More

WireBox Binder and Configuration Introduction

Curt Gratz |  March 15, 2011

This video shows the basics of setting up a "Binder" with WireBox and how to setup mappings and alias using the WireBox DSL for super simple dependency injection that is easy to read.

WireBox Binder and Configuration Introduction... from Curt Gratz on Vimeo.

Again, this is not even scratching the surface of what the binder in WireBox can do. Below are some other simple changes you could make to the binder or ways you could do injection

So this line

.initArg(name="daoPath",dsl="id:daoPath"); Could change to .initArg(name="",ref="daoPath") //refpoints to an id directly

as one possible alternative, so if we wanted, we could remove the .initArg and do it via annotations

function init(required daoPath inject) or function init(required daoPath inject="id") or function init(required daoPath inject="id:daoPath")

So, as you can see, you can do your injections a variety of ways. Now, go, read the docs, and install WireBox and get wiring your model up the easy way.

Read More

WireBox Binder and Configuration Introduction

Curt Gratz |  March 15, 2011

This video shows the basics of setting up a "Binder" with WireBox and how to setup mappings and alias using the WireBox DSL for super simple dependency injection that is easy to read.

WireBox Binder and Configuration Introduction... from Curt Gratz on Vimeo.

Again, this is not even scratching the surface of what the binder in WireBox can do. Below are some other simple changes you could make to the binder or ways you could do injection

So this line

.initArg(name="daoPath",dsl="id:daoPath"); Could change to .initArg(name="",ref="daoPath") //refpoints to an id directly

as one possible alternative, so if we wanted, we could remove the .initArg and do it via annotations

function init(required daoPath inject) or function init(required daoPath inject="id") or function init(required daoPath inject="id:daoPath")

So, as you can see, you can do your injections a variety of ways. Now, go, read the docs, and install WireBox and get wiring your model up the easy way.

Read More

WireBox Installation and Introduction Screencast

Curt Gratz |  March 14, 2011

This video shows how to download and install the WireBox framework and offers super simple example of dependency injection using WireBox without any configuration or messy XML.

 

WireBox Installation and Introduction... from Curt Gratz on Vimeo.

Again, this is not even scratching the surface of what WireBox can do, but I wanted to get you started and thinking. More screencasts will be following to help you go deeper into how WireBox can help you in your development.

Now, go, read the docs, and install WireBox and get wiring your model up the easy way.

Read More

WireBox Installation and Introduction Screencast

Curt Gratz |  March 14, 2011

This video shows how to download and install the WireBox framework and offers super simple example of dependency injection using WireBox without any configuration or messy XML.

 

WireBox Installation and Introduction... from Curt Gratz on Vimeo.

Again, this is not even scratching the surface of what WireBox can do, but I wanted to get you started and thinking. More screencasts will be following to help you go deeper into how WireBox can help you in your development.

Now, go, read the docs, and install WireBox and get wiring your model up the easy way.

Read More

WireBox Installation and Introduction Screencast

Curt Gratz |  March 14, 2011

This video shows how to download and install the WireBox framework and offers super simple example of dependency injection using WireBox without any configuration or messy XML.

 

WireBox Installation and Introduction... from Curt Gratz on Vimeo.

Again, this is not even scratching the surface of what WireBox can do, but I wanted to get you started and thinking. More screencasts will be following to help you go deeper into how WireBox can help you in your development.

Now, go, read the docs, and install WireBox and get wiring your model up the easy way.

Read More

Mocking a Super Class with MockBox

Luis Majano |  March 09, 2011

A few folks have asked how you can leverage MXUnit and MockBox to mock a super class class.  Here is a simple example to showcase this:

Class Parent A

<cfcomponent name="A"> 
<!--- send ---> 
<cffunction access="public" hint="" name="send" output="false" returntype="any"> 
<cfreturn parent="">
</cffunction> 
</cfcomponent> 

Class Parent B

							
							
								
Read More

Mocking a Super Class with MockBox

Luis Majano |  March 09, 2011

A few folks have asked how you can leverage MXUnit and MockBox to mock a super class class.  Here is a simple example to showcase this:

Class Parent A

<cfcomponent name="A"> 
<!--- send ---> 
<cffunction access="public" hint="" name="send" output="false" returntype="any"> 
<cfreturn parent="">
</cffunction> 
</cfcomponent> 

Class Parent B

							
							
								
Read More

Don't Forget persistent="false" When Autowiring Entities

Curt Gratz |  January 21, 2011

I ran into a strange error yesterday that I couldn't seem to find out what was happening.

I was getting coldfusion.runtime.TemplateProxy cannot be cast to java.lang.String when trying to save an entity using ColdFusion ORM.  

Google was turning up nothing, so I started systematically removing lines of code.  It started working when I removed the line that did an entityLoad on a different object.  What was weird was I was just using that object to get a bit of data and not even for the object I was saving that caused everything to go boom, and if I removed the save, everything worked fine.  Then I remembered that the Hibernate session is affected so I took a deeper look at the entity that a loaded.  Sure enough, I was autowiring a property and didn't have persistent="false" on that property, causing it to throw the "coldfusion.runtime.TemplateProxy cannot be cast to java.lang.String" error.

Changing it from something like this

property name="shippingOriginationZip" inject="coldbox:setting:shippingOriginationZip";

to this

property name="shippingOriginationZip" inject="coldbox:setting:shippingOriginationZip" persistent="false";

fixed it all up.  Of course, like all coding solutions happen, this was in the middle of the night when I was no longer working on the code that this came to me.

So remember folks, if you have a property in an persistent CFC that is not persistent, be sure to say so!

Read More