I've been trying to setup a new scope for ASO's using cookies. I have
the ASO working fine and injecting into pages.
The problem is by the time the system calls
StateObjectPersistenceManager#store for the cookie manager it seems to
be too late to add cookies to the outgoing response. I checked it wasn't
the ASO by setting a simple cookie like:
cookieSource.writeCookieValue("store", "value"); in the store method and
it doesn't get stored. I'm using CookieSource injected into the cookie
ASO manager.
Does anyone see a way around this problem? Or am I getting it wrong
somehow?
Checking through my logs it shows the listener method beginning, the
cookie scope manager being accessed where it sets a test cookie, creates
the ASO and returns it, work in the listener is done and the listener
method returns, then the cookie scope manager is called to store the
ASO, which it runs through writing another simple cookie as well as the
ASO cookie and returns and finally the servlet's service method
completes. The test cookie in the "get the ASO" method is available in
the browser but the cookies written during the "store the ASO" are not.
This seems to prevent the possibility of a working cookie ASO scope.
I managed to setup a property persistence strategy that persists the
property object to a Cookie which manages to do the storing in time.
This works fine but when that object needs to be available to multiple
pages it'd be nicer to use an ASO than load the page with the persistent
property whenever it is needed.
What'd you think?
~eli
This is my log...note the empty 'object' value for CookieScopeManager on
line #7 is an empty cart whose toString() produces an empty string.
1. 2005/12/31 01:26:46.531 TRACE [http-8888-Processor5] TapestryServlet
>>> service(ServletRequest, ServletResponse)
2. 2005/12/31 01:26:57.171 TRACE [http-8888-Processor5] ReleasePage >>>
doAddToCart()
3. 2005/12/31 01:26:57.328 TRACE [http-8888-Processor5]
CookieScopeManager >*< CookieScopeManager()
4. 2005/12/31 01:26:57.359 TRACE [http-8888-Processor5]
CookieScopeManager >>> get(String,StateObjectFactory)
5. 2005/12/31 01:26:57.359 DEBUG [http-8888-Processor5]
CookieScopeManager === objectName = cart
6. 2005/12/31 01:26:57.359 DEBUG [http-8888-Processor5]
CookieScopeManager === factory = <SingletonProxy for
website.state.CartBuilder(org.apache.tapestry.engine.state.StateObjectFactory)>
7. 2005/12/31 01:26:57.406 DEBUG [http-8888-Processor5]
CookieScopeManager === object =
2005/12/31 01:26:57.406 TRACE [http-8888-Processor5] CookieScopeManager
<<< get(String,StateObjectFactory)
2005/12/31 01:26:58.000 TRACE [http-8888-Processor5] ReleasePage <<<
doAddToCart()
2005/12/31 01:26:58.015 TRACE [http-8888-Processor5] CookieScopeManager
>>> store(String,Object)
2005/12/31 01:26:58.015 DEBUG [http-8888-Processor5] CookieScopeManager
=== objectName = cart
2005/12/31 01:26:58.015 DEBUG [http-8888-Processor5] CookieScopeManager
=== stateObject = 204-205_2-206_3
2005/12/31 01:26:58.015 DEBUG [http-8888-Processor5] CookieScopeManager
=== dirty = true
2005/12/31 01:26:58.031 DEBUG [http-8888-Processor5] CookieScopeManager
=== cookieValue =
ZH4sIAAAAAAAAAFvzloG1uIhBMjk/Vy81JzMlvygxTy85sahEzzexwBlI/2FkOxfCUirPw8BQUVDOwsDAwAxUL5iVWJaol5OYl67nmVeSmp5aJPRowZLvje0WTAyMngysZYk5pakVRQwCCHV+pblJqUVta6bKck950M0EMg5o2BmwkYzFhQx1DEAxhrNgPhOcf66cA2TlfyCoAAAIrQA+rAAAAA==
2005/12/31 01:26:58.031 TRACE [http-8888-Processor5] CookieScopeManager
<<< store(String,Object)
2005/12/31 01:26:58.031 TRACE [http-8888-Processor5] TapestryServlet
<<< service(ServletRequest, ServletResponse)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]