Go ahead and check this in.
M
Cameron Braid wrote:
I have madea patch to the servlet dispatcher to allow for extensability :
the methods that can be overriden are
protected void sendError(HttpServletRequest request, HttpServletResponse response, int code, Exception e) protected Map getParameterMap(HttpServletRequest request) protected Map getSessionMap(HttpServletRequest request) protected Map getApplicationMap() protected String getActionName(HttpServletRequest request) protected String getNameSpace(HttpServletRequest request)
this will allow for the core logic in the service method to be re-used from custom servlet based dispatchers, allowing a custom URL and parameter mapping scheme to be implemented.
Pat / Jason / Others : do we want to include the CoolUriServletDispatcher in the core ?
If so, I will modify it to extend the new ServletDispatcher.
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jerome BERNARD
Sent: Tuesday, 30 September 2003 4:06 AM
To: [EMAIL PROTECTED]
Subject: Re: [OS-webwork] Advanced URL mapping?
Hum... I should have a closer look at IDEA then :-) Jérôme.
Cameron Braid wrote:
What IDE do you use ?
Eclispe can automatically create delegator calls for you,
which makes
tasks like that a piece of cake.
Cam
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Jerome BERNARD
Sent: Monday, 29 September 2003 7:26 PM
To: [EMAIL PROTECTED]
Subject: Re: [OS-webwork] Advanced URL mapping?
Cameron Braid wrote:
Cool idea :)
Though, for the implementaion, wouldn't you have been better
to use the
wrapper pattern, rather than dynamic proxies :)
Sure. I thought about it, but it's quite painful: you have to
override so many methods :-(
I'll do it tomorrow and update the attachment in the JIRA issue.
Jérôme.
Cam
-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jérôme BERNARD Sent: Tuesday, 30 September 2003 1:30 AM To: [EMAIL PROTECTED] Subject: RE: [OS-webwork] Advanced URL mapping?
I have created a new issue in JIRA
(http://jira.opensymphony.com/secure/ViewIssue.jspa?key=WW-326
) and submitted a new servlet that extends ServletDispatcher
and provides such a functionality. I also provided a way to shorten even more the URL by assuming that if the first parameter name is not specified then it is supposed to be the name of the action.
This allows to replace the following URL http://myhost.com/article/article/123
with this URL http://myhost.com/article/123.
Any code review welcomed! :-p
Jérôme.
Robert Douglass <[EMAIL PROTECTED]>:
I think this is the relevant code, from org.apache.turbine.util.parser.DefaultParameterParser. As I
understand
it, Turbine folks avoid URLs like foo/bar?id=1812 in favor of foo/bar/id/1812. I've never used this, and I can't remember
right off
exactly how the servlet container knows which part is the
path info,
but essentially, they assume that the path info follows
the pattern
name_1/value_1/...name_n/value_n. The advantage is
supposed to be
search-engine friendly URLs from completely dynamic
applications. This
gets touted by the Turbine community as a great feature
(and it may
be). I'd love to have this available, but as you can see
below, it is
easy enough to implement that anyone can do it as soon
as they want
it. I don't really need it at the moment, so I'll let
someone else do
it.
-Robert
// Also cache any pathinfo variables that are passed around as
// if they are query string data.
try
{
StringTokenizer st =
new
StringTokenizer(request.getPathInfo(), "/");
boolean isNameTok = true;
String pathPart = null;
while (st.hasMoreTokens())
{
if (isNameTok)
{
tmp =
java.net.URLDecoder.decode(st.nextToken());
isNameTok = false;
}
else
{
pathPart =
java.net.URLDecoder.decode(st.nextToken());
if (tmp.length() > 0)
{
add(convert(tmp), pathPart); //R.D.
this add
the params to their internal param implementation, see below*
}
isNameTok = true;
}
}
}
catch (Exception e)
{
// If anything goes wrong above, don't worry about it.
// Chances are that the path info was wrong
anyways and
// things that depend on it being right will
fail later
// and should be caught later. }
* from super-class BaseValueParser
/**
* Random access storage for parameter data. The keys
must always be
* Strings. The values will be arrays of Strings. */ private Map parameters = new HashMap();
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]
Behalf Of
Jerome BERNARD Sent: Sunday, September 28, 2003 9:51 PM To: [EMAIL PROTECTED] Subject: Re: [OS-webwork] Advanced URL mapping?
Could you give some insights about the way Turbine
handle URLs? Any
pointers?
Jérôme.
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf _______________________________________________
Opensymphony-webwork mailing list [EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork
------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Opensymphony-webwork mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork
------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Opensymphony-webwork mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork