No. By wrapping it in a StructKeyExists check, you only create a reference
once. After that the reference in the variables scope is returned.

On 12/31/06, Bryan S <[EMAIL PROTECTED]> wrote:

 But if you do that you are reassigning the value of variables.utilityeach time 
you call the function. Is there a way to just set
variables.utility once and then reference it inside the function I am
calling? Normally you'd do that in the init but that doesn't seem to be an
option in the extended gateway for some reason.

Bryan

 ------------------------------
*From:* [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] *On
Behalf Of *Brian Kotek
*Sent:* Sunday, December 31, 2006 1:04 AM
*To:* [email protected]
*Subject:* Re: [Reactor for CF] Accessing another cfc inside an extended
gateway

Nice, Qasim. I didn't even know Reactor had such a method. I tested it and
it works just fine. In the Gateway you can do something like:


    <cffunction name="getUtility" returntype="any" access="private"
output="false">
        <cfif not StructKeyExists(variables, 'utility')>
            <cfset variables.utility = _getBean('utility') />
        </cfif>
        <cfreturn variables.utility />
    </cffunction>



On 12/29/06, Qasim Rasheed <[EMAIL PROTECTED]> wrote:
>
> Bryan,
>
> AFAIK, every Reactor object has a method called _getBean() which gives
> you an access to the ColdSpring bean objects. That might solve your issue.
>
> Thanks
>
> Qasim
>
> On 12/29/06, Brian Kotek <[EMAIL PROTECTED]> wrote:
> >
> > I don't believe that the generated Reactor components have an init()
> > method. So writing your own won't matter because nothing will automatically
> > call it.
> >
> > I'm not sure why ColdSpring doesn't attempt to use setter injection to
> > autowire the gateway if you have a setter method that matches up with
> > another bean. I speculate it has something to do with the fact that this is
> > done with a factory method call and not a direct instantiation by
> > ColdSpring.
> >
> > I think what you'll need to do is write a custom setter for your
> > ModelUtilities in your custom gateway, then use ColdSpring in the typical
> > way to get the Gateway from the Reactor factory and inject it into your
> > Manager component (or Service, ORMAdapter, etc.). You'd also use ColdSpring
> > to create an instance of your ModelUtilities and inject that into the same
> > component. Finally, you'd have to manually have some code in your Manager
> > (or whichever) component to call the setter on your custom gateway and pass
> > the ModelUtilities into it. Something like this maybe in your Manager:
> >
> >     <cffunction name="setModelUtilities" returntype="void"
> > access="public" output="false">
> >         <cfargument name="modelUtilities" type="any" required="true"
> > />
> >         <cfset getMyTableGateway().setUtility(arguments.modelUtilities)
> > />
> >     </cffunction>
> >
> > The only thing that worries me there is that this seems to depend on
> > ColdSpring injecting the gateway before it injects the utility. It worked
> > when I tested it locally but I'd double check to make sure. Anyway, hope
> > that helps.
> >
> >
> > On 12/29/06, Bryan S < [EMAIL PROTECTED]> wrote:
> > >
> > > O.K. I have more information on this now that I'm hoping this will
> > > turn a light bulb on for someone.
> > >
> > > I'm trying to call variables.instance.ModelUtilities.myFunctionName()
> > > from within my extended gateway
> > > extends="reactor.project.AppManager.Gateway.MyTableGateway"
> > >
> > >
> > > If I put the code below at the top of my extended Gateway I am able
> > > to access the function in my object, however, it won't work automatically
> > > out of ColdSpring the way the rest of my objects do. I tried putting this
> > > same code in an init in my extended gateway but the init never gets 
called.
> > > I am wondering why the init doesn't get called and if it's supposed to be
> > > that way how do I accomplish this correctly.
> > >
> > > <cfset variables.instance.ColdSpringBeanFactory =
> > > createObject("component","coldspring.beans.DefaultXmlBeanFactory").init()
> > > />
> > >
> > > <cfset 
variables.instance.ColdSpringBeanFactory.loadBeansFromXmlFile("D:\Inetpub\wwwroot\AppManager\config\ColdSpring.xml",true)
 />
> > >
> > > <cfset variables.instance.ModelUtilities =
> > > variables.instance.ColdSpringBeanFactory.getBean("ModelUtilities")
> > > />
> > >
> > >
> > > On 12/28/06, Bryan S <[EMAIL PROTECTED] > wrote:
> > > >
> > > > If I call my function getModelUtilities().setQuerySortCriteria()
> > > > from my model glue controller there is no problem.
> > > >
> > > > However, if I call it from my extended Gateway I get the error
> > > > message below. I went into my autowire.cfm and if I call a
> > > > different getter in there variables.instance has a modelutilities
> > > > in it. However, when I dump variables.instance inside of
> > > > getModelUtilities it doesn't exist. What am I missing?
> > > >
> > > >   *Message* Element INSTANCE.MODELUTILITIES is undefined in
> > > > VARIABLES. *Detail*
> > > >  *Extended Info*
> > > >  *Tag Context* D:\Inetpub\wwwroot\AppManager\includes\autowire.cfm
> > > > (47)
> > > > D:\Inetpub\wwwroot\AppManager\model\data\Gateway\GROUP_USERGateway.cfc
> > > > (57)
> > > >
> > > > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> > > > -- -- -- -- --
> > > > Reactor for ColdFusion Mailing List
> > > > [email protected]
> > > > Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
> > > >
> > > > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> > > > -- -- -- -- --
> > >
> > >
> > >
> > > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> > > -- -- -- --
> > > Reactor for ColdFusion Mailing List
> > > [email protected]
> > > Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
> > > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> > > -- -- -- --
> > >
> >
> >
> > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> > -- -- -- --
> > Reactor for ColdFusion Mailing List
> > [email protected]
> > Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
> > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> > -- -- -- --
> >
>
>
>
> --
> Qasim Rasheed
> Certified Advance ColdFusion MX Developer
> (IM qasimrasheed AT yahoo, msn or GTalk)
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> -- -- --
> Reactor for ColdFusion Mailing List
> [email protected]
> Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> -- -- --
>


-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
Reactor for ColdFusion Mailing List
[email protected]
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --


-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
Reactor for ColdFusion Mailing List
[email protected]
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --



-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Reactor for ColdFusion Mailing List
[email protected]
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

Reply via email to