You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2013/02/09 02:18:37 UTC
svn commit: r1444308 - in /myfaces/core/branches/2.2.x/impl/src:
main/java/org/apache/myfaces/flow/ main/java/org/apache/myfaces/flow/builder/
test/java/org/apache/myfaces/flow/
Author: lu4242
Date: Sat Feb 9 01:18:36 2013
New Revision: 1444308
URL: http://svn.apache.org/r1444308
Log:
MYFACES-3691 Implement Faces Flows (FlowBuilder support)
Added:
myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/flow/ (with props)
myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/flow/FlowBuilderTestCase.java (with props)
Modified:
myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/FlowCallNodeImpl.java
myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/SwitchCaseImpl.java
myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/FlowBuilderImpl.java
myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/FlowCallBuilderImpl.java
myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/MethodCallBuilderImpl.java
myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/SwitchBuilderImpl.java
myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/SwitchCaseBuilderImpl.java
Modified: myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/FlowCallNodeImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/FlowCallNodeImpl.java?rev=1444308&r1=1444307&r2=1444308&view=diff
==============================================================================
--- myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/FlowCallNodeImpl.java (original)
+++ myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/FlowCallNodeImpl.java Sat Feb 9 01:18:36 2013
@@ -21,6 +21,7 @@ package org.apache.myfaces.flow;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import javax.el.ValueExpression;
import javax.faces.context.FacesContext;
import javax.faces.flow.FlowCallNode;
import javax.faces.flow.Parameter;
@@ -34,7 +35,9 @@ public class FlowCallNodeImpl extends Fl
{
private String _id;
private String _calledFlowId;
+ private ValueExpression _calledFlowIdEL;
private String _calledFlowDocumentId;
+ private ValueExpression _calledFlowDocumentIdEL;
private Map<String, Parameter> _outboundParametersMap;
private Map<String, Parameter>_unmodifiableOutboundParametersMap;
@@ -63,12 +66,20 @@ public class FlowCallNodeImpl extends Fl
@Override
public String getCalledFlowDocumentId(FacesContext context)
{
+ if (_calledFlowDocumentIdEL != null)
+ {
+ return (String) _calledFlowDocumentIdEL.getValue(context.getELContext());
+ }
return _calledFlowDocumentId;
}
@Override
public String getCalledFlowId(FacesContext context)
{
+ if (_calledFlowIdEL != null)
+ {
+ return (String) _calledFlowIdEL.getValue(context.getELContext());
+ }
return _calledFlowId;
}
@@ -88,12 +99,14 @@ public class FlowCallNodeImpl extends Fl
{
checkInitialized();
this._calledFlowId = calledFlowId;
+ this._calledFlowIdEL = null;
}
public void setCalledFlowDocumentId(String calledFlowDocumentId)
{
checkInitialized();
this._calledFlowDocumentId = calledFlowDocumentId;
+ this._calledFlowDocumentIdEL = null;
}
public void freeze()
@@ -116,4 +129,22 @@ public class FlowCallNodeImpl extends Fl
throw new IllegalStateException("Flow is inmutable once initialized");
}
}
+
+ /**
+ * @param calledFlowIdEL the _calledFlowIdEL to set
+ */
+ public void setCalledFlowId(ValueExpression calledFlowIdEL)
+ {
+ this._calledFlowIdEL = calledFlowIdEL;
+ this._calledFlowId = null;
+ }
+
+ /**
+ * @param calledFlowDocumentIdEL the _calledFlowDocumentIdEL to set
+ */
+ public void setCalledFlowDocumentId(ValueExpression calledFlowDocumentIdEL)
+ {
+ this._calledFlowDocumentIdEL = calledFlowDocumentIdEL;
+ this._calledFlowDocumentId = null;
+ }
}
Modified: myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/SwitchCaseImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/SwitchCaseImpl.java?rev=1444308&r1=1444307&r2=1444308&view=diff
==============================================================================
--- myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/SwitchCaseImpl.java (original)
+++ myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/SwitchCaseImpl.java Sat Feb 9 01:18:36 2013
@@ -45,7 +45,7 @@ public class SwitchCaseImpl extends Swit
@Override
public Boolean getCondition(FacesContext context)
{
- if (_condition != null)
+ if (_conditionEL != null)
{
Object value = _conditionEL.getValue(context.getELContext());
if (value instanceof String)
Modified: myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/FlowBuilderImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/FlowBuilderImpl.java?rev=1444308&r1=1444307&r2=1444308&view=diff
==============================================================================
--- myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/FlowBuilderImpl.java (original)
+++ myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/FlowBuilderImpl.java Sat Feb 9 01:18:36 2013
@@ -104,10 +104,7 @@ public class FlowBuilderImpl extends Flo
@Override
public FlowBuilder initializer(String methodExpression)
{
- FacesContext facesContext = getFacesContext();
- _facesFlow.setInitializer(
- getFacesContext().getApplication().getExpressionFactory().createMethodExpression(
- facesContext.getELContext(), methodExpression, null, EMPTY_PARAMS));
+ _facesFlow.setInitializer(createMethodExpression(methodExpression));
return this;
}
@@ -121,10 +118,7 @@ public class FlowBuilderImpl extends Flo
@Override
public FlowBuilder finalizer(String methodExpression)
{
- FacesContext facesContext = getFacesContext();
- _facesFlow.setFinalizer(
- facesContext.getApplication().getExpressionFactory().createMethodExpression(
- facesContext.getELContext(), methodExpression, null, EMPTY_PARAMS));
+ _facesFlow.setFinalizer(createMethodExpression(methodExpression));
return this;
}
@@ -138,10 +132,8 @@ public class FlowBuilderImpl extends Flo
@Override
public FlowBuilder inboundParameter(String name, String value)
{
- FacesContext facesContext = getFacesContext();
_facesFlow.putInboundParameter(name, new ParameterImpl(name,
- facesContext.getApplication().getExpressionFactory()
- .createValueExpression(facesContext.getELContext(), value, Object.class)));
+ createValueExpression(value)));
return this;
}
Modified: myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/FlowCallBuilderImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/FlowCallBuilderImpl.java?rev=1444308&r1=1444307&r2=1444308&view=diff
==============================================================================
--- myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/FlowCallBuilderImpl.java (original)
+++ myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/FlowCallBuilderImpl.java Sat Feb 9 01:18:36 2013
@@ -23,6 +23,7 @@ import javax.faces.flow.builder.FlowCall
import org.apache.myfaces.flow.FlowCallNodeImpl;
import org.apache.myfaces.flow.FlowImpl;
import org.apache.myfaces.flow.ParameterImpl;
+import org.apache.myfaces.view.facelets.el.ELText;
/**
*
@@ -46,8 +47,22 @@ public class FlowCallBuilderImpl extends
@Override
public FlowCallBuilder flowReference(String flowDocumentId, String flowId)
{
- this._flowCallNode.setCalledFlowDocumentId(flowDocumentId);
- this._flowCallNode.setCalledFlowId(flowId);
+ if (ELText.isLiteral(flowDocumentId))
+ {
+ this._flowCallNode.setCalledFlowDocumentId(flowDocumentId);
+ }
+ else
+ {
+ this._flowCallNode.setCalledFlowDocumentId(_flowBuilder.createValueExpression(flowDocumentId));
+ }
+ if (ELText.isLiteral(flowId))
+ {
+ this._flowCallNode.setCalledFlowId(flowId);
+ }
+ else
+ {
+ this._flowCallNode.setCalledFlowId(_flowBuilder.createValueExpression(flowId));
+ }
return this;
}
Modified: myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/MethodCallBuilderImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/MethodCallBuilderImpl.java?rev=1444308&r1=1444307&r2=1444308&view=diff
==============================================================================
--- myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/MethodCallBuilderImpl.java (original)
+++ myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/MethodCallBuilderImpl.java Sat Feb 9 01:18:36 2013
@@ -39,6 +39,7 @@ public class MethodCallBuilderImpl exten
public MethodCallBuilderImpl(FlowBuilderImpl flowBuilder, FlowImpl facesFlow, String methodCallNodeId)
{
+ this._flowBuilder = flowBuilder;
this._facesFlow = facesFlow;
this._methodCallNode = new MethodCallNodeImpl(methodCallNodeId);
this._facesFlow.addMethodCall(_methodCallNode);
Modified: myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/SwitchBuilderImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/SwitchBuilderImpl.java?rev=1444308&r1=1444307&r2=1444308&view=diff
==============================================================================
--- myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/SwitchBuilderImpl.java (original)
+++ myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/SwitchBuilderImpl.java Sat Feb 9 01:18:36 2013
@@ -23,6 +23,7 @@ import javax.faces.flow.builder.SwitchBu
import javax.faces.flow.builder.SwitchCaseBuilder;
import org.apache.myfaces.flow.FlowImpl;
import org.apache.myfaces.flow.SwitchNodeImpl;
+import org.apache.myfaces.view.facelets.el.ELText;
/**
*
@@ -42,20 +43,27 @@ public class SwitchBuilderImpl extends S
this._facesFlow = facesFlow;
this._switchNodeImpl = new SwitchNodeImpl(switchNodeId);
this._facesFlow.putSwitch(switchNodeId, _switchNodeImpl);
+ this._lastSwitchCaseBuilderImpl = new SwitchCaseBuilderImpl(
+ this._flowBuilder, this._facesFlow, this, this._switchNodeImpl);
}
@Override
public SwitchCaseBuilder switchCase()
{
- this._lastSwitchCaseBuilderImpl = new SwitchCaseBuilderImpl(
- this._flowBuilder, this._facesFlow, this, this._switchNodeImpl);
return this._lastSwitchCaseBuilderImpl.switchCase();
}
@Override
public SwitchCaseBuilder defaultOutcome(String outcome)
{
- this._switchNodeImpl.setDefaultOutcome(outcome);
+ if (ELText.isLiteral(outcome))
+ {
+ this._switchNodeImpl.setDefaultOutcome(outcome);
+ }
+ else
+ {
+ this._switchNodeImpl.setDefaultOutcome(_flowBuilder.createValueExpression(outcome));
+ }
return _lastSwitchCaseBuilderImpl;
}
Modified: myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/SwitchCaseBuilderImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/SwitchCaseBuilderImpl.java?rev=1444308&r1=1444307&r2=1444308&view=diff
==============================================================================
--- myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/SwitchCaseBuilderImpl.java (original)
+++ myfaces/core/branches/2.2.x/impl/src/main/java/org/apache/myfaces/flow/builder/SwitchCaseBuilderImpl.java Sat Feb 9 01:18:36 2013
@@ -23,6 +23,7 @@ import javax.faces.flow.builder.SwitchCa
import org.apache.myfaces.flow.FlowImpl;
import org.apache.myfaces.flow.SwitchCaseImpl;
import org.apache.myfaces.flow.SwitchNodeImpl;
+import org.apache.myfaces.view.facelets.el.ELText;
/**
*
@@ -44,13 +45,20 @@ public class SwitchCaseBuilderImpl exten
this._facesFlow = facesFlow;
this._switchBuilderImpl = switchBuilderImpl;
this._switchNodeImpl = switchNode;
- this._switchCase = new SwitchCaseImpl();
+ this._switchCase = null;
}
@Override
public SwitchCaseBuilder condition(String expression)
{
- this._switchCase.setCondition(Boolean.valueOf(expression));
+ if (ELText.isLiteral(expression))
+ {
+ this._switchCase.setCondition(Boolean.valueOf(expression));
+ }
+ else
+ {
+ this._switchCase.setCondition(_flowBuilder.createValueExpression(expression));
+ }
return this;
}
@@ -71,6 +79,7 @@ public class SwitchCaseBuilderImpl exten
@Override
public SwitchCaseBuilder switchCase()
{
+ this._switchCase = new SwitchCaseImpl();
this._switchNodeImpl.addCase(this._switchCase);
return this;
}
Propchange: myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/flow/
------------------------------------------------------------------------------
bugtraq:number = true
Added: myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/flow/FlowBuilderTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/flow/FlowBuilderTestCase.java?rev=1444308&view=auto
==============================================================================
--- myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/flow/FlowBuilderTestCase.java (added)
+++ myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/flow/FlowBuilderTestCase.java Sat Feb 9 01:18:36 2013
@@ -0,0 +1,230 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.flow;
+
+import javax.faces.context.FacesContext;
+import javax.faces.flow.Flow;
+import javax.faces.flow.FlowCallNode;
+import javax.faces.flow.MethodCallNode;
+import javax.faces.flow.Parameter;
+import javax.faces.flow.ReturnNode;
+import javax.faces.flow.SwitchCase;
+import javax.faces.flow.SwitchNode;
+import javax.faces.flow.ViewNode;
+import javax.faces.flow.builder.FlowBuilder;
+import javax.faces.flow.builder.SwitchCaseBuilder;
+import org.apache.myfaces.flow.builder.FlowBuilderImpl;
+import org.apache.myfaces.test.base.junit4.AbstractJsfTestCase;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ *
+ * @author lu4242
+ */
+public class FlowBuilderTestCase extends AbstractJsfTestCase
+{
+
+ @Test
+ public void testFlowBuilderSimple()
+ {
+ FlowBuilder flowBuilder = new FlowBuilderImpl();
+ flowBuilder.id("faces-flow1.xhtml", "flow1").
+ initializer("#{bean.init}").finalizer("#{bean.destroy}");
+
+ Flow flow = flowBuilder.getFlow();
+ Assert.assertNotNull(flow);
+ Assert.assertEquals("flow1", flow.getId());
+ Assert.assertEquals("faces-flow1.xhtml", flow.getDefiningDocumentId());
+ Assert.assertEquals("#{bean.init}", flow.getInitializer().getExpressionString());
+ Assert.assertEquals("#{bean.destroy}", flow.getFinalizer().getExpressionString());
+ }
+
+ @Test
+ public void testFlowBuilderReturn()
+ {
+ FlowBuilder flowBuilder = new FlowBuilderImpl();
+ flowBuilder.id("faces-flow1.xhtml", "flow1");
+ flowBuilder.returnNode("returnNode").markAsStartNode().fromOutcome("mynode");
+
+ Flow flow = flowBuilder.getFlow();
+ Assert.assertNotNull(flow);
+ Assert.assertEquals("returnNode", flow.getStartNodeId());
+
+ ReturnNode returnNode = flow.getReturns().get("returnNode");
+ Assert.assertNotNull(returnNode);
+ Assert.assertEquals("returnNode", returnNode.getId());
+ Assert.assertEquals("mynode", returnNode.getFromOutcome(facesContext));
+ }
+
+ @Test
+ public void testFlowBuilderSwitch()
+ {
+ externalContext.getRequestMap().put("bean", new SimpleBean());
+ FlowBuilder flowBuilder = new FlowBuilderImpl();
+ flowBuilder.id("faces-flow1.xhtml", "flow1");
+ SwitchCaseBuilder switchCaseBuilder = flowBuilder.switchNode("switch1")
+ .markAsStartNode().defaultOutcome("#{bean.outcome1}");
+ switchCaseBuilder
+ .switchCase().condition("true").fromOutcome("case1");
+ switchCaseBuilder
+ .switchCase().condition("#{bean.checkCond}").fromOutcome("caseB");
+ switchCaseBuilder
+ .switchCase().condition(
+ application.getExpressionFactory().createValueExpression(Boolean.TRUE, Boolean.class))
+ .fromOutcome("caseC");
+
+ Flow flow = flowBuilder.getFlow();
+ Assert.assertNotNull(flow);
+ Assert.assertEquals("switch1", flow.getStartNodeId());
+
+ SwitchNode switchNode = flow.getSwitches().get("switch1");
+ Assert.assertNotNull(switchNode);
+ Assert.assertEquals("exit", switchNode.getDefaultOutcome(facesContext));
+
+ SwitchCase scn = switchNode.getCases().get(0);
+ Assert.assertTrue(scn.getCondition(facesContext));
+ Assert.assertEquals("case1", scn.getFromOutcome());
+
+ scn = switchNode.getCases().get(1);
+ Assert.assertTrue(scn.getCondition(facesContext));
+ Assert.assertEquals("caseB", scn.getFromOutcome());
+
+ scn = switchNode.getCases().get(2);
+ Assert.assertTrue(scn.getCondition(facesContext));
+ Assert.assertEquals("caseC", scn.getFromOutcome());
+ }
+
+ public static class SimpleBean {
+ public boolean isCheckCond()
+ {
+ return true;
+ }
+ public String getOutcome1()
+ {
+ return "exit";
+ }
+ public String getValue()
+ {
+ return "asdf";
+ }
+ public void check()
+ {
+ }
+ public void checkTo(FacesContext context)
+ {
+ }
+ }
+
+ @Test
+ public void testFlowBuilderView()
+ {
+ FlowBuilder flowBuilder = new FlowBuilderImpl();
+ flowBuilder.id("faces-flow1.xhtml", "flow1");
+ flowBuilder.viewNode("x", "x.xhtml");
+ flowBuilder.viewNode("y", "y.xhtml").markAsStartNode();
+
+ Flow flow = flowBuilder.getFlow();
+ Assert.assertNotNull(flow);
+ Assert.assertEquals("y", flow.getStartNodeId());
+
+ ViewNode viewNode = flow.getViews().get(0);
+ Assert.assertEquals("x", viewNode.getId());
+ Assert.assertEquals("x.xhtml", viewNode.getVdlDocumentId());
+
+ viewNode = flow.getViews().get(1);
+ Assert.assertEquals("y", viewNode.getId());
+ Assert.assertEquals("y.xhtml", viewNode.getVdlDocumentId());
+ }
+
+ @Test
+ public void testFlowBuilderInboundParameter()
+ {
+ externalContext.getRequestMap().put("bean", new SimpleBean());
+ FlowBuilder flowBuilder = new FlowBuilderImpl();
+ flowBuilder.id("faces-flow1.xhtml", "flow1");
+ flowBuilder.inboundParameter("name1", "value1");
+ flowBuilder.inboundParameter("name2", "#{bean.value}");
+ flowBuilder.inboundParameter("name3",
+ application.getExpressionFactory().createValueExpression("value3", String.class));
+
+ Flow flow = flowBuilder.getFlow();
+ Assert.assertNotNull(flow);
+
+ Parameter param = flow.getInboundParameters().get("name1");
+ Assert.assertEquals("name1", param.getName());
+ Assert.assertEquals("value1", param.getValue().getValue(facesContext.getELContext()));
+
+ param = flow.getInboundParameters().get("name2");
+ Assert.assertEquals("name2", param.getName());
+ Assert.assertEquals("asdf", param.getValue().getValue(facesContext.getELContext()));
+
+ param = flow.getInboundParameters().get("name3");
+ Assert.assertEquals("name3", param.getName());
+ Assert.assertEquals("value3", param.getValue().getValue(facesContext.getELContext()));
+ }
+
+ @Test
+ public void testFlowBuilderMethodCall()
+ {
+ FlowBuilder flowBuilder = new FlowBuilderImpl();
+ flowBuilder.id("faces-flow1.xhtml", "flow1");
+ flowBuilder.methodCallNode("method1").expression("#{bean.check}").defaultOutcome("case1").markAsStartNode();
+ flowBuilder.methodCallNode("method2").expression("#{bean.checkTo}",
+ new Class[]{FacesContext.class}).defaultOutcome("case2");
+
+ Flow flow = flowBuilder.getFlow();
+ Assert.assertNotNull(flow);
+ Assert.assertEquals("method1", flow.getStartNodeId());
+
+ MethodCallNode mcn = flow.getMethodCalls().get(0);
+ Assert.assertEquals("method1", mcn.getId());
+ Assert.assertEquals("case1", mcn.getOutcome().getValue(facesContext.getELContext()));
+ Assert.assertEquals("#{bean.check}", mcn.getMethodExpression().getExpressionString());
+
+ mcn = flow.getMethodCalls().get(1);
+ Assert.assertEquals("method2", mcn.getId());
+ Assert.assertEquals("case2", mcn.getOutcome().getValue(facesContext.getELContext()));
+ Assert.assertEquals("#{bean.checkTo}", mcn.getMethodExpression().getExpressionString());
+ }
+
+ @Test
+ public void testFlowBuilderFlowCall()
+ {
+ FlowBuilder flowBuilder = new FlowBuilderImpl();
+ flowBuilder.id("faces-flow1.xhtml", "flow1");
+
+ flowBuilder.flowCallNode("goToFlow2").outboundParameter("name1", "value1").
+ flowReference("faces-flow2.xhtml", "flow2").markAsStartNode();
+
+ Flow flow = flowBuilder.getFlow();
+ Assert.assertNotNull(flow);
+ Assert.assertEquals("goToFlow2", flow.getStartNodeId());
+
+ FlowCallNode flowCallNode = flow.getFlowCalls().get("goToFlow2");
+ Assert.assertNotNull(flowCallNode);
+ Assert.assertEquals("flow2", flowCallNode.getCalledFlowId(facesContext));
+ Assert.assertEquals("faces-flow2.xhtml", flowCallNode.getCalledFlowDocumentId(facesContext));
+
+ Parameter param = flowCallNode.getOutboundParameters().get("name1");
+ Assert.assertEquals("name1", param.getName());
+ Assert.assertEquals("value1", param.getValue().getValue(facesContext.getELContext()));
+ }
+
+}
Propchange: myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/flow/FlowBuilderTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native