At the moment, nothing comes to mind as to why the session would be
replicated.

Toss the relevant MG configs into patebin and let's have a look at that.

Would it be possible to pull out some of the MG code in to a test
application I could download?

DW

On Tue, Oct 30, 2012 at 11:52 AM, Jeff P <[email protected]> wrote:

> That makes sense within the same function since I'm declaring a local var
> and then checking it but it's got to be in the session for it to be set to
> the local var. So within the function I get one answer if I
> request.session.cart by itself but another if I pull back the entire
> session and have it check for the cart within it. Plus I'm getting the same
> response from the template after the addResult and redirect to the display
> page. Ugh!
>
> Jeff
>
>
> On Tuesday, October 30, 2012 11:13:45 AM UTC-4, Dan Wilson -
> [email protected] wrote:
>
>> Is that because there is a reference still in the scope of the function?
>>
>> : <cfset var cart = beans.UserSession.**getCurrentCart()>
>>
>> On Tue, Oct 30, 2012 at 10:53 AM, Jeff P <[email protected]> wrote:
>>
>>> At the top of the function that processes the order and clears the cart
>>> I have:
>>>
>>> <cfset var cart = beans.UserSession.**getCurrentCart()>
>>> <cfset var theSession = beans.UserSession.getSession()**>
>>>
>>> Right after the <cfset beans.UserSession.**clearCartSession()> if I put
>>> in a
>>>
>>> <cfthrow message="#StructKeyExists(**beans.UserSession.cart)#"> returns
>>> a "No"
>>>
>>> but
>>>
>>> <cfthrow message="#isStruct(cart)#"> returns a "Yes"  and the item in
>>> the cart is still there, it's not a freshly initialized cart.
>>>
>>> Thanks, Jeff
>>>
>>>
>>> On Tuesday, October 30, 2012 10:02:23 AM UTC-4, Dan Wilson -
>>> [email protected] wrote:
>>>
>>>> What happens when you put a cfdump right after the cart clearing
>>>> operation?
>>>>
>>>> DW
>>>>
>>>>
>>>> On Tue, Oct 30, 2012 at 9:56 AM, Jeff P <[email protected]> wrote:
>>>>
>>>>> The sessionid remains correct and separate between the two browsers.
>>>>> The product in the cart is also correct for the user's session. This has
>>>>> also helped verify that the cart that shows up after the order is complete
>>>>> is not a freshly initialized cart but the same cart from the order (or a
>>>>> copy as you stated earlier)
>>>>>
>>>>> Jeff
>>>>>
>>>>>
>>>>> On Monday, October 29, 2012 7:48:15 PM UTC-4, Jared Rypka-Hauer wrote:
>>>>>
>>>>>> Try something once.
>>>>>>
>>>>>> Use two different browsers and create 2 different sessions with
>>>>>> different products in the cart so you can differentiate them.
>>>>>>
>>>>>> The process one cart and see if the symptom still exists and if it
>>>>>> does, check to see which product is in the cart, the one that should be
>>>>>> there or the one from the other session...
>>>>>>
>>>>>> Just a thought...
>>>>>>
>>>>>> J
>>>>>>
>>>>>> Then run your test and make sure that the cart you see in the dump is
>>>>>> the cart that actually belongs to the user in question.
>>>>>> On Oct 29, 2012, at 1:24 PM, Jeff P <[email protected]> wrote:
>>>>>>
>>>>>> Here are the parts in pastebin
>>>>>>
>>>>>> Controller 
>>>>>> http://pastebin.**com****/q9sg4u3a<http://pastebin.com/q9sg4u3a>
>>>>>>
>>>>>> UserSession 
>>>>>> http://pastebin.**co****m/5mDTu7dS<http://pastebin.com/5mDTu7dS>
>>>>>>
>>>>>> OrderController 
>>>>>> http://**pastebi****n.com/GdDejK0E<http://pastebin.com/GdDejK0E>
>>>>>>
>>>>>> Template http://pastebin.com/**0****MDbxPJg<http://pastebin.com/0MDbxPJg>
>>>>>>
>>>>>> On Monday, October 29, 2012 1:59:47 PM UTC-4, Jeff P wrote:
>>>>>>>
>>>>>>> <cfset event.copyToScope( variables, "currentUser, currentCart,
>>>>>>> userSession")>
>>>>>>> <cfset me = variables.currentUser>
>>>>>>> <cfset cart = variables.currentCart>
>>>>>>>
>>>>>>> <cfdump var="#userSession#"> shows the cart isn't in the session
>>>>>>>
>>>>>>> <cfdump var="#currentCart#" label="currentCart"> which comes from
>>>>>>> the session as well, returns the object.
>>>>>>>
>>>>>>> I will give the direct calls a try. I had thought about always
>>>>>>> having the cart exist but hadn't worked towards it yet.
>>>>>>>
>>>>>>> Thanks also for reminding me about pastebin.
>>>>>>>
>>>>>>> Jeff
>>>>>>>
>>>>>>> On Monday, October 29, 2012 1:45:00 PM UTC-4, Jared Rypka-Hauer
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Can you show the code you're using to get the cart from the event
>>>>>>>> into the page's variables scope? It's possible that there's a 
>>>>>>>> structCopy()
>>>>>>>> involved rather than a simple assignment.
>>>>>>>>
>>>>>>>> The difference is that doing a structCopy() would cause a separate
>>>>>>>> instance of session.cart to be set to the event object and/or the 
>>>>>>>> variables
>>>>>>>> scope of your template. If that's the case then the behavior you're 
>>>>>>>> seeing
>>>>>>>> makes perfect sense. If this is the case, the byRef nature of structs 
>>>>>>>> that
>>>>>>>> you're depending on isn't going to work because you have a discrete 
>>>>>>>> COPY of
>>>>>>>> the objects in the event object and variables scope. For some reason 
>>>>>>>> this
>>>>>>>> is ringing a bell in the back of my mind as far as MG's functionality 
>>>>>>>> and
>>>>>>>> unexpected behaviors.
>>>>>>>>
>>>>>>>> You may be right, I may be crazy. But I just might be the lunatic
>>>>>>>> you're looking for. Give it a try, see what happens. :)
>>>>>>>>
>>>>>>>> Just for shits and giggles, you could also try replacing your
>>>>>>>> function calls with direct references to the relevant variable. I know 
>>>>>>>> it
>>>>>>>> breaks encapsulation, but I'm not suggesting you do it for your 
>>>>>>>> production
>>>>>>>> code, just remark out your calls to UserSession and CurrentCart and 
>>>>>>>> replace
>>>>>>>> them with direct references to the variables. That will eliminate your
>>>>>>>> machinery from the equation and tell you if you have a bug in your 
>>>>>>>> code or
>>>>>>>> if there's something deeper going on.
>>>>>>>>
>>>>>>>> You could also try setting session.cart to "" rather than using
>>>>>>>> structDelete(). Replace structKeyExists() with isStruct() and just have
>>>>>>>> session.cart always exist...
>>>>>>>>
>>>>>>>> Man it's been a long time since I've responded to a community
>>>>>>>> support request like this... feels good!
>>>>>>>>
>>>>>>>> Let us know what you find out!
>>>>>>>>
>>>>>>>> J
>>>>>>>>
>>>>>>>> PS - If you really want help with this you might be best off to
>>>>>>>> post the code to the template in question, both controllers, your
>>>>>>>> UserSession and your Cart to something like pastebin.com or
>>>>>>>> nomorepasting.com and send us links to them all so we can see the
>>>>>>>> whole codebase in a format that's familiar and easily readable. Both of
>>>>>>>> those resources provide ColdFusion code support so they will color code
>>>>>>>> highlight things correctly.
>>>>>>>>
>>>>>>>> http://pastebin.com
>>>>>>>> http://www.nomorepasting.com/**p****aste.php<http://www.nomorepasting.com/paste.php>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Oct 29, 2012, at 12:26 PM, Jeff P <[email protected]> wrote:
>>>>>>>>
>>>>>>>> This is in a controller called OrderController Here is the code:
>>>>>>>>
>>>>>>>> <cffunction name="processOrder" access="public" returntype="void"
>>>>>>>> output="false">
>>>>>>>> <cfargument name="event" type="any">
>>>>>>>>
>>>>>>>>         <!--- get the cart data --->
>>>>>>>> <cfset var cart = beans.UserSession.**getCurrentCa****rt()>
>>>>>>>>
>>>>>>>>         <cfif returnCode eq "Y">
>>>>>>>>      <!--- if payment is successful, --->
>>>>>>>>       <!--- clear database tables for the cart --->
>>>>>>>>       <cfset beans.cartService.**removeCartFr****omDatabase(cart)>
>>>>>>>>       <!--- clear the cart session --->
>>>>>>>>       <cfset beans.UserSession.**clearCartSes****sion()>
>>>>>>>>      <cfset beans.UserSession.**clearCheckou****t()>
>>>>>>>>       <!--- delete the credit card temp stuff --->
>>>>>>>>      <cfset beans.OrderService.**deleteCredi****tCardData(myOrder)>
>>>>>>>>       <cfset arguments.event.setValue("**publ****icOrderNumber",
>>>>>>>> myOrder.getPublicOrderNumber()******)>
>>>>>>>>       <cfset arguments.event.addResult("**pay****mentAccepted")>
>>>>>>>>  <cfelse>
>>>>>>>>             .....
>>>>>>>>          </cfif>
>>>>>>>>
>>>>>>>> The code to clear the cart session and checkout in the UserSession
>>>>>>>> cfc are:
>>>>>>>>
>>>>>>>> <cffunction name="clearCartSession" access="public" output="false">
>>>>>>>>  <cflock timeout="3" type="exclusive" scope="session">
>>>>>>>> <cfset structDelete( session, "cart" )>
>>>>>>>>  </cflock>
>>>>>>>> </cffunction>
>>>>>>>> <cffunction name="clearCheckout" access="public" output="false">
>>>>>>>>  <cflock timeout="3" type="exclusive" scope="session">
>>>>>>>> <cfset structDelete( session, "checkout" )>
>>>>>>>>  </cflock>
>>>>>>>> </cffunction>
>>>>>>>>
>>>>>>>> Thank you Dan.
>>>>>>>>
>>>>>>>> On Monday, October 29, 2012 11:02:52 AM UTC-4, Dan Wilson -
>>>>>>>> [email protected] wrote:
>>>>>>>>>
>>>>>>>>> Show the portion of code where you delete the cart after a
>>>>>>>>> successful transaction.
>>>>>>>>>
>>>>>>>>> DW
>>>>>>>>> On Oct 29, 2012 10:41 AM, "Jeff P" <[email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hey everybody,
>>>>>>>>>>
>>>>>>>>>> I'm experiencing so strangeness with sessions and am hoping you
>>>>>>>>>> folks could shed some light on on what's happening. I have a cart 
>>>>>>>>>> app in MG
>>>>>>>>>> 3.1.299. When I complete an order and delete the cart from the 
>>>>>>>>>> session and
>>>>>>>>>> show the order complete page a dump of the session shows the cart is 
>>>>>>>>>> no
>>>>>>>>>> longer in the session scope. However, another call to the session on 
>>>>>>>>>> the
>>>>>>>>>> same page shows the cart as a valid struct within the session.
>>>>>>>>>>
>>>>>>>>>> In my Controller.cfc I have an onRequestStart function that
>>>>>>>>>> copies the cart and the user (if they exist) to the event scope. I 
>>>>>>>>>> also
>>>>>>>>>> have it copying the entire session through the UserSession.cfc to 
>>>>>>>>>> try to
>>>>>>>>>> figure this out. Here are the pertinent parts of my controller.cfc 
>>>>>>>>>> and
>>>>>>>>>> userSession.cfc:
>>>>>>>>>>
>>>>>>>>>> *Controller.cfc*
>>>>>>>>>>
>>>>>>>>>>          <cffunction name="onRequestStart" access="public"
>>>>>>>>>> output="false">
>>>>>>>>>> <cfargument name="event" type="any">
>>>>>>>>>>  <!--- copy the cart to the event scope if it exists. --->
>>>>>>>>>> <cfif beans.UserSession.cartExists()******>
>>>>>>>>>>  <cfset arguments.event.setValue("**curr****entCart",
>>>>>>>>>> beans.UserSession.**getCurrentCa****rt())>
>>>>>>>>>> </cfif>
>>>>>>>>>>  <!--- and for the user if they're logged in. --->
>>>>>>>>>> <cfif beans.UserSession.loggedIn()>
>>>>>>>>>>  <cfset arguments.event.setValue("**curr****entUser",
>>>>>>>>>> beans.UserSession.**getCurrentUs****er())>
>>>>>>>>>> </cfif>
>>>>>>>>>>  <!--- return the whole session for some testing --->
>>>>>>>>>> <cfset arguments.event.setValue("**user****Session",
>>>>>>>>>> beans.UserSession.getSession()******)>
>>>>>>>>>>  </cffunction>
>>>>>>>>>>
>>>>>>>>>> *UserSession.cfc*
>>>>>>>>>>
>>>>>>>>>>         <cffunction name="cartExists" access="public"
>>>>>>>>>> output="false">
>>>>>>>>>>  <cflock timeout="3" type="readonly" scope="session">
>>>>>>>>>> <cfreturn structKeyExists( session, "cart" )>
>>>>>>>>>>  </cflock>
>>>>>>>>>> </cffunction>
>>>>>>>>>>
>>>>>>>>>>         <cffunction name="getCurrentCart" access="public"
>>>>>>>>>> output="false">
>>>>>>>>>>  <cflock timeout="3" type="readonly" scope="session">
>>>>>>>>>> <cfreturn session.cart>
>>>>>>>>>>  </cflock>
>>>>>>>>>> </cffunction>
>>>>>>>>>>  <cffunction name="getCurrentUser" access="public"
>>>>>>>>>> output="false">
>>>>>>>>>>  <cflock timeout="3" type="readonly" scope="session">
>>>>>>>>>> <cfreturn session.user>
>>>>>>>>>>  </cflock>
>>>>>>>>>> </cffunction>
>>>>>>>>>>  <cffunction name="getSession" access="public" output="false">
>>>>>>>>>>  <cflock timeout="3" type="readonly" scope="session">
>>>>>>>>>> <cfreturn session>
>>>>>>>>>>  </cflock>
>>>>>>>>>> </cffunction>
>>>>>>>>>>
>>>>>>>>>>         <cffunction name="loggedIn" access="public"
>>>>>>>>>> output="false">
>>>>>>>>>>  <cflock timeout="3" type="readonly" scope="session">
>>>>>>>>>> <cfreturn structKeyExists( session, "user" )>
>>>>>>>>>>  </cflock>
>>>>>>>>>> </cffunction>
>>>>>>>>>>
>>>>>>>>>> In my template I have a chink of code that displays a link to the
>>>>>>>>>> cart if it exists and has at least one item in it:
>>>>>>>>>>
>>>>>>>>>> If I use the currentCart variable set in Controller.cfc, it
>>>>>>>>>> returns the cart from the session after the order is processed even 
>>>>>>>>>> though
>>>>>>>>>> a cfdump of the session shows it isn't there.
>>>>>>>>>>
>>>>>>>>>> <cfif isStruct(variables.**currentCart****) and
>>>>>>>>>> variables.currentCart.**getItemC****ount() gte 1>
>>>>>>>>>> <div class="row-fluid">
>>>>>>>>>>  <div id="viewCart" class="span12">
>>>>>>>>>>  <a href="#click_ViewCart#">Your cart: <span
>>>>>>>>>> class="bold">#variables.**curren****tCart.getItemCount()#</**span>
>>>>>>>>>> item<cfif variables.currentCart.**getItemC****ount() neq
>>>>>>>>>> 1>s</cfif></a> <a href="#click_ViewCart#"><img
>>>>>>>>>> src="images/shoppingCart.png" alt="view cart"></a>
>>>>>>>>>>  </div>
>>>>>>>>>> </div>
>>>>>>>>>> </cfif>
>>>>>>>>>>
>>>>>>>>>> *The display section still shows up after the order is complete*.
>>>>>>>>>>
>>>>>>>>>> But, If I use the entire getSession function from the
>>>>>>>>>> Controller.cfc it acts as it's supposed to:
>>>>>>>>>>
>>>>>>>>>> <cfif structKeyExists(variables.**user****Session, "cart") and
>>>>>>>>>> variables.userSession.cart.**get****ItemCount() gte 1>
>>>>>>>>>> <div class="row-fluid">
>>>>>>>>>>  <div id="viewCart" class="span12">
>>>>>>>>>> <a href="#click_ViewCart#">Your cart: <span
>>>>>>>>>> class="bold">#variables.**userSe****ssion.cart.getItemCount(**
>>>>>>>>>> )#</**sp**an> item<cfif 
>>>>>>>>>> variables.userSession.cart.**get****ItemCount()
>>>>>>>>>> neq 1>s</cfif></a> <a href="#click_ViewCart#"><img
>>>>>>>>>> src="images/shoppingCart.png" alt="view cart"></a>
>>>>>>>>>>  </div>
>>>>>>>>>> </div>
>>>>>>>>>> </cfif>
>>>>>>>>>>
>>>>>>>>>> *The display section doesn't show up after the order is complete.
>>>>>>>>>> *
>>>>>>>>>>
>>>>>>>>>> How can one call to the session return that the cart doesn't
>>>>>>>>>> exist and then a second, later call to the session on the same page 
>>>>>>>>>> return
>>>>>>>>>> that it does?
>>>>>>>>>>
>>>>>>>>>> Thank you for looking at this,
>>>>>>>>>>
>>>>>>>>>> Jeff P.
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Model-Glue Sites:
>>>>>>>>>> Home Page: http://www.model-glue.com
>>>>>>>>>> Documentation: http://docs.model-glue.com
>>>>>>>>>> Bug Tracker: http://bugs.model-glue.com
>>>>>>>>>> Blog: http://www.model-glue.com/blog
>>>>>>>>>>
>>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>>> Groups "model-glue" group.
>>>>>>>>>> To post to this group, send email to [email protected]
>>>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>>>> model-glue+...@googlegroups.**co****m
>>>>>>>>>> For more options, visit this group at
>>>>>>>>>> http://groups.google.com/**group****/model-glue?hl=en<http://groups.google.com/group/model-glue?hl=en>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> --
>>>>>>>> Model-Glue Sites:
>>>>>>>> Home Page: http://www.model-glue.com
>>>>>>>> Documentation: http://docs.model-glue.com
>>>>>>>> Bug Tracker: http://bugs.model-glue.com
>>>>>>>> Blog: http://www.model-glue.com/blog
>>>>>>>>
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "model-glue" group.
>>>>>>>> To post to this group, send email to [email protected]
>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>> model-glue+...@googlegroups.**co****m
>>>>>>>> For more options, visit this group at
>>>>>>>> http://groups.google.com/**group****/model-glue?hl=en<http://groups.google.com/group/model-glue?hl=en>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>  --
>>>>>> Model-Glue Sites:
>>>>>> Home Page: http://www.model-glue.com
>>>>>> Documentation: http://docs.model-glue.com
>>>>>> Bug Tracker: http://bugs.model-glue.com
>>>>>> Blog: http://www.model-glue.com/blog
>>>>>>
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "model-glue" group.
>>>>>> To post to this group, send email to [email protected]
>>>>>> To unsubscribe from this group, send email to
>>>>>> model-glue+...@**googlegroups.**co**m
>>>>>> For more options, visit this group at
>>>>>> http://groups.google.com/**group****/model-glue?hl=en<http://groups.google.com/group/model-glue?hl=en>
>>>>>>
>>>>>>
>>>>>>  --
>>>>> Model-Glue Sites:
>>>>> Home Page: http://www.model-glue.com
>>>>> Documentation: http://docs.model-glue.com
>>>>> Bug Tracker: http://bugs.model-glue.com
>>>>> Blog: http://www.model-glue.com/blog
>>>>>
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "model-glue" group.
>>>>> To post to this group, send email to [email protected]
>>>>> To unsubscribe from this group, send email to
>>>>> model-glue+...@**googlegroups.**com
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/**group**/model-glue?hl=en<http://groups.google.com/group/model-glue?hl=en>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>  Plutarch - "The mind is not a vessel to be filled but a fire to be
>>>> kindled."
>>>>
>>>  --
>>> Model-Glue Sites:
>>> Home Page: http://www.model-glue.com
>>> Documentation: http://docs.model-glue.com
>>> Bug Tracker: http://bugs.model-glue.com
>>> Blog: http://www.model-glue.com/blog
>>>
>>> You received this message because you are subscribed to the Google
>>> Groups "model-glue" group.
>>> To post to this group, send email to [email protected]
>>> To unsubscribe from this group, send email to
>>> model-glue+...@**googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/**group/model-glue?hl=en<http://groups.google.com/group/model-glue?hl=en>
>>>
>>
>>
>>
>> --
>> Plutarch - "The mind is not a vessel to be filled but a fire to be
>> kindled."
>>
>  --
> Model-Glue Sites:
> Home Page: http://www.model-glue.com
> Documentation: http://docs.model-glue.com
> Bug Tracker: http://bugs.model-glue.com
> Blog: http://www.model-glue.com/blog
>
> You received this message because you are subscribed to the Google
> Groups "model-glue" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/model-glue?hl=en
>



-- 
Plutarch - "The mind is not a vessel to be filled but a fire to be kindled."

-- 
Model-Glue Sites:
Home Page: http://www.model-glue.com
Documentation: http://docs.model-glue.com
Bug Tracker: http://bugs.model-glue.com
Blog: http://www.model-glue.com/blog

You received this message because you are subscribed to the Google
Groups "model-glue" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/model-glue?hl=en

Reply via email to