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/08 01:02:04 UTC
svn commit: r1443801 - in /myfaces/core/branches/2.2.x/impl/src/test:
java/org/apache/myfaces/config/impl/digister/
resources/org/apache/myfaces/config/impl/digister/
resources/org/apache/myfaces/view/facelets/tag/jsf/html/
Author: lu4242
Date: Fri Feb 8 00:02:04 2013
New Revision: 1443801
URL: http://svn.apache.org/r1443801
Log:
MYFACES-3691 Implement Faces Flows (faces-config.xml support)
Added:
myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/config/impl/digister/faces-flow.xml
- copied, changed from r1441198, myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/config/impl/digister/ordering-config.xml
myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/jsf/html/testHtmlPassthrough1.xhtml
- copied, changed from r1433611, myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/jsf/html/testOutputLabelEscape.xhtml
Modified:
myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/config/impl/digister/DigesterFacesConfigUnmarshallerImplTest.java
Modified: myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/config/impl/digister/DigesterFacesConfigUnmarshallerImplTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/config/impl/digister/DigesterFacesConfigUnmarshallerImplTest.java?rev=1443801&r1=1443800&r2=1443801&view=diff
==============================================================================
--- myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/config/impl/digister/DigesterFacesConfigUnmarshallerImplTest.java (original)
+++ myfaces/core/branches/2.2.x/impl/src/test/java/org/apache/myfaces/config/impl/digister/DigesterFacesConfigUnmarshallerImplTest.java Fri Feb 8 00:02:04 2013
@@ -21,9 +21,19 @@ import junit.framework.TestCase;
import org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl;
import org.apache.myfaces.config.element.Application;
+import org.apache.myfaces.config.element.ContractMapping;
import org.apache.myfaces.config.element.FacesConfig;
import org.apache.myfaces.config.element.FacesConfigNameSlot;
+import org.apache.myfaces.config.element.FacesFlowCall;
+import org.apache.myfaces.config.element.FacesFlowDefinition;
+import org.apache.myfaces.config.element.FacesFlowMethodCall;
+import org.apache.myfaces.config.element.FacesFlowParameter;
+import org.apache.myfaces.config.element.FacesFlowReturn;
+import org.apache.myfaces.config.element.FacesFlowSwitch;
+import org.apache.myfaces.config.element.FacesFlowView;
import org.apache.myfaces.config.element.LocaleConfig;
+import org.apache.myfaces.config.element.NavigationCase;
+import org.apache.myfaces.config.element.NavigationRule;
import org.apache.myfaces.config.element.OrderSlot;
/**
@@ -156,5 +166,103 @@ public class DigesterFacesConfigUnmarsha
assertTrue(cfg.getNavigationRules().isEmpty());
assertTrue(cfg.getRenderKits().isEmpty());
assertTrue(cfg.getValidators().isEmpty());
- }
+ }
+
+ public void testFacesFlowConfig() throws Exception
+ {
+ FacesConfig cfg = _impl.getFacesConfig(getClass().getResourceAsStream(
+ "faces-flow.xml"), "faces-flow.xml");
+
+ assertNotNull(cfg);
+ assertEquals(1, cfg.getFacesFlowDefinitions().size());
+ FacesFlowDefinition facesFlowDefinition = cfg.getFacesFlowDefinitions().get(0);
+
+ assertEquals("flow1", facesFlowDefinition.getId());
+ assertEquals("node1", facesFlowDefinition.getStartNode());
+ assertEquals("#{flowBean.init}", facesFlowDefinition.getInitializer());
+ assertEquals("#{flowBean.finalize}", facesFlowDefinition.getFinalizer());
+
+ //view
+ assertEquals(1, facesFlowDefinition.getViewList().size());
+ FacesFlowView facesFlowView = facesFlowDefinition.getViewList().get(0);
+ assertEquals("outcome2", facesFlowView.getId());
+ assertEquals("outcome-to-2.xhtml", facesFlowView.getVdlDocument());
+
+ //switch
+ assertEquals(1, facesFlowDefinition.getSwitchList().size());
+ FacesFlowSwitch facesFlowSwitch = facesFlowDefinition.getSwitchList().get(0);
+ assertEquals("switch1", facesFlowSwitch.getId());
+ assertEquals("outcome2", facesFlowSwitch.getDefaultOutcome().getFromOutcome());
+ NavigationCase swNavigationCase = facesFlowSwitch.getNavigationCaseList().get(0);
+ assertEquals("#{flowBean.token > 0}", swNavigationCase.getIf());
+ assertEquals("outcome2", swNavigationCase.getFromOutcome());
+
+ //flow return
+ assertEquals(1, facesFlowDefinition.getReturnList().size());
+ FacesFlowReturn facesFlowReturn = facesFlowDefinition.getReturnList().get(0);
+ assertEquals("flowReturn1", facesFlowReturn.getId());
+ assertEquals("/outcome1", facesFlowReturn.getNavigationCase().getFromOutcome());
+
+ //navigation rule
+ assertEquals(1, facesFlowDefinition.getNavigationRuleList().size());
+ NavigationRule navigationRule = facesFlowDefinition.getNavigationRuleList().get(0);
+ assertEquals("/x.xhtml", navigationRule.getFromViewId());
+ assertEquals(1, navigationRule.getNavigationCases().size());
+ NavigationCase navigationCase = navigationRule.getNavigationCases().get(0);
+ assertEquals("go", navigationCase.getFromOutcome());
+ assertEquals("#{test.true}", navigationCase.getIf());
+ assertEquals("/y.xhtml", navigationCase.getToViewId());
+
+ //flow call
+ assertEquals(1, facesFlowDefinition.getFlowCallList().size());
+ FacesFlowCall facesFlowCall = facesFlowDefinition.getFlowCallList().get(0);
+ assertEquals("flowCall", facesFlowCall.getId());
+ assertEquals("flow2", facesFlowCall.getCalledFlowId());
+ assertEquals(1, facesFlowCall.getOutboundParameterList().size());
+ FacesFlowParameter facesFlowOutboundParameter = facesFlowCall.getOutboundParameterList().get(0);
+ assertEquals("name1", facesFlowOutboundParameter.getName());
+ assertEquals("value1", facesFlowOutboundParameter.getValue());
+
+ //method call
+ assertEquals(1, facesFlowDefinition.getMethodCallList().size());
+ FacesFlowMethodCall facesFlowMethodCall = facesFlowDefinition.getMethodCallList().get(0);
+ assertEquals("method1", facesFlowMethodCall.getId());
+ assertEquals("#{flowBean.doSomething}", facesFlowMethodCall.getMethod());
+ assertEquals("outcome2", facesFlowMethodCall.getDefaultOutcome());
+
+ //inbound param
+ assertEquals(1, facesFlowDefinition.getInboundParameterList().size());
+ FacesFlowParameter facesFlowParameter = facesFlowDefinition.getInboundParameterList().get(0);
+ assertEquals("name1", facesFlowParameter.getName());
+ assertEquals("value1", facesFlowParameter.getValue());
+ }
+
+ public void testCsrf() throws Exception
+ {
+ FacesConfig cfg = _impl.getFacesConfig(getClass().getResourceAsStream(
+ "csrf-and-contracts.xml"), "csrf-and-contracts.xml");
+
+ assertNotNull(cfg);
+ assertEquals(2, cfg.getProtectedViewsUrlPatternList().size());
+ assertEquals("/files/*.xhtml", cfg.getProtectedViewsUrlPatternList().get(0));
+ assertEquals("/files2/*.xhtml", cfg.getProtectedViewsUrlPatternList().get(1));
+
+
+ }
+
+ public void testContracts() throws Exception
+ {
+ FacesConfig cfg = _impl.getFacesConfig(getClass().getResourceAsStream(
+ "csrf-and-contracts.xml"), "csrf-and-contracts.xml");
+
+ assertNotNull(cfg);
+
+ Application app = cfg.getApplications().get(0);
+ assertNotNull(app);
+ assertEquals(1, app.getResourceLibraryContractMappings().size());
+
+ ContractMapping mapping = app.getResourceLibraryContractMappings().get(0);
+ assertEquals("/files/*.xhtml", mapping.getUrlPattern());
+ assertEquals("contractA contractB", mapping.getContracts());
+ }
}
Copied: myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/config/impl/digister/faces-flow.xml (from r1441198, myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/config/impl/digister/ordering-config.xml)
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/config/impl/digister/faces-flow.xml?p2=myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/config/impl/digister/faces-flow.xml&p1=myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/config/impl/digister/ordering-config.xml&r1=1441198&r2=1443801&rev=1443801&view=diff
==============================================================================
--- myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/config/impl/digister/ordering-config.xml (original)
+++ myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/config/impl/digister/faces-flow.xml Fri Feb 8 00:02:04 2013
@@ -19,15 +19,51 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
- <name>a</name>
- <ordering>
- <after>
- <name>d</name>
- </after>
- <before>
- <name>b</name>
- <name>c</name>
- <others/>
- </before>
- </ordering>
+ <faces-flow-definition id="flow1">
+ <start-node>node1</start-node>
+ <view id="outcome2">
+ <vdl-document>outcome-to-2.xhtml</vdl-document>
+ </view>
+ <switch id="switch1">
+ <navigation-case>
+ <if>#{flowBean.token > 0}</if>
+ <from-outcome>outcome2</from-outcome>
+ </navigation-case>
+ <default-outcome>
+ <from-outcome>outcome2</from-outcome>
+ </default-outcome>
+ </switch>
+ <flow-return id="flowReturn1">
+ <navigation-case>
+ <from-outcome>/outcome1</from-outcome>
+ </navigation-case>
+ </flow-return>
+ <navigation-rule>
+ <from-view-id>/x.xhtml</from-view-id>
+ <navigation-case>
+ <from-outcome>go</from-outcome>
+ <if>#{test.true}</if>
+ <to-view-id>/y.xhtml</to-view-id>
+ </navigation-case>
+ </navigation-rule>
+ <flow-call id="flowCall">
+ <faces-flow-reference>
+ <faces-flow-id>flow2</faces-flow-id>
+ </faces-flow-reference>
+ <outbound-parameter>
+ <name>name1</name>
+ <value>value1</value>
+ </outbound-parameter>
+ </flow-call>
+ <method-call>
+ <method id="method1">#{flowBean.doSomething}</method>
+ <default-outcome>outcome2</default-outcome>
+ </method-call>
+ <initializer>#{flowBean.init}</initializer>
+ <finalizer>#{flowBean.finalize}</finalizer>
+ <inbound-parameter>
+ <name>name1</name>
+ <value>value1</value>
+ </inbound-parameter>
+ </faces-flow-definition>
</faces-config>
Copied: myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/jsf/html/testHtmlPassthrough1.xhtml (from r1433611, myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/jsf/html/testOutputLabelEscape.xhtml)
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/jsf/html/testHtmlPassthrough1.xhtml?p2=myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/jsf/html/testHtmlPassthrough1.xhtml&p1=myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/jsf/html/testOutputLabelEscape.xhtml&r1=1433611&r2=1443801&rev=1443801&view=diff
==============================================================================
--- myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/jsf/html/testOutputLabelEscape.xhtml (original)
+++ myfaces/core/branches/2.2.x/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/jsf/html/testHtmlPassthrough1.xhtml Fri Feb 8 00:02:04 2013
@@ -16,13 +16,13 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core">
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:jsf="http://java.sun.com/jsf">
<head>
</head>
-<body>
-<h:panelGroup id="testGroup1">
-<h:outputText id="testOut"/>
-<h:outputLabel id="testLabel" for="testOut" value="&foo"/>
-</h:panelGroup>
+<body jsf:id="idBody">
+ <form jsf:id="myForm">
+ <button jsf:id="submit" jsf:action="#{test.testAction}"/>
+ </form>
</body>
</html>
\ No newline at end of file