AFAIK, you do not need the StructKeyExists because ColdSpring will take care of creating only one reference.
HTH On 12/31/06, Brian Kotek <[EMAIL PROTECTED]> wrote:
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.instanceinside 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/ -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- 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/ -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
