Ryan. You don't have to lock shared scope variables, unless you need to account for race conditions.
Mark On 10/30/07, Ryan Heldt <[EMAIL PROTECTED]> wrote: > The objects I am copying from are persisted in the session scope. I would > like to be able to read from these objects at runtime without having to lock > them all over the place. Does creating a pointer in the request scope to an > object in session absolve you from locking? I'm not sure, and to be honest, > I haven't found a lot of information either way on the issue, so copying the > object seems to be playing it safe, no? > > > -----Original Message----- > > From: Brian Kotek [mailto:[EMAIL PROTECTED] > > Sent: Monday, October 29, 2007 3:43 PM > > To: CF-Talk > > Subject: Re: Copying a CFC Persisted in Session Scope > > > > Yes, but why are you creating a copy in the first place? Why > > do you think you need a copy and not a reference? > > > > On 10/29/07, Ryan Heldt <[EMAIL PROTECTED]> wrote: > > > > > > Thanks everyone for responding. Unfortunately, the method > > suggested by > > > Rich below seemed to create a pointer rather than a > > separate instance > > > of the object, as I had hoped. However, after discussing > > this with a > > > co-worker, we seem to have cooked-up a viable solution. > > > > > > There were two objects I wanted to "copy" into the request > > scope. So, > > > in each of those objects, we added a copy() constructor > > that took the > > > initial object, then copied all of the properties over, for > > instance: > > > > > > <cffunction name="copy" access="public" output="false" > > > returntype="AuthenticatedUser"> > > > <cfargument name="object" type="AuthenticatedUser" > > required="true" > > > /> > > > <cfscript> > > > _userID = object.getUserID(); > > > _username = object.getUsername(); > > > _firstName = object.getFirstName(); > > > _lastName = object.getLastName(); > > > _email = object.getEmail(); > > > _permissions = object.getPermissions(); > > > _isAuthenticated = object.getIsAuthenticated(); > > > </cfscript> > > > <cfreturn this /> > > > </cffunction> > > > > > > Then, in Application.cfc, onRequestStart(): > > > > > > <!--- Copy AuthenticatedUser object over to request scope > > ---> <cflock > > > timeout="10" throwontimeout="false" type="readonly" > > > scope="session"> > > > <cfset request.myAuthenticatedUser = > > > createObject("component","AuthenticatedUser").copy( > > > session.myAuthenticatedUs > > > er) /> > > > </cflock> > > > > > > Thanks! > > > Ryan > > > > > > > -----Original Message----- > > > > From: Rich [mailto:[EMAIL PROTECTED] > > > > Sent: Monday, October 29, 2007 12:40 PM > > > > To: CF-Talk > > > > Subject: RE: Copying a CFC Persisted in Session Scope > > > > > > > > > I realize this topic may have been covered on this list a > > > > while back, > > > > > but I'm having problems locating a good answer, so here goes. > > > > > Typically in our administrative web sites, on a request, we > > > > copy over > > > > > our session variables to the request scope so we can have > > > > read-access > > > > > to the information without having to place locks all > > over the place. > > > > > > > > I would suggest that you create a Session Facade and then > > have all > > > > your objects reference the façade. It is generally a bad idea to > > > > have an object reference an external scope (session, > > request, etc.), > > > > and this technique hides the implementation from your business > > > > objects. > > > > > > > > Assuming you wanted to return an 'admin' object, your > > objects would > > > > use a > > > > sessionFaçade.getAdminObject() and the function within the façade > > > > would look like the following (excluding locks, etc. > > > > for the sake of simplicity): > > > > > > > > function getAdminObject() { > > > > Return session.adminObject > > > > } > > > > > > > > HTH, > > > > Rich Kroll > > > > > > > > > > > > > > > > > > > > > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| ColdFusion is delivering applications solutions at at top companies around the world in government. Find out how and where now http://www.adobe.com/cfusion/showcase/index.cfm?event=finder&productID=1522&loc=en_us Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:292283 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4