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/whatever3/ 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]
