Skip to content
This repository has been archived by the owner on Sep 5, 2023. It is now read-only.

Make flows reusable #730

Closed
glassfishrobot opened this issue Jan 22, 2010 · 61 comments
Closed

Make flows reusable #730

glassfishrobot opened this issue Jan 22, 2010 · 61 comments

Comments

@glassfishrobot
Copy link

Although you can use several jsf-config files in a single application, essentially
breaking down your application into smaller flows, it's still too hard to create a flow
that's truly reusable across applications in JSF.
The idea here would be to define standalone flows that can be incorporated into
other flows. And to make things truly reusable, these flows should include a
standalone memory scope and a transaction scope. This will let developers
incorporate the flow into encapsulating flows without interfering with the
transaction and memory scope of the encapsulating flow.

Environment

Operating System: All
Platform: All
URL: http://java.sys-con.com/node/535314?page=0,2

Affected Versions

[2.0]

@glassfishrobot
Copy link
Author

Reported by @edburns

@glassfishrobot
Copy link
Author

@glassfishrobot
Copy link
Author

@edburns said:
Definately not 2.0 Rev a

@glassfishrobot
Copy link
Author

@edburns said:
At JAX recently, someone mentioned that there were a lot of good ideas in SpringWebFlow that have not yet
made their way into JSF 2.0. I'm going to ask Jeremy Grelle to jot down some thoughts on this topic as
comments on this issue.

@glassfishrobot
Copy link
Author

@edburns said:
I just spoke to Keith Donald on the phone and requested he fill in some notes here if he felt it necessary
and beneficial.

@glassfishrobot
Copy link
Author

@edburns said:
rogerk

@glassfishrobot
Copy link
Author

rogerk said:
triage

1 similar comment
@glassfishrobot
Copy link
Author

rogerk said:
triage

@glassfishrobot
Copy link
Author

kito75 said:
Related issues:

Support for modular, reusable, fragments of a web application http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-532
Simplify external view loading requirements http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-809
Plugin System http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-970

@glassfishrobot
Copy link
Author

andy_bosch said:
I used Spring Webflow quite a lot in my last projects. As most of the projects where in a Portal environment, we had to struggle with the SWF integration. To be honest, using JSF + SWF in a Portlet is a pain.
IMHO it is very important to define a solutions which is usable in a Portal environment as well.

@glassfishrobot
Copy link
Author

@edburns said:
Snapshot

@glassfishrobot
Copy link
Author

@edburns said:
New style testcase

@glassfishrobot
Copy link
Author

@edburns said:
Sending common/ant/common.xml
Sending common/ant/dependencies.xml
Adding jsf-api/src/main/java/javax/faces/application/FlowScoped.java
Sending jsf-ri/build.xml
Adding jsf-ri/conf/share/javax.enterprise.inject.spi.Extension
Sending jsf-ri/mojarra-jsf-impl.bnd
Adding jsf-ri/src/main/java/com/sun/faces/flow
Adding jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIContext.java
Adding jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIExtension.java
Adding test/agnostic/flow
Adding test/agnostic/flow/basic
Adding test/agnostic/flow/basic/nbactions.xml
Adding test/agnostic/flow/basic/pom.xml
Adding test/agnostic/flow/basic/src
Adding test/agnostic/flow/basic/src/main
Adding test/agnostic/flow/basic/src/main/java
Adding test/agnostic/flow/basic/src/main/java/com
Adding test/agnostic/flow/basic/src/main/java/com/sun
Adding test/agnostic/flow/basic/src/main/java/com/sun/faces
Adding test/agnostic/flow/basic/src/main/java/com/sun/faces/test
Adding test/agnostic/flow/basic/src/main/java/com/sun/faces/test/agnostic
Adding test/agnostic/flow/basic/src/main/java/com/sun/faces/test/agnostic/flow
Adding test/agnostic/flow/basic/src/main/java/com/sun/faces/test/agnostic/flow/basic
Adding test/agnostic/flow/basic/src/main/java/com/sun/faces/test/agnostic/flow/basic/VersionBean.java
Adding test/agnostic/flow/basic/src/main/resources
Adding test/agnostic/flow/basic/src/main/webapp
Adding test/agnostic/flow/basic/src/main/webapp/WEB-INF
Adding test/agnostic/flow/basic/src/main/webapp/WEB-INF/web.xml
Adding test/agnostic/flow/basic/src/main/webapp/index.xhtml
Adding test/agnostic/flow/basic/src/main/webapp/start.xhtml
Adding test/agnostic/flow/basic/src/test
Adding test/agnostic/flow/basic/src/test/java
Adding test/agnostic/flow/basic/src/test/java/com
Adding test/agnostic/flow/basic/src/test/java/com/sun
Adding test/agnostic/flow/basic/src/test/java/com/sun/faces
Adding test/agnostic/flow/basic/src/test/java/com/sun/faces/test
Adding test/agnostic/flow/basic/src/test/java/com/sun/faces/test/agnostic
Adding test/agnostic/flow/basic/src/test/java/com/sun/faces/test/agnostic/flow
Adding test/agnostic/flow/basic/src/test/java/com/sun/faces/test/agnostic/flow/basic
Adding test/agnostic/flow/basic/src/test/java/com/sun/faces/test/agnostic/flow/basic/FlowEntryExitIT.java
Adding test/agnostic/flow/pom.xml
Sending test/agnostic/pom.xml
Sending test/pom.xml
Transmitting file data ..................
Committed revision 9786.

SECTION: API Changes

A jsf-api/src/main/java/javax/faces/application/FlowScoped.java

  • First API change for flows

  • Classes with this annotation attached to them

  • will be considered to be in the scope of the named flow. The implementation

  • must provide an implementation of javax.enterprise.inject.spi.Extension

  • that implements the semantics such that beans with this annotation are created

  • when the user enters into the named flow, and de-allocated when the user exits

  • the named flow.

SECTION: Impl Changes

M jsf-ri/mojarra-jsf-impl.bnd

  • OSGi nonsense to allow us to use CDI.

M jsf-ri/build.xml
A jsf-ri/conf/share/javax.enterprise.inject.spi.Extension
A jsf-ri/src/main/java/com/sun/faces/flow
A jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIExtension.java
A jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIContext.java

  • Declare a CDI Portable Extension. See

http://docs.jboss.org/weld/reference/latest/en-US/html/extend.html#d0e4848

M common/ant/dependencies.xml
M common/ant/common.xml

  • Build nonsense to add CDI to our compile time classpath

M test/agnostic/pom.xml
M test/pom.xml
A test/agnostic/flow
A test/agnostic/flow/basic
A test/agnostic/flow/basic/nbactions.xml
A test/agnostic/flow/basic/src
A test/agnostic/flow/basic/src/test
A test/agnostic/flow/basic/src/test/java
A test/agnostic/flow/basic/src/test/java/com
A test/agnostic/flow/basic/src/test/java/com/sun
A test/agnostic/flow/basic/src/test/java/com/sun/faces
A test/agnostic/flow/basic/src/test/java/com/sun/faces/test
A test/agnostic/flow/basic/src/test/java/com/sun/faces/test/agnostic
A test/agnostic/flow/basic/src/test/java/com/sun/faces/test/agnostic/flow
A test/agnostic/flow/basic/src/test/java/com/sun/faces/test/agnostic/flow/basic
A test/agnostic/flow/basic/src/test/java/com/sun/faces/test/agnostic/flow/basic/FlowEntryExitIT.java
A test/agnostic/flow/basic/src/main
A test/agnostic/flow/basic/src/main/java
A test/agnostic/flow/basic/src/main/java/com
A test/agnostic/flow/basic/src/main/java/com/sun
A test/agnostic/flow/basic/src/main/java/com/sun/faces
A test/agnostic/flow/basic/src/main/java/com/sun/faces/test
A test/agnostic/flow/basic/src/main/java/com/sun/faces/test/agnostic
A test/agnostic/flow/basic/src/main/java/com/sun/faces/test/agnostic/flow
A test/agnostic/flow/basic/src/main/java/com/sun/faces/test/agnostic/flow/basic
A test/agnostic/flow/basic/src/main/java/com/sun/faces/test/agnostic/flow/basic/VersionBean.java
A test/agnostic/flow/basic/src/main/resources
A test/agnostic/flow/basic/src/main/webapp
A test/agnostic/flow/basic/src/main/webapp/index.xhtml
A test/agnostic/flow/basic/src/main/webapp/WEB-INF
A test/agnostic/flow/basic/src/main/webapp/WEB-INF/web.xml
A test/agnostic/flow/basic/src/main/webapp/start.xhtml
A test/agnostic/flow/basic/pom.xml
A test/agnostic/flow/pom.xml

  • My first Manfred style testcase. It works well. Thanks Manfred.

@glassfishrobot
Copy link
Author

@edburns said:
Snapshot, throws UnsupportedOperationException, as expected.

@glassfishrobot
Copy link
Author

File: 20120330-1155-i_spec_730.patch
Attached By: @edburns

@glassfishrobot
Copy link
Author

@edburns said:
Another snapshot, can enter and exit a hard-coded flow.

Sending jsf-api/doc/web-facesconfig_2_2.xsd
Sending jsf-api/src/main/java/javax/faces/application/Application.java
Sending jsf-api/src/main/java/javax/faces/application/ApplicationWrapper.java
Deleting jsf-api/src/main/java/javax/faces/application/FlowScoped.java
Adding jsf-api/src/main/java/javax/faces/flow
Adding jsf-api/src/main/java/javax/faces/flow/Flow.java
Adding jsf-api/src/main/java/javax/faces/flow/FlowHandler.java
Adding jsf-api/src/main/java/javax/faces/flow/FlowScoped.java
Sending jsf-ri/build.xml
Deleting jsf-ri/conf/share/javax.enterprise.inject.spi.Extension
Sending jsf-ri/src/main/java/com/sun/faces/application/ApplicationAssociate.java
Sending jsf-ri/src/main/java/com/sun/faces/application/ApplicationImpl.java
Sending jsf-ri/src/main/java/com/sun/faces/application/NavigationHandlerImpl.java
Sending jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java
Sending jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java
Sending jsf-ri/src/main/java/com/sun/faces/config/WebConfiguration.java
Adding jsf-ri/src/main/java/com/sun/faces/config/processor/FacesFlowDefinitionConfigProcessor.java
Sending jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIContext.java
Deleting jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIExtension.java
Adding jsf-ri/src/main/java/com/sun/faces/flow/FlowHandlerImpl.java
Sending jsf-ri/src/main/java/com/sun/faces/lifecycle/LifecycleFactoryImpl.java
Sending jsf-ri/src/main/java/com/sun/faces/lifecycle/LifecycleImpl.java
Sending jsf-ri/src/main/java/com/sun/faces/util/FacesLogger.java
Sending test/agnostic/flow/basic/pom.xml
Adding test/agnostic/flow/basic/src/main/java/com/acme
Adding test/agnostic/flow/basic/src/main/java/com/acme/FlowCDIExtension.java
Adding test/agnostic/flow/basic/src/main/java/com/sun/faces/test/agnostic/flow/basic/FlowBean.java
Deleting test/agnostic/flow/basic/src/main/java/com/sun/faces/test/agnostic/flow/basic/VersionBean.java
Adding test/agnostic/flow/basic/src/main/resources/META-INF
Adding test/agnostic/flow/basic/src/main/resources/META-INF/persistence.xml
Adding test/agnostic/flow/basic/src/main/resources/META-INF/services
Adding test/agnostic/flow/basic/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
Adding test/agnostic/flow/basic/src/main/webapp/WEB-INF/beans.xml
Adding test/agnostic/flow/basic/src/main/webapp/WEB-INF/faces-config.xml
Sending test/agnostic/flow/basic/src/main/webapp/WEB-INF/web.xml
Sending test/agnostic/flow/basic/src/main/webapp/index.xhtml
Adding test/agnostic/flow/basic/src/main/webapp/nonFlow.xhtml
Sending test/agnostic/flow/basic/src/main/webapp/start.xhtml
Sending test/agnostic/flow/basic/src/test/java/com/sun/faces/test/agnostic/flow/basic/FlowEntryExitIT.java
Transmitting file data ...............................
Committed revision 9790.

http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-730

  • First committed iteration of Flow implementation.

SECTION: Spec changes

A + jsf-api/src/main/java/javax/faces/flow/FlowScoped.java
D jsf-api/src/main/java/javax/faces/application/FlowScoped.java

  • This is the first time JSF has required a CDI custom scope. The
    Previous iteration had this in the application package. Move it to
    its own package.

M jsf-api/src/main/java/javax/faces/application/Application.java
M jsf-api/src/main/java/javax/faces/application/ApplicationWrapper.java
A jsf-api/src/main/java/javax/faces/flow/FlowHandler.java

  • Add the flow handler.

M jsf-api/doc/web-facesconfig_2_2.xsd

  • Place-holder syntax for declaring a faces-flow in faces-config.xml.
    This won't be the only way to declare flows, see the proposal.

A jsf-api/src/main/java/javax/faces/flow
A jsf-api/src/main/java/javax/faces/flow/Flow.java

  • Runtime representation of a flow.

M jsf-ri/src/main/java/com/sun/faces/config/WebConfiguration.java
M jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java
A jsf-ri/src/main/java/com/sun/faces/config/processor/FacesFlowDefinitionConfigProcessor.java

  • Implementation of the XML parsing. Note this important comment, in
    the process() method.

// The flow feature is effectively disabled if no flows are detected
// at startup time. This is accomplished by adding a simple boolean
// property to WebConfiguration that is checked whenever the feature
// is implemented. This causes an otherwise unnecessary ThreadLocal
// lookup. Once we have the proper bootstrapping implemented,
// I expect we can dispense with WebConfiguration.hasFlows.

Consider this line too:

LOGGER.log(Level.WARNING,
"

{0} was set to none, but Faces Flows requires {0}

is enabled. Setting to ''url''.", new Object[]

{featureName}

);

This means that facesFlows will force WindowId to be enabled, if
necessary. Can't have Flows without WindowId.

M jsf-ri/src/main/java/com/sun/faces/lifecycle/LifecycleImpl.java

  • Use the PostConstructApplicationEvent to check if the WindowId feature is enabled.
    This gives the system a chance to detect the existence or absence of flows.

M jsf-ri/src/main/java/com/sun/faces/lifecycle/LifecycleFactoryImpl.java

  • Pass ExternalContext to the LifecycleImpl ctor. Need it to get the
    WebConfiguration so we can get the application so we can subscribe to
    the PostConstructApplicationEvent.

M jsf-ri/src/main/java/com/sun/faces/application/ApplicationAssociate.java
M jsf-ri/src/main/java/com/sun/faces/application/ApplicationImpl.java

  • Vend the FlowHandlerImpl.

// PENDING(edburns): Make this come from a factory.

M jsf-ri/src/main/java/com/sun/faces/application/NavigationHandlerImpl.java

  • in handleNavigation()

// PENDING(edburns): Flows currently don't work with redirect.
// Obviously I have to fix that.

// Unconditionally tell the flow system we are transitioning
// between nodes. Let the flow system figure it out if these nodes
// are in flows or not.

M jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java

  • Piggyback on the existing sessionDestroyed() event listening to notify the
    cdi context to clean up its session data when the session is destroyed.

M jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIContext.java

  • Flesh this out. Thanks to Lincoln Baxter III and Pete Muir for the help.

A jsf-ri/src/main/java/com/sun/faces/flow/FlowHandlerImpl.java

  • Very simple. Even has hard-coded view ids from the basic flow test.

M jsf-ri/src/main/java/com/sun/faces/util/FacesLogger.java

  • New logger for flows.

M test/agnostic/flow/basic/src/main/webapp/index.xhtml
M test/agnostic/flow/basic/src/main/webapp/WEB-INF/web.xml
M test/agnostic/flow/basic/src/main/webapp/start.xhtml
M test/agnostic/flow/basic/pom.xml
A test/agnostic/flow/basic/src/main/java/com/acme
A test/agnostic/flow/basic/src/main/java/com/acme/FlowCDIExtension.java
A test/agnostic/flow/basic/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
A test/agnostic/flow/basic/src/main/resources/META-INF/services

  • I've found that if I put the CDI Extension outside of javax.faces.jar,
    it works. J. J. Snyder has offered to help me learn how to roll back
    this hack and get it working the right way.

D test/agnostic/flow/basic/src/main/java/com/sun/faces/test/agnostic/flow/basic/VersionBean.java
A + test/agnostic/flow/basic/src/main/java/com/sun/faces/test/agnostic/flow/basic/FlowBean.java

  • A flow scoped bean.

A test/agnostic/flow/basic/src/main/webapp/WEB-INF/faces-config.xml
A test/agnostic/flow/basic/src/main/webapp/WEB-INF/beans.xml
A test/agnostic/flow/basic/src/main/resources/META-INF
A test/agnostic/flow/basic/src/main/resources/META-INF/persistence.xml

  • Extra XML stuff.

D jsf-ri/conf/share/javax.enterprise.inject.spi.Extension
D jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIExtension.java
M jsf-ri/build.xml

  • Until I can get to the bottom of why the custom extension doesn't work
    in GlassFish when it is bundled into the javax.faces.jar, I'm removing
    the code that implements it in javax.faces.jar and moving it to the
    test app.

@glassfishrobot
Copy link
Author

File: 20120406-1700-i_spec_730.patch
Attached By: @edburns

@glassfishrobot
Copy link
Author

@edburns said:
http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-730

Next flow checkpoint. Can define the existince of a flow within a page.

2256 old tests pass. 4 new tests pass.

SECTION: Spec changes

A jsf-ri/conf/share/faces-flow.taglib.xml

  • My thinking for JSF is still influenced by the convention over
    configuration emphasis of Ruby on Rails. To that end, I want to make
    it so whatever flow definition you can do by putting XML in your
    faces-config.xml, you can also do with the exact same syntax in your
    Facelet pages, with the advantage of the system being able to infer
    some things from the context of the page in which the content resides.

Consider these changes to the start.xhtml page.

  • xmlns:h="http://java.sun.com/jsf/html">
  • @glassfishrobot
    Copy link
    Author

    @edburns said:
    Committed to i_spec_730 prototype branch.

    Sending jsf-api/src/main/java/javax/faces/flow/Flow.java
    Sending jsf-ri/src/main/java/com/sun/faces/facelets/flow/DefaultNodeTagHandler.java
    Sending jsf-ri/src/main/java/com/sun/faces/facelets/flow/FacesFlowDefinitionTagHandler.java
    Sending test/web-profile/flow/basic/src/main/webapp/WEB-INF/web.xml
    Adding test/web-profile/flow/basic-multi-page
    Adding test/web-profile/flow/basic-multi-page/nbactions.xml
    Adding test/web-profile/flow/basic-multi-page/pom.xml
    Adding test/web-profile/flow/basic-multi-page/src
    Adding test/web-profile/flow/basic-multi-page/src/main
    Adding test/web-profile/flow/basic-multi-page/src/main/java
    Adding test/web-profile/flow/basic-multi-page/src/main/java/com
    Adding test/web-profile/flow/basic-multi-page/src/main/java/com/acme
    Adding test/web-profile/flow/basic-multi-page/src/main/java/com/acme/FlowCDIExtension.java
    Adding test/web-profile/flow/basic-multi-page/src/main/java/com/sun
    Adding test/web-profile/flow/basic-multi-page/src/main/java/com/sun/faces
    Adding test/web-profile/flow/basic-multi-page/src/main/java/com/sun/faces/test
    Adding test/web-profile/flow/basic-multi-page/src/main/java/com/sun/faces/test/agnostic
    Adding test/web-profile/flow/basic-multi-page/src/main/java/com/sun/faces/test/agnostic/flow
    Adding test/web-profile/flow/basic-multi-page/src/main/java/com/sun/faces/test/agnostic/flow/basic
    Adding test/web-profile/flow/basic-multi-page/src/main/java/com/sun/faces/test/agnostic/flow/basic/FlowBean.java
    Adding test/web-profile/flow/basic-multi-page/src/main/resources
    Adding test/web-profile/flow/basic-multi-page/src/main/resources/META-INF
    Adding test/web-profile/flow/basic-multi-page/src/main/resources/META-INF/persistence.xml
    Adding test/web-profile/flow/basic-multi-page/src/main/resources/META-INF/services
    Adding test/web-profile/flow/basic-multi-page/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF/beans.xml
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF/faces-config.xml
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF/web.xml
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp/index.xhtml
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp/next_a.xhtml
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp/nonFlow.xhtml
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp/start.xhtml
    Adding test/web-profile/flow/basic-multi-page/src/test
    Adding test/web-profile/flow/basic-multi-page/src/test/java
    Adding test/web-profile/flow/basic-multi-page/src/test/java/com
    Adding test/web-profile/flow/basic-multi-page/src/test/java/com/sun
    Adding test/web-profile/flow/basic-multi-page/src/test/java/com/sun/faces
    Adding test/web-profile/flow/basic-multi-page/src/test/java/com/sun/faces/test
    Adding test/web-profile/flow/basic-multi-page/src/test/java/com/sun/faces/test/agnostic
    Adding test/web-profile/flow/basic-multi-page/src/test/java/com/sun/faces/test/agnostic/flow
    Adding test/web-profile/flow/basic-multi-page/src/test/java/com/sun/faces/test/agnostic/flow/basic
    Adding test/web-profile/flow/basic-multi-page/src/test/java/com/sun/faces/test/agnostic/flow/basic/FlowEntryExitIT.java
    Sending test/web-profile/flow/pom.xml
    Transmitting file data ...................
    Committed revision 9844.

    @glassfishrobot
    Copy link
    Author

    File: 20120412-1618-i_spec_730.patch
    Attached By: @edburns

    @glassfishrobot
    Copy link
    Author

    @edburns said:
    Sending jsf-api/src/main/java/javax/faces/flow/Flow.java
    Sending jsf-ri/src/main/java/com/sun/faces/application/NavigationHandlerImpl.java
    Sending test/web-profile/flow/basic-multi-page/src/main/java/com/sun/faces/test/agnostic/flow/basic/FlowBean.java
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/bounded-task-flow.xhtml
    Sending test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/next_a.xhtml
    Deleting test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/start.xhtml
    Deleting test/web-profile/flow/basic-multi-page/src/main/webapp/flow01
    Sending test/web-profile/flow/basic-multi-page/src/main/webapp/index.xhtml
    Transmitting file data ......
    Committed revision 9861.

    @glassfishrobot
    Copy link
    Author

    @edburns said:
    Not a good stopping place, but saving the work anyway.

    @glassfishrobot
    Copy link
    Author

    File: 20120413-1638-i_spec_730.patch
    Attached By: @edburns

    @glassfishrobot
    Copy link
    Author

    @edburns said:
    snapshot

    @glassfishrobot
    Copy link
    Author

    File: 20120417-1320-i_spec_730.patch
    Attached By: @edburns

    @glassfishrobot
    Copy link
    Author

    File: 20120417-1331-i_spec_730-mods.zip
    Attached By: @edburns

    @glassfishrobot
    Copy link
    Author

    @edburns said:
    2240 old style tests passed, 10 new style tests passed.

    <j:faces-flow-return> works.

    SECTION: Modified Files

    M jsf-ri/conf/share/faces-flow.taglib.xml
    D jsf-ri/src/main/java/com/sun/faces/facelets/flow/DefaultNodeTagHandler.java

    • Remove DefaultNodeTagHandler. No need for it.

    • Add from-outcome, and navigation-case tags.

    M jsf-ri/src/main/java/com/sun/faces/facelets/flow/FacesFlowDefinitionTagHandler.java

    • pull together the faces-flow-return information.

    M jsf-ri/src/main/java/com/sun/faces/facelets/compiler/SAXCompiler.java

    • This one really threw me for a loop. The inner class
      MetadataCompilationHandler had no-ops for its characters() method.
      This was causing the <j:from-outcome> contents to not be processed.

    M jsf-ri/src/main/java/com/sun/faces/application/NavigationHandlerImpl.java

    • Upon faces-flow-return, feed the outcome through the navigation rules once more.

    M test/web-profile/flow/basic-multi-page/src/main/java/com/sun/faces/test/agnostic/flow/basic/FlowBean.java

    • Give the bean a return value.

    M test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/bounded-task-flow.xhtml

    • Declare the .

    M test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/next_a.xhtml

    • Cosmetic changes.

    M jsf-api/src/main/java/javax/faces/flow/Flow.java

    • Add returns to the data structure.

    A + jsf-ri/src/main/java/com/sun/faces/facelets/flow/FacesFlowReturnTagHandler.java
    A jsf-ri/src/main/java/com/sun/faces/facelets/flow/FlowNavigationCase.java
    A + jsf-ri/src/main/java/com/sun/faces/facelets/flow/NavigationCaseTagHandler.java
    A + jsf-ri/src/main/java/com/sun/faces/facelets/flow/FromOutcomeTagHandler.java

    • Tag handlers to support <j:faces-flow-return>.

    A + test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/next_b.xhtml
    A + test/web-profile/flow/basic-multi-page/src/main/webapp/return1.xhtml

    • return support

    Sending jsf-api/src/main/java/javax/faces/flow/Flow.java
    Sending jsf-ri/conf/share/faces-flow.taglib.xml
    Sending jsf-ri/src/main/java/com/sun/faces/application/NavigationHandlerImpl.java
    Sending jsf-ri/src/main/java/com/sun/faces/facelets/compiler/SAXCompiler.java
    Deleting jsf-ri/src/main/java/com/sun/faces/facelets/flow/DefaultNodeTagHandler.java
    Sending jsf-ri/src/main/java/com/sun/faces/facelets/flow/FacesFlowDefinitionTagHandler.java
    Adding jsf-ri/src/main/java/com/sun/faces/facelets/flow/FacesFlowReturnTagHandler.java
    Adding jsf-ri/src/main/java/com/sun/faces/facelets/flow/FlowNavigationCase.java
    Adding jsf-ri/src/main/java/com/sun/faces/facelets/flow/FromOutcomeTagHandler.java
    Adding jsf-ri/src/main/java/com/sun/faces/facelets/flow/NavigationCaseTagHandler.java
    Sending test/web-profile/flow/basic-multi-page/src/main/java/com/sun/faces/test/agnostic/flow/basic/FlowBean.java
    Sending test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/bounded-task-flow.xhtml
    Sending test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/next_a.xhtml
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/next_b.xhtml
    Adding test/web-profile/flow/basic-multi-page/src/main/webapp/return1.xhtml
    Transmitting file data ..............
    Committed revision 9862.

    @glassfishrobot
    Copy link
    Author

    @edburns said:
    Implements #

    {facesFlowScope}

    . Analogous to ADF's #

    {pageFlowScope}

    .

    @glassfishrobot
    Copy link
    Author

    File: 20120419-2328-i_spec_730.patch
    Attached By: @edburns

    @glassfishrobot
    Copy link
    Author

    @edburns said:
    Save work from airplane.

    @glassfishrobot
    Copy link
    Author

    File: 20121005-2221-i_spec_730.patch
    Attached By: @edburns

    @glassfishrobot
    Copy link
    Author

    File: 20121009-2345-i_spec_730.patch
    Attached By: @edburns

    @glassfishrobot
    Copy link
    Author

    File: 20121011-0039-i_spec_730.patch
    Attached By: @edburns

    @glassfishrobot
    Copy link
    Author

    File: 20121013-0012-i_spec_730.patch
    Attached By: @edburns

    @glassfishrobot
    Copy link
    Author

    @glassfishrobot
    Copy link
    Author

    @glassfishrobot
    Copy link
    Author

    File: 20121128-1054-GMT-5-task-flow-moderate.zip
    Attached By: @edburns

    @glassfishrobot
    Copy link
    Author

    File: basic-explicit.zip
    Attached By: @edburns

    @glassfishrobot
    Copy link
    Author

    Marked as fixed on Saturday, March 16th 2013, 9:39:14 am

    @glassfishrobot
    Copy link
    Author

    This issue was imported from java.net JIRA JAVASERVERFACES_SPEC_PUBLIC-730

    Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
    Projects
    None yet
    Development

    No branches or pull requests

    2 participants