Abstract
We want to move a lot of responsibility that is currently in WASession
and not global to the session (request, response, loadScripts, etc) to
a newly created WAContext object.
Problem
If we have a look of at WASession there is a lot of functionality that
does not belong there. #returnResponse: and #currentRequest are just a
few examples. Additionally we have quite a few bugs [1] [2] [3] [4]
[5] [6] that are hard to fix because we are hitting architecture
limits of Seaside. The most common symptom is that we don't have
information about things like request handlers where we need it.
WAContext Solution
The result of our todays experiments can be found in
Seaside-Core-lr.110. A WAContext object that provides us with all the
contextual information that we need:
- the server, this is important for encoding especially it would allow
us to do URL encoding for non-ASCII characters in a way that works
independently of encoding settings
- the current request
- the current response, for stacking up cookies for example
- a collection of request handlers, important for URL parsing
- subscribers, for events like returning a response or rendering a component
- properties for additional values like load scripts or the anchor name
While delegating the processing requests request handlers would
incrementally add themselves to the collection of request handlers. If
the example of /seaside/tests/alltests two dispatchers, an application
and a session.
Problem with the Solution
Currently used a dynamic variable to store the current context. That
works fine as long as no continuations are involved. Actually the
WAContext is unique to every request and should not be restored when a
continuation is resumed. For a short moment we considered
thread-locals but they again wouldn't work either because
WAProcessMointor creates a new process. The next idea was to use
partial continuations with a boundary that is below the dynamic
variable that points to the current context.
Consequences
- we would lose the terminate functionality
- ports would have to provide partial continuations, this might be a
problem for some platforms whose continuation implementation differs
substantially from Squeak
Does anybody see problems with providing partial continuations on his
platform? Does anybody see a better solution?
[1] http://code.google.com/p/seaside/issues/detail?id=13
[2] http://code.google.com/p/seaside/issues/detail?id=14
[3] http://code.google.com/p/seaside/issues/detail?id=16
[4] http://code.google.com/p/seaside/issues/detail?id=19
[5] http://code.google.com/p/seaside/issues/detail?id=21
[6] http://code.google.com/p/seaside/issues/detail?id=28
Cheers,
Philippe and Lukas
--
Lukas Renggli
http://www.lukas-renggli.ch
Issue 62: Support non-ASCII URLs
http://code.google.com/p/seaside/issues/detail?id=62
New issue report by philippe.marschall:
Beware, spec and reality are two different things:
http://issues.apache.org/bugzilla/show_bug.cgi?id=22666
Also check url-encoded <form>s
Issue attributes:
Status: Accepted
Owner: philippe.marschall
Labels: Version-Seaside2.9 Priority-Medium Type-Feature
--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings
Issue 3: A RESTful configuration editor would be very useful
http://code.google.com/p/seaside/issues/detail?id=3
Comment #13 by philippe.marschall:
Ok, Seaside-Development-Core-pmm.24 sets the handler but displays the
wrong URL after
"Close"
--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings
Issue 3: A RESTful configuration editor would be very useful
http://code.google.com/p/seaside/issues/detail?id=3
Comment #12 by obi068:
Hmmm no, this is not fixed!
There was a problem if you type e.g. /seaside/config/examples/counter
and then use the close button => Exception!
Because in that case the handler instVar is not correct!
--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings
Issue 14: takeParametersFromRequest:
http://code.google.com/p/seaside/issues/detail?id=14
Comment #1 by philippe.marschall:
As far as I can see this has been fixed by Seaside-Core-lr.94.
Seaside-Tests-pmm.113 adds a test and it is green.
Issue attribute updates:
Status: Fixed
--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings
Issue 3: A RESTful configuration editor would be very useful
http://code.google.com/p/seaside/issues/detail?id=3
Comment #11 by philippe.marschall:
It took me a moment to understand what Seaside-Development-Core-obi.22
does. AFAIK it
fixes cases like /seaside/tests. Is that correct?
--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings
Issue 42: The Big Cleanup ™
http://code.google.com/p/seaside/issues/detail?id=42
Comment #8 by philippe.marschall:
- Seaside-Core-pmm.141 does WAApplication >> #sessionCookieFor: with WAUrl
--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings
Issue 42: The Big Cleanup ™
http://code.google.com/p/seaside/issues/detail?id=42
Comment #7 by philippe.marschall:
We still have many senders of #returnResponse that need to be changed:
- WAIframeTag >> #performRendering:
- WASimpleErrorHandler >> #handleError:
- WASessionContinuation >> #respond:
- WASession >> #pageIntentionallyLeftBlank, #redirectTo:, #respond:onAnswer:,
--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings
Issue 60: WAVersionUploader>>newVersion: results in WB
http://code.google.com/p/seaside/issues/detail?id=60
Comment #1 by philippe.marschall:
Name: Seaside-Squeak-Development-pmm.13
Author: pmm
Time: 24 April 2008, 7:14:47 am
UUID: 45549a87-a3f9-40c6-92fd-248391dd5119
Ancestors: Seaside-Squeak-Development-pmm.12
- fixed http://code.google.com/p/seaside/issues/detail?id=60
I hope you were not working on this issue, if yes, sorry for pirating it.
Issue attribute updates:
Status: Fixed
Owner: philippe.marschall
--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings