Aha!  ... because the action paths are /name - and that just gets 
slapped on the end of the path!

Bah - I get it now <emote:smackHead/> It goes 
http://<host:port><prefix><action>

Ok ... so there's actually a lot of utility there.  How's the rest of my 
reasoning about selecting applications?  My mail is being kind of odd 
today and I don't see several messages showing up that I sent... not 
just to this list - sorry for anything that seems odd :-)

Why do we even need to lookup the prefix?  That seems error-prone, at 
best.  Yeah, ok, maybe we should check to be sure that what we arrive at 
for a prefix is valid, and ... throw an exception if it isn't.  I think 
we should select the application differently.  What I would like to do is:

    - get the index of "/" (beyond the first one)
        - if it's not there, this is the default sub-application
        - if it's there, get the substring from the initial "/" - up to, 
but excluding, the final "/"
            - lookup this substring in the prefix array (exact match)
                - if it is present, we choose that sub-application
                - if it is not present, we assume the default 
sub-application or throw an exception

This way, we always default to the ... default ... sub-application.  So, 
if someone had a "/" in the querystring (for whatever reason), we would 
fail to find a match with our declared prefixes.  The default 
sub-application would be selected.  Say we manage to get a match - that 
sub-application would be selected.  Also, we have just (greatly) 
increased the namespace for possible sub-applications - compared to what 
it is right now.

How does that sound?  If I should throw an exception, rather than 
default to the ... I don't like saying default for the sub-app name ... 
rather than selecting the default sub-app, what would it be?  An 
unavailable exception wouldn't be appropriate at this point, I don't 
think.  Am I wrong?  I'm open to suggestions :-)  Does this sound like 
something you'd accept a patch for?

Martin Cooper wrote:

>The empty prefix for the default module is the source of backwards
>compatibility with Struts 1.0 apps. If you take a 1.0 app and drop it into
>1.1, it "just works" because it becomes the default module, with no defined
>prefix.
>
>Again, assuming you're working on the hierarchical thing, what I did (for a
>variety of reasons) was have a (very small) number of special cases, in my
>code that overrides Struts code, where it maps from empty prefix to
>"common". Then the rest of my code doesn't have to care much about whether
>or not there's really a prefix.
>
>--
>Martin Cooper
>

-- 
Eddie Bush




--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to