On Dec 4, 2:20 pm, "Matt Quackenbush" <[EMAIL PROTECTED]> wrote:
> On Thu, Dec 4, 2008 at 1:19 PM, Matt Graf wrote:
>
> > I don't think I am explaining myself very well lets see if I can
> > explain it a little better
>
> > Here is an example of where I tell transfer to use my decorator
> > <object name="widget_one" table="widget_one"
> > decorator="model.decorators.widget_one">
>
> > now what I want is for transfer to use my base decorator without
> > telling transfer to do so.
>
> > is that possible?
>
> No.
I'm going to have to cry foul on this. It *is* possible, but it
requires some creativity.
1. Create your special decorator object.
2. Create a single instance of this object and add it as a listener
for the AfterNewTransferEvent.
3. Implement the actionAfterNewTransferEvent() method such that it
mixes the two components together and does setup.
AutoDecorator.cfc:
<!---+
Mix the two components together. Only mixes the public stuff, so if
you need private methods or
variables you'll need to inject another method and use that.
--->
<cffunction name="actionAfterNewTransferEvent" access="public"
returntype="void" output="false">
<cfargument name="event" type="transfer.com.events.TransferEvent"
required="true">
<cfset var object = arguments.event.getTransferObject()>
<cfset object.mixin = mixin>
<cfset object.mixin(variables)>
<!--- Maybe call some special method like setup() here to allow the
special decorator to do setup --->
</cffunction>
<cffunction name="mixin" access="public" returntype="void"
output="false">
<cfargument name="componentVariables" type="any" required="true">
<cfset structAppend(this,componentVariables.this,false)>
<cfset structAppend(variables,componentVariables,false)>
</cffunction>
In general I'm a big advocate of very dynamic solutions, but this
seems rather extreme with a high cost in terms of maintainability
later. So, while this does work, I'd argue that it'd be better to just
use decorator="BaseDecorator" on every <object/> in your transfer.xml
instead of this much black magic.
--~--~---------~--~----~------------~-------~--~----~
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
You received this message because you are subscribed to the Google Groups
"transfer-dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/transfer-dev?hl=en
-~----------~----~----~----~------~----~------~--~---