On 26 Feb 2002 at 19:46, Ovidiu Predescu wrote:
> On Tue, 26 Feb 2002 19:07:20 +0300, "Piroumian, Konstantin"
> > ...
> > Yes, that's true. We've been using actions to interact with the flow
> > controller. So, why do we need another language to describe the flow? Why not
> > Java?
>
> Because Java doesn't have support for continuations.
>
Actually, it is possible to program flow directly in Java using
Continuation Passing Style.
Having continuation interface:
public interface Continuation {
public Continuation continue(
PageSender sender, Map objectModel, SourceResolver resolver, URLEncoder
encoder)
throws ProcessingException, SAXException, IOException;
}
and engine that maps continuation ids to continuation objects, one can express
flow as:
public class GuessFlow implements Continuation {
protected Continuation continue(
PageSender sender, Map objectModel, SourceResolver resolver)
throws ProcessingException, SAXException, IOException
{
final int secret = 678;
sender.sendPage("guessNumberForm.xml")
return new Continuation() {
public Continuation continue(
PageSender sender, Map objectModel, SourceResolver resolver)
throws ProcessingException, SAXException, IOException
{
int guess =
Integer.parseInt(
((Request) objectModel.get(Constants.REQUEST_OBJECT))
.getParameter("guess"));
while(secret!=guess) {
if(secret>guess)
sender.sendPage("guessGreaterNumberForm.xml");
else
sender.sendPage("guessLowerNumberForm.xml");
return this;
}
sender.sendPage("ok.xml")
return null;
}
};
}
}
Hope example is self-explaining.
While flow written this way is not as elegant as flow written in scheme, it may
be implemented in pure java.
Maciek Kaminski
[EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]