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 transfer-dev@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to