users@javaserverfaces-spec-public.java.net

[jsr344-experts mirror] [jsr344-experts] Re: PRD Review and pending issues ( FlowBuilder vs <faces-flow-definition> )

From: Leonardo Uribe <lu4242_at_gmail.com>
Date: Thu, 7 Feb 2013 13:07:52 -0500

Hi

2013/2/7 Edward Burns <edward.burns_at_oracle.com>:
>>>>>> On Wed, 6 Feb 2013 22:12:29 -0500, Leonardo Uribe <lu4242_at_gmail.com> said:
>
> LU> Hi
> LU> In theory, when the user defines a flow, what's possible using
> LU> <faces-flow-definition> should be possible using FlowBuilder
> LU> syntax.
>
> LU> Checking in deep this part, I notice that <faces-flow-definition>
> LU> allow define <navigation-rule> nodes but FlowBuilder does
> LU> not have a proper builder for that.
>
> Yes, you're right, we do need that. I've been getting by without it
> using implicit navigation rules, but you're right, we need it.
>
> I'll add it.
>

Thanks Ed.

I think I have found another small bug, but I suppose it is because
that part is a work in progress (not present in PRD, but it is there
in the latest snapshot).

javax.faces.flow.MethodCallNode has these methods:

public abstract javax.el.MethodExpression getMethodExpression()
public abstract javax.el.ValueExpression getOutcome()
public abstract java.util.List<Parameter> getParameters()

javax.faces.flow.builder.MethodCallBuilder has these methods:

public abstract MethodCallBuilder expression(javax.el.MethodExpression me)
public abstract MethodCallBuilder expression(java.lang.String methodExpression)
public abstract MethodCallBuilder expression(java.lang.String methodExpression,
                                             java.lang.Class[] paramTypes)
public abstract MethodCallBuilder parameters(java.util.List<Parameter>
parameters)
public abstract MethodCallBuilder defaultOutcome(java.lang.String outcome)
public abstract MethodCallBuilder
defaultOutcome(javax.el.ValueExpression outcome)
public abstract MethodCallBuilder markAsStartNode()

But when using faces-config.xml notation it looks like this:

<flow-definition>
    <method-call>
        <method>#{someBean.someMethod}</method>
        <default-outcome>somePlace<default-outcome>
        <parameter>#{takeitFromSomePlaceUsingEL}</parameter>
        <parameter>#{takeitFromSomePlaceUsingEL}</parameter>
    </method-call>
</flow-definition>

That's the idea, but the problem is the xml notation should provide
a way to define the method signature.

The problem is faces-config-flow-definition-flow-call-parameterType
has this structure:

<javaee:class> javaee:string </javaee:class> [0..1] ?
<javaee:value> javaee:faces-config-flow-definition-parameter-valueType
</javaee:value> [1] ?

it should be (I'm guessing here):

<javaee:name> javaee:string </javaee:name> [0..1] ?
<javaee:value> javaee:faces-config-flow-definition-parameter-valueType
</javaee:value> [1] ?

regards

Leonardo Uribe

> Ed
>
>
> --