True, but it will but it still involves the overhead of having CS do the work of checking the cache and returning the object. Since its easy to avoid that extra bit of work with the StructKeyExists check I'd just do that.
On 12/31/06, Qasim Rasheed <[EMAIL PROTECTED]> wrote:
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/ -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Reactor for ColdFusion Mailing List [email protected] Archives at: http://www.mail-archive.com/reactor%40doughughes.net/ -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
