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/ -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
