Hi all,

Trying to understand some more flow internals...

I just checked the FOM_Cocoon.java on how it handles the redirects...

and this seems to be the relevant portion:

String redUri = uri;
if(! uri.startsWith( "cocoon://" ) ) {
    redUri = "cocoon://" + this.environment.getURIPrefix() + uri;
}

where I assume the variable uri is holding what
sendPage()/sendPageAndWait() got as a first argument?



Some careful questions (only valid if my current assumptions are
correct)

1/ do we explicitely want to prohibit the usage of ANY valid uri
to redirect to?

I guess that http://whatever-uri should be able to work as well,
no?  Maybe we should just be checking for the presence of a
'scheme' part in the URI?
(and even if we don't want to have client-side-redirect uri's
ripple through then we should at least check and warn accordingly?)



2/ when selecting a sitemap-pipeline do we explicitely want to
have everything resolved versus the top level sitemap?

if we would just append 'cocoon:/' (ONE slash) then the
flow-writer can control if he wants to select relative to the
current sitemap or relative to the root sitemap (by letting his
uri start with a '/' or not)

sendPageAndWait('localmap/uri-part');
    --> cocoon:/localmap/uri-part
sendPageAndWait('/topmap/whatever);
    --> cocoon://topmap/whatever



3/ is this behaviour a general property of 'flow' or is it specific to how the JSInterpreter handles things?

personally I think we can tackle this on the level of the
AbstractInterpreter so this line of thinking becomes available to all flow implementations?






if all 3 comments make sense the following could become the new
implementation of AbstractInterpreter.forwardTo() (and we could offload the burdon from the current implementations)




import org.apache.excalibur.source.SourceUtil;


public void forwardTo(String uri, Object bizData, WebContinuation continuation, Environment environment) throws Exception { if (SourceUtil.indexOfSchemeColon(uri) == -1) { uri = "cocoon:/" + uri; }

      Map objectModel = environment.getObjectModel();
      FlowHelper.setContextObject(objectModel, bizData);
      FlowHelper.setWebContinuation(objectModel, continuation);
      PipelinesNode.getRedirector(environment)
                   .redirect(false, uri);
}



what do others think?

regards,
-marc=
--
Marc Portier                            http://outerthought.org/
Outerthought - Open Source, Java & XML Competence Support Center
Read my weblog at              http://radio.weblogs.com/0116284/
[EMAIL PROTECTED]                              [EMAIL PROTECTED]





Reply via email to