You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2009/01/07 01:44:01 UTC
svn commit: r732188 - in /tapestry/tapestry5/trunk: ./
tapestry-core/src/main/java/org/apache/tapestry5/internal/services/
tapestry-core/src/main/java/org/apache/tapestry5/services/
tapestry-webflow/ tapestry-webflow/src/main/java/org/ tapestry-webflow...
Author: hlship
Date: Tue Jan 6 16:43:59 2009
New Revision: 732188
URL: http://svn.apache.org/viewvc?rev=732188&view=rev
Log:
TAP5-59: Tracking issue for Tapestry/Spring Web Flow integration
Added:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceProcessor.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/ExternalContextSource.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/ExternalContextSourceImpl.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/FlowExecutionResultProcessor.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/FlowManagerImpl.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalFlowManager.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalFlowManagerImpl.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalViewFactoryCreator.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalViewFactoryCreatorImpl.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/PageViewWrapper.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/TapestryFlowURLHandler.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/WebflowDispatcher.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/TapestryViewFactoryCreator.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/WebflowConstants.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/services/
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/services/FlowManager.java
tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/services/WebFlowModule.java
tapestry/tapestry5/trunk/tapestry-webflow/src/test/conf/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/conf/webdefault.xml
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/RunWebFlow.java
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/data/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/data/TargetType.java
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/pages/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/pages/Index.java
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/pages/SetLaunchCoordinates.java
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/services/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/services/AppModule.java
tapestry/tapestry5/trunk/tapestry-webflow/src/test/resources/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/resources/log4j.properties
tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/Index.tml
tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/SetLaunchCoordinates.tml
tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/applicationContext.xml
tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/flows/
tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/flows/MissileLaunch.xml
tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/web.xml
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
tapestry/tapestry5/trunk/tapestry-project.ipr
tapestry/tapestry5/trunk/tapestry-webflow/pom.xml
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java?rev=732188&r1=732187&r2=732188&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java Tue Jan 6 16:43:59 2009
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
import org.apache.tapestry5.EventConstants;
import org.apache.tapestry5.internal.structure.ComponentPageElement;
import org.apache.tapestry5.internal.structure.Page;
+import org.apache.tapestry5.ioc.annotations.Primary;
import org.apache.tapestry5.ioc.internal.util.TapestryException;
import org.apache.tapestry5.services.*;
@@ -34,9 +35,15 @@
private final Environment environment;
- public ComponentEventRequestHandlerImpl(@Traditional ComponentEventResultProcessor resultProcessor,
- RequestPageCache cache, Response response,
- ActionRenderResponseGenerator generator, Environment environment)
+ public ComponentEventRequestHandlerImpl(
+ @Traditional @Primary
+ ComponentEventResultProcessor resultProcessor,
+
+ RequestPageCache cache, Response response,
+
+ ActionRenderResponseGenerator generator,
+
+ Environment environment)
{
this.resultProcessor = resultProcessor;
this.cache = cache;
Added: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceProcessor.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceProcessor.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceProcessor.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,28 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.internal.services;
+
+import java.lang.annotation.*;
+
+/**
+ * Marker for {@link org.apache.tapestry5.services.ComponentEventResultProcessor} to identify the particular
+ * implementation used for handling {@link org.apache.tapestry5.runtime.Component} instances (i.e., pages).
+ */
+@Target({ElementType.PARAMETER, ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface ComponentInstanceProcessor
+{
+}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceResultProcessor.java?rev=732188&r1=732187&r2=732188&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceResultProcessor.java Tue Jan 6 16:43:59 2009
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -16,12 +16,15 @@
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.internal.structure.Page;
+import org.apache.tapestry5.ioc.annotations.Marker;
import org.apache.tapestry5.runtime.Component;
import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.Traditional;
import org.slf4j.Logger;
import java.io.IOException;
+@Marker({Traditional.class, ComponentInstanceProcessor.class})
public class ComponentInstanceResultProcessor implements ComponentEventResultProcessor<Component>
{
private final RequestPageCache requestPageCache;
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java?rev=732188&r1=732187&r2=732188&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java Tue Jan 6 16:43:59 2009
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -16,6 +16,7 @@
import org.apache.tapestry5.EventConstants;
import org.apache.tapestry5.internal.structure.Page;
+import org.apache.tapestry5.ioc.annotations.Primary;
import org.apache.tapestry5.services.ComponentEventResultProcessor;
import org.apache.tapestry5.services.PageRenderRequestHandler;
import org.apache.tapestry5.services.PageRenderRequestParameters;
@@ -24,7 +25,9 @@
import java.io.IOException;
/**
- * Handles a PageLink as specified by a PageLinkPathSource by activating and then rendering the page.
+ * Handles a page render request by activating and then rendering the page.
+ *
+ * @see org.apache.tapestry5.internal.services.PageRenderDispatcher
*/
public class PageRenderRequestHandlerImpl implements PageRenderRequestHandler
{
@@ -35,7 +38,8 @@
private final PageResponseRenderer pageResponseRenderer;
public PageRenderRequestHandlerImpl(RequestPageCache cache,
- @Traditional ComponentEventResultProcessor resultProcessor,
+ @Traditional @Primary
+ ComponentEventResultProcessor resultProcessor,
PageResponseRenderer pageResponseRenderer)
{
this.cache = cache;
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=732188&r1=732187&r2=732188&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java Tue Jan 6 16:43:59 2009
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -1168,6 +1168,14 @@
}
/**
+ * @since 5.1.0.0
+ */
+ public HttpServletResponse buildHttpServletResponse()
+ {
+ return shadowBuilder.build(requestGlobals, "HTTPServletResponse", HttpServletResponse.class);
+ }
+
+ /**
* Builds a shadow of the RequestGlobals.response property. Note again that the shadow can be an ordinary singleton,
* even though RequestGlobals is perthread.
*/
@@ -1304,7 +1312,7 @@
* external URL</dd> </dl>
*/
public void contributeComponentEventResultProcessor(
- @InjectService("ComponentInstanceResultProcessor")
+ @Traditional @ComponentInstanceProcessor
ComponentEventResultProcessor componentInstanceProcessor,
MappedConfiguration<Class, ComponentEventResultProcessor> configuration)
Modified: tapestry/tapestry5/trunk/tapestry-project.ipr
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-project.ipr?rev=732188&r1=732187&r2=732188&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-project.ipr (original)
+++ tapestry/tapestry5/trunk/tapestry-project.ipr Tue Jan 6 16:43:59 2009
@@ -146,6 +146,11 @@
<module name="tapestry-test" />
<module name="tapestry-upload" />
<module name="tutorial1" />
+ <module name="tapestry-webflow">
+ <files>
+ <file url="file://$PROJECT_DIR$/tapestry-webflow/src/test/webapp/WEB-INF/web.xml" />
+ </files>
+ </module>
</modules>
</facet-type>
<facet-type id="jpa" />
@@ -2013,6 +2018,28 @@
<root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context-support/2.5.6/spring-context-support-2.5.6-sources.jar!/" />
</SOURCES>
</library>
+ <library name="Maven: org.jboss.el:com.springsource.org.jboss.el:2.0.0.GA">
+ <CLASSES>
+ <root url="jar://$MAVEN_REPOSITORY$/org/jboss/el/com.springsource.org.jboss.el/2.0.0.GA/com.springsource.org.jboss.el-2.0.0.GA.jar!/" />
+ </CLASSES>
+ <JAVADOC>
+ <root url="jar://$MAVEN_REPOSITORY$/org/jboss/el/com.springsource.org.jboss.el/2.0.0.GA/com.springsource.org.jboss.el-2.0.0.GA-javadoc.jar!/" />
+ </JAVADOC>
+ <SOURCES>
+ <root url="jar://$MAVEN_REPOSITORY$/org/jboss/el/com.springsource.org.jboss.el/2.0.0.GA/com.springsource.org.jboss.el-2.0.0.GA-sources.jar!/" />
+ </SOURCES>
+ </library>
+ <library name="Maven: javax.el:el-api:1.0">
+ <CLASSES>
+ <root url="jar://$MAVEN_REPOSITORY$/javax/el/el-api/1.0/el-api-1.0.jar!/" />
+ </CLASSES>
+ <JAVADOC>
+ <root url="jar://$MAVEN_REPOSITORY$/javax/el/el-api/1.0/el-api-1.0-javadoc.jar!/" />
+ </JAVADOC>
+ <SOURCES>
+ <root url="jar://$MAVEN_REPOSITORY$/javax/el/el-api/1.0/el-api-1.0-sources.jar!/" />
+ </SOURCES>
+ </library>
</component>
<UsedPathMacros>
<macro name="MAVEN_REPOSITORY" />
Modified: tapestry/tapestry5/trunk/tapestry-webflow/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/pom.xml?rev=732188&r1=732187&r2=732188&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/pom.xml (original)
+++ tapestry/tapestry5/trunk/tapestry-webflow/pom.xml Tue Jan 6 16:43:59 2009
@@ -55,6 +55,20 @@
<version>${web-flow-version}</version>
</dependency>
+ <dependency>
+ <groupId>javax.el</groupId>
+ <artifactId>el-api</artifactId>
+ <version>1.0</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.el</groupId>
+ <artifactId>com.springsource.org.jboss.el</artifactId>
+ <version>2.0.0.GA</version>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
<build>
<plugins>
@@ -92,7 +106,7 @@
<archive>
<manifestEntries>
<Tapestry-Module-Classes>
- org.apache.tapestry5.internal.webflow.WebFlowModule
+ org.apache.tapestry5.webflow.services.WebFlowModule
</Tapestry-Module-Classes>
</manifestEntries>
</archive>
@@ -122,6 +136,14 @@
</plugins>
</reporting>
+ <repositories>
+ <repository>
+ <id>com.springsource.repository.bundles.external</id>
+ <name>SpringSource Enterprise Bundle Repository - External Releases</name>
+ <url>http://repository.springsource.com/maven/bundles/external</url>
+ </repository>
+ </repositories>
+
<properties>
<web-flow-version>2.0.5.RELEASE</web-flow-version>
</properties>
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/ExternalContextSource.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/ExternalContextSource.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/ExternalContextSource.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/ExternalContextSource.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,22 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.internal.webflow.services;
+
+import org.springframework.webflow.context.ExternalContext;
+
+public interface ExternalContextSource
+{
+ ExternalContext create();
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/ExternalContextSourceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/ExternalContextSourceImpl.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/ExternalContextSourceImpl.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/ExternalContextSourceImpl.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,48 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.internal.webflow.services;
+
+import org.apache.tapestry5.services.ApplicationGlobals;
+import org.springframework.webflow.context.ExternalContext;
+import org.springframework.webflow.context.servlet.FlowUrlHandler;
+import org.springframework.webflow.context.servlet.ServletExternalContext;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class ExternalContextSourceImpl implements ExternalContextSource
+{
+ private final HttpServletRequest request;
+
+ private final HttpServletResponse response;
+
+ private final ApplicationGlobals applicationGlobals;
+
+ private final FlowUrlHandler flowUrlHandler;
+
+ public ExternalContextSourceImpl(HttpServletRequest request, HttpServletResponse response,
+ ApplicationGlobals applicationGlobals, FlowUrlHandler flowUrlHandler)
+ {
+ this.request = request;
+ this.response = response;
+ this.applicationGlobals = applicationGlobals;
+ this.flowUrlHandler = flowUrlHandler;
+ }
+
+ public ExternalContext create()
+ {
+ return new ServletExternalContext(applicationGlobals.getServletContext(), request, response, flowUrlHandler);
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/FlowExecutionResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/FlowExecutionResultProcessor.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/FlowExecutionResultProcessor.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/FlowExecutionResultProcessor.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,46 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.internal.webflow.services;
+
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.Response;
+import org.springframework.webflow.context.servlet.FlowUrlHandler;
+import org.springframework.webflow.executor.FlowExecutionResult;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+public class FlowExecutionResultProcessor implements ComponentEventResultProcessor<FlowExecutionResult>
+{
+ private final HttpServletRequest request;
+
+ private final Response response;
+
+ private final FlowUrlHandler urlHandler;
+
+ public FlowExecutionResultProcessor(HttpServletRequest request, Response response, FlowUrlHandler urlHandler)
+ {
+ this.request = request;
+ this.response = response;
+ this.urlHandler = urlHandler;
+ }
+
+ public void processResultValue(FlowExecutionResult result) throws IOException
+ {
+ String url = urlHandler.createFlowExecutionUrl(result.getFlowId(), result.getPausedKey(), request);
+
+ response.sendRedirect(response.encodeRedirectURL(url));
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/FlowManagerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/FlowManagerImpl.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/FlowManagerImpl.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/FlowManagerImpl.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,36 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.internal.webflow.services;
+
+import org.apache.tapestry5.webflow.services.FlowManager;
+import org.springframework.webflow.executor.FlowExecutor;
+
+public class FlowManagerImpl implements FlowManager
+{
+ private final FlowExecutor flowExecutor;
+
+ private final ExternalContextSource contextSource;
+
+ public FlowManagerImpl(FlowExecutor flowExecutor, ExternalContextSource contextSource)
+ {
+ this.flowExecutor = flowExecutor;
+ this.contextSource = contextSource;
+ }
+
+ public Object initiateFlow(String flowId)
+ {
+ return flowExecutor.launchExecution(flowId, null, contextSource.create());
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalFlowManager.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalFlowManager.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalFlowManager.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalFlowManager.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,22 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.internal.webflow.services;
+
+import java.io.IOException;
+
+public interface InternalFlowManager
+{
+ void continueFlow() throws IOException;
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalFlowManagerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalFlowManagerImpl.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalFlowManagerImpl.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalFlowManagerImpl.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,75 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.internal.webflow.services;
+
+import org.apache.tapestry5.ioc.annotations.Primary;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.Response;
+import org.apache.tapestry5.services.Traditional;
+import org.springframework.webflow.context.servlet.FlowUrlHandler;
+import org.springframework.webflow.executor.FlowExecutionResult;
+import org.springframework.webflow.executor.FlowExecutor;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+public class InternalFlowManagerImpl implements InternalFlowManager
+{
+ private final FlowExecutor flowExecutor;
+
+ private final ExternalContextSource contextSource;
+
+ private final FlowUrlHandler urlHandler;
+
+ private final HttpServletRequest request;
+
+ private final ComponentEventResultProcessor resultProcessor;
+
+ private final Response response;
+
+ public InternalFlowManagerImpl(FlowExecutor flowExecutor,
+
+ ExternalContextSource contextSource,
+
+ FlowUrlHandler urlHandler,
+
+ HttpServletRequest request,
+
+ @Traditional @Primary
+ ComponentEventResultProcessor resultProcessor,
+
+ Response response)
+ {
+ this.flowExecutor = flowExecutor;
+ this.contextSource = contextSource;
+ this.urlHandler = urlHandler;
+ this.request = request;
+ this.resultProcessor = resultProcessor;
+ this.response = response;
+ }
+
+ public void continueFlow() throws IOException
+ {
+ String executionKey = urlHandler.getFlowExecutionKey(request);
+
+ FlowExecutionResult result = flowExecutor.resumeExecution(executionKey, contextSource.create());
+
+ // Typically, the response will be committed (a redirect to a render request) by now,
+ // but just in case.
+
+ if (!response.isCommitted())
+ resultProcessor.processResultValue(result);
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalViewFactoryCreator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalViewFactoryCreator.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalViewFactoryCreator.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalViewFactoryCreator.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,23 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.internal.webflow.services;
+
+import org.springframework.binding.expression.Expression;
+import org.springframework.webflow.execution.ViewFactory;
+
+public interface InternalViewFactoryCreator
+{
+ ViewFactory createViewFactory(Expression viewId);
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalViewFactoryCreatorImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalViewFactoryCreatorImpl.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalViewFactoryCreatorImpl.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/InternalViewFactoryCreatorImpl.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,57 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.internal.webflow.services;
+
+import org.apache.tapestry5.internal.services.ComponentInstanceProcessor;
+import org.apache.tapestry5.runtime.Component;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.ComponentSource;
+import org.apache.tapestry5.services.Traditional;
+import org.springframework.binding.expression.Expression;
+import org.springframework.webflow.execution.RequestContext;
+import org.springframework.webflow.execution.View;
+import org.springframework.webflow.execution.ViewFactory;
+
+public class InternalViewFactoryCreatorImpl implements InternalViewFactoryCreator
+{
+ private final ComponentSource componentSource;
+
+ private final ComponentEventResultProcessor<Component> resultProcessor;
+
+ public InternalViewFactoryCreatorImpl(
+ ComponentSource componentSource,
+
+ @Traditional @ComponentInstanceProcessor
+ ComponentEventResultProcessor<Component> resultProcessor)
+ {
+ this.resultProcessor = resultProcessor;
+ this.componentSource = componentSource;
+ }
+
+ public ViewFactory createViewFactory(final Expression viewId)
+ {
+ return new ViewFactory()
+ {
+ public View getView(RequestContext context)
+ {
+ String pageName = viewId.getValue(context).toString();
+
+ Component page = componentSource.getPage(pageName);
+
+ return new PageViewWrapper(pageName, page, resultProcessor);
+ }
+ };
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/PageViewWrapper.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/PageViewWrapper.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/PageViewWrapper.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/PageViewWrapper.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,63 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.internal.webflow.services;
+
+import org.apache.tapestry5.runtime.Component;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.springframework.webflow.execution.Event;
+import org.springframework.webflow.execution.View;
+
+import java.io.IOException;
+
+public class PageViewWrapper implements View
+{
+ private final String pageName;
+
+ private final Component page;
+
+ private final ComponentEventResultProcessor<Component> resultProcessor;
+
+ public PageViewWrapper(String pageName, Component page, ComponentEventResultProcessor<Component> resultProcessor)
+ {
+ this.pageName = pageName;
+ this.page = page;
+ this.resultProcessor = resultProcessor;
+ }
+
+ public void render() throws IOException
+ {
+ resultProcessor.processResultValue(page);
+ }
+
+ public void processUserEvent()
+ {
+ }
+
+ public boolean hasFlowEvent()
+ {
+ return false;
+ }
+
+ public Event getFlowEvent()
+ {
+ return null;
+ }
+
+ @Override
+ public String toString()
+ {
+ return String.format("PageViewWrapper[%s]", pageName);
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/TapestryFlowURLHandler.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/TapestryFlowURLHandler.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/TapestryFlowURLHandler.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/TapestryFlowURLHandler.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,51 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.internal.webflow.services;
+
+import org.apache.tapestry5.webflow.WebflowConstants;
+import org.springframework.webflow.context.servlet.FlowUrlHandler;
+import org.springframework.webflow.core.collection.AttributeMap;
+
+import javax.servlet.http.HttpServletRequest;
+
+public class TapestryFlowURLHandler implements FlowUrlHandler
+{
+ public String getFlowExecutionKey(HttpServletRequest request)
+ {
+ return request.getParameter(WebflowConstants.FLOW_EXECUTION_KEY_PARAMETER);
+ }
+
+ public String getFlowId(HttpServletRequest request)
+ {
+ return request.getParameter(WebflowConstants.FLOW_ID_PARAMETER);
+ }
+
+ public String createFlowDefinitionUrl(String flowId, AttributeMap input, HttpServletRequest request)
+ {
+ return String.format("%s%s?%s=%s",
+ request.getContextPath(),
+ WebflowConstants.WEB_FLOW_PATH,
+ WebflowConstants.FLOW_ID_PARAMETER, flowId);
+ }
+
+ public String createFlowExecutionUrl(String flowId, String flowExecutionKey, HttpServletRequest request)
+ {
+ return String.format("%s%s?%s=%s&%s=%s",
+ request.getContextPath(),
+ WebflowConstants.WEB_FLOW_PATH,
+ WebflowConstants.FLOW_ID_PARAMETER, flowId,
+ WebflowConstants.FLOW_EXECUTION_KEY_PARAMETER, flowExecutionKey);
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/WebflowDispatcher.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/WebflowDispatcher.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/WebflowDispatcher.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/internal/webflow/services/WebflowDispatcher.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,46 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.internal.webflow.services;
+
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
+import org.apache.tapestry5.webflow.WebflowConstants;
+
+import java.io.IOException;
+
+public class WebflowDispatcher implements Dispatcher
+{
+ private final InternalFlowManager flowManager;
+
+ public WebflowDispatcher(InternalFlowManager flowManager)
+ {
+ this.flowManager = flowManager;
+ }
+
+ public boolean dispatch(Request request, Response response) throws IOException
+ {
+ if (request.getPath().equalsIgnoreCase(WebflowConstants.WEB_FLOW_PATH))
+ {
+ flowManager.continueFlow();
+
+ return true;
+ }
+
+ // Continue on to other handlers.
+
+ return false;
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/TapestryViewFactoryCreator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/TapestryViewFactoryCreator.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/TapestryViewFactoryCreator.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/TapestryViewFactoryCreator.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,51 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.webflow;
+
+import org.apache.tapestry5.internal.webflow.services.InternalViewFactoryCreator;
+import org.apache.tapestry5.ioc.annotations.Inject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.binding.convert.ConversionService;
+import org.springframework.binding.expression.Expression;
+import org.springframework.binding.expression.ExpressionParser;
+import org.springframework.webflow.engine.builder.BinderConfiguration;
+import org.springframework.webflow.engine.builder.ViewFactoryCreator;
+import org.springframework.webflow.execution.ViewFactory;
+
+public class TapestryViewFactoryCreator implements ViewFactoryCreator
+{
+
+ private final InternalViewFactoryCreator internalCreator;
+
+ @Autowired
+ public TapestryViewFactoryCreator(@Inject InternalViewFactoryCreator internalCreator)
+ {
+ this.internalCreator = internalCreator;
+ }
+
+ public ViewFactory createViewFactory(Expression viewId, ExpressionParser expressionParser,
+ ConversionService conversionService, BinderConfiguration binderConfiguration)
+ {
+ return internalCreator.createViewFactory(viewId);
+ }
+
+ /**
+ * We map view state ids directly to page names, so this method just returns the viewStateId unchanged.
+ */
+ public String getViewIdByConvention(String viewStateId)
+ {
+ return viewStateId;
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/WebflowConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/WebflowConstants.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/WebflowConstants.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/WebflowConstants.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,27 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.webflow;
+
+public class WebflowConstants
+{
+ public static final String FLOW_EXECUTION_KEY_PARAMETER = "t:flow:key";
+
+ public static final String FLOW_ID_PARAMETER = "t:flow:id";
+
+ /**
+ * URL path that indicates a webflow.
+ */
+ public static final String WEB_FLOW_PATH = "/webflow";
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/services/FlowManager.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/services/FlowManager.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/services/FlowManager.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/services/FlowManager.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,29 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.webflow.services;
+
+/**
+ * Tapestry service used to initiate a flow. Once a flow is started, the flow will continue to operate until it is
+ * cancelled or otherwise reaches its end state. Typically, an action event will initiate a flow.
+ */
+public interface FlowManager
+{
+ /**
+ * Initiates a new web flow.
+ *
+ * @param flowId the identity of the flow to initiate
+ */
+ Object initiateFlow(String flowId);
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/services/WebFlowModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/services/WebFlowModule.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/services/WebFlowModule.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/main/java/org/apache/tapestry5/webflow/services/WebFlowModule.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,47 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.webflow.services;
+
+import org.apache.tapestry5.internal.webflow.services.*;
+import org.apache.tapestry5.ioc.MappedConfiguration;
+import org.apache.tapestry5.ioc.OrderedConfiguration;
+import org.apache.tapestry5.ioc.ServiceBinder;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.Dispatcher;
+import org.springframework.webflow.context.servlet.FlowUrlHandler;
+import org.springframework.webflow.executor.FlowExecutionResult;
+
+public class WebFlowModule
+{
+ public static void bind(ServiceBinder binder)
+ {
+ binder.bind(FlowManager.class, FlowManagerImpl.class);
+ binder.bind(InternalViewFactoryCreator.class, InternalViewFactoryCreatorImpl.class);
+ binder.bind(ExternalContextSource.class, ExternalContextSourceImpl.class);
+ binder.bind(FlowUrlHandler.class, TapestryFlowURLHandler.class);
+ binder.bind(InternalFlowManager.class, InternalFlowManagerImpl.class);
+ }
+
+ public static void contributeMasterDispatcher(OrderedConfiguration<Dispatcher> configuration)
+ {
+ configuration.addInstance("WebFlow", WebflowDispatcher.class, "before:ComponentEvent,PageRender");
+ }
+
+ public static void contributeComponentEventResultProcessor(
+ MappedConfiguration<Class, ComponentEventResultProcessor> configuration)
+ {
+ configuration.addInstance(FlowExecutionResult.class, FlowExecutionResultProcessor.class);
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/test/conf/webdefault.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/test/conf/webdefault.xml?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/test/conf/webdefault.xml (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/test/conf/webdefault.xml Tue Jan 6 16:43:59 2009
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ Copyright 2009 The Apache Software Foundation
+
+ Licensed 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.
+-->
+
+<web-app
+ xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+ version="2.4">
+
+ <description>
+ Default web.xml file.
+ This file is applied to a Web application before it's own WEB_INF/web.xml file
+ </description>
+
+
+ <!-- ==================================================================== -->
+ <!-- Context params to control Session Cookies -->
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- UNCOMMENT TO ACTIVATE
+ <context-param>
+ <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
+ <param-value>127.0.0.1</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
+ <param-value>/</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
+ <param-value>-1</param-value>
+ </context-param>
+ -->
+
+
+ <!-- ==================================================================== -->
+ <!-- The default servlet. -->
+ <!-- This servlet, normally mapped to /, provides the handling for static -->
+ <!-- content, OPTIONS and TRACE methods for the context. -->
+ <!-- The following initParameters are supported: -->
+ <!-- -->
+ <!-- acceptRanges If true, range requests and responses are -->
+ <!-- supported -->
+ <!-- -->
+ <!-- dirAllowed If true, directory listings are returned if no -->
+ <!-- welcome file is found. Else 403 Forbidden. -->
+ <!-- -->
+ <!-- putAllowed If true, the PUT method is allowed -->
+ <!-- -->
+ <!-- delAllowed If true, the DELETE method is allowed -->
+ <!-- -->
+ <!-- redirectWelcome If true, redirect welcome file requests -->
+ <!-- else use request dispatcher forwards -->
+ <!-- -->
+ <!-- minGzipLength If set to a positive integer, then static content -->
+ <!-- larger than this will be served as gzip content -->
+ <!-- encoded if a matching resource is found ending -->
+ <!-- with ".gz" -->
+ <!-- -->
+ <!-- resoureBase Can be set to replace the context resource base -->
+ <!-- -->
+ <!-- relativeResourceBase -->
+ <!-- Set with a pathname relative to the base of the -->
+ <!-- servlet context root. Useful for only serving -->
+ <!-- static content from only specific subdirectories. -->
+ <!-- -->
+ <!-- The MOVE method is allowed if PUT and DELETE are allowed -->
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <servlet>
+ <servlet-name>default</servlet-name>
+ <servlet-class>org.mortbay.jetty.servlet.Default</servlet-class>
+ <init-param>
+ <param-name>acceptRanges</param-name>
+ <param-value>true</param-value>
+ </init-param>
+ <init-param>
+ <param-name>dirAllowed</param-name>
+ <param-value>true</param-value>
+ </init-param>
+ <init-param>
+ <param-name>putAllowed</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ <init-param>
+ <param-name>delAllowed</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ <init-param>
+ <param-name>redirectWelcome</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ <init-param>
+ <param-name>minGzipLength</param-name>
+ <param-value>8192</param-value>
+ </init-param>
+ <load-on-startup>0</load-on-startup>
+ </servlet>
+
+
+ <servlet-mapping>
+ <servlet-name>default</servlet-name>
+ <url-pattern>/</url-pattern>
+ </servlet-mapping>
+
+ <!-- ==================================================================== -->
+ <session-config>
+ <session-timeout>30</session-timeout>
+ </session-config>
+
+
+ <!-- ==================================================================== -->
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ <welcome-file>index.htm</welcome-file>
+ </welcome-file-list>
+
+ <!-- ==================================================================== -->
+ <locale-encoding-mapping-list>
+ <locale-encoding-mapping>
+ <locale>ar</locale>
+ <encoding>ISO-8859-6</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>be</locale>
+ <encoding>ISO-8859-5</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>bg</locale>
+ <encoding>ISO-8859-5</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>ca</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>cs</locale>
+ <encoding>ISO-8859-2</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>da</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>de</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>el</locale>
+ <encoding>ISO-8859-7</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>en</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>es</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>et</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>fi</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>fr</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>hr</locale>
+ <encoding>ISO-8859-2</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>hu</locale>
+ <encoding>ISO-8859-2</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>is</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>it</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>iw</locale>
+ <encoding>ISO-8859-8</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>ja</locale>
+ <encoding>Shift_JIS</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>ko</locale>
+ <encoding>EUC-KR</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>lt</locale>
+ <encoding>ISO-8859-2</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>lv</locale>
+ <encoding>ISO-8859-2</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>mk</locale>
+ <encoding>ISO-8859-5</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>nl</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>no</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>pl</locale>
+ <encoding>ISO-8859-2</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>pt</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>ro</locale>
+ <encoding>ISO-8859-2</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>ru</locale>
+ <encoding>ISO-8859-5</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>sh</locale>
+ <encoding>ISO-8859-5</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>sk</locale>
+ <encoding>ISO-8859-2</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>sl</locale>
+ <encoding>ISO-8859-2</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>sq</locale>
+ <encoding>ISO-8859-2</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>sr</locale>
+ <encoding>ISO-8859-5</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>sv</locale>
+ <encoding>ISO-8859-1</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>tr</locale>
+ <encoding>ISO-8859-9</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>uk</locale>
+ <encoding>ISO-8859-5</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>zh</locale>
+ <encoding>GB2312</encoding>
+ </locale-encoding-mapping>
+ <locale-encoding-mapping>
+ <locale>zh_TW</locale>
+ <encoding>Big5</encoding>
+ </locale-encoding-mapping>
+ </locale-encoding-mapping-list>
+
+
+</web-app>
+
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/RunWebFlow.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/RunWebFlow.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/RunWebFlow.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/RunWebFlow.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,31 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.webflow.testapp;
+
+import org.apache.tapestry5.test.JettyRunner;
+
+import java.io.File;
+
+public class RunWebFlow
+{
+ public static void main(String[] args) throws Exception
+ {
+ File workingDir = new File(System.getProperty("user.dir"));
+
+ new File(workingDir, "target/tmp").mkdirs();
+
+ new JettyRunner(workingDir, "/", 8080, "src/test/webapp");
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/data/TargetType.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/data/TargetType.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/data/TargetType.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/data/TargetType.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,20 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.webflow.testapp.data;
+
+public enum TargetType
+{
+ CIVILIAN, MILITARY
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/pages/Index.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/pages/Index.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/pages/Index.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/pages/Index.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,29 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.webflow.testapp.pages;
+
+import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.webflow.services.FlowManager;
+
+public class Index
+{
+ @Inject
+ private FlowManager flowManager;
+
+ Object onActionFromLaunch()
+ {
+ return flowManager.initiateFlow("MissileLaunch");
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/pages/SetLaunchCoordinates.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/pages/SetLaunchCoordinates.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/pages/SetLaunchCoordinates.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/pages/SetLaunchCoordinates.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,31 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.webflow.testapp.pages;
+
+import org.apache.tapestry5.annotations.Persist;
+import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.webflow.testapp.data.TargetType;
+
+public class SetLaunchCoordinates
+{
+
+ public TargetType getCivilian() { return TargetType.CIVILIAN; }
+
+ public TargetType getMilitary() { return TargetType.MILITARY; }
+
+ @Persist
+ @Property
+ private TargetType target;
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/services/AppModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/services/AppModule.java?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/services/AppModule.java (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/test/java/org/apache/tapestry5/webflow/testapp/services/AppModule.java Tue Jan 6 16:43:59 2009
@@ -0,0 +1,32 @@
+// Copyright 2009 The Apache Software Foundation
+//
+// Licensed 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.tapestry5.webflow.testapp.services;
+
+import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.ioc.MappedConfiguration;
+import org.apache.tapestry5.ioc.annotations.SubModule;
+import org.apache.tapestry5.spring.SpringModule;
+import org.apache.tapestry5.webflow.services.WebFlowModule;
+
+@SubModule({WebFlowModule.class, SpringModule.class})
+public class AppModule
+{
+ public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
+ {
+ configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
+ configuration.add(SymbolConstants.COMPRESS_WHITESPACE, "false");
+ configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en");
+ }
+}
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/test/resources/log4j.properties?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/test/resources/log4j.properties (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/test/resources/log4j.properties Tue Jan 6 16:43:59 2009
@@ -0,0 +1,25 @@
+# Copyright 2009 The Apache Software Foundation
+#
+# Licensed 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.
+
+log4j.rootCategory=INFO, A1
+
+# A1 is set to be a ConsoleAppender.
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+
+# A1 uses PatternLayout.
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=[%p] %c{1} %m%n
+
+log4j.category.org.springframework.webflow=debug
+
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/Index.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/Index.tml?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/Index.tml (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/Index.tml Tue Jan 6 16:43:59 2009
@@ -0,0 +1,14 @@
+<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+
+ <p>Welcome to NORAD-lite.</p>
+
+ <p>
+ Would you like to launch a missile?
+ </p>
+
+ <p>
+ <t:actionlink t:id="launch">YES</t:actionlink>
+ </p>
+
+
+</html>
\ No newline at end of file
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/SetLaunchCoordinates.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/SetLaunchCoordinates.tml?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/SetLaunchCoordinates.tml (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/SetLaunchCoordinates.tml Tue Jan 6 16:43:59 2009
@@ -0,0 +1,23 @@
+<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+ <h1>Set Launch Coordinates</h1>
+
+ <t:form t:id="launch">
+
+ <t:radiogroup t:id="target">
+ <ul>
+ <li>
+ <t:radio t:id="civilian"/>
+ <t:label for="civilian"/>
+ </li>
+ <li>
+ <t:radio t:id="military"/>
+ <t:label for="military"/>
+ </li>
+ </ul>
+
+ <input type="submit" value="Select"/>
+ </t:radiogroup>
+
+ </t:form>
+
+</html>
\ No newline at end of file
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/applicationContext.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/applicationContext.xml?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/applicationContext.xml (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/applicationContext.xml Tue Jan 6 16:43:59 2009
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2009 The Apache Software Foundation
+
+ Licensed 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.
+-->
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:webflow="http://www.springframework.org/schema/webflow-config"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
+ http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">
+
+ <context:annotation-config/>
+
+ <!-- TODO: Find a way to make the wiring in of Tapestry more automatic. -->
+
+ <webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
+ <webflow:flow-location-pattern value="/WEB-INF/flows/**/*.xml"/>
+ </webflow:flow-registry>
+
+ <webflow:flow-builder-services id="flowBuilderServices" view-factory-creator="tapestryViewFactoryCreator"/>
+
+ <webflow:flow-executor id="flowExecutor"/>
+
+ <!-- It's a Spring bean; it uses @Inject to ensure connections to Tapestry services. -->
+
+ <bean name="tapestryViewFactoryCreator" class="org.apache.tapestry5.webflow.TapestryViewFactoryCreator"/>
+
+</beans>
+
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/flows/MissileLaunch.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/flows/MissileLaunch.xml?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/flows/MissileLaunch.xml (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/flows/MissileLaunch.xml Tue Jan 6 16:43:59 2009
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<flow xmlns="http://www.springframework.org/schema/webflow"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/webflow
+ http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">
+
+ <var name="targetType" class="org.apache.tapestry5.webflow.testapp.data.TargetType"/>
+
+ <!-- Each view-state should match a Tapestry page; we're also following the Tapestry naming
+ convention of using a leading capital-case character (not that Tapestry cares about case, of course). -->
+
+ <view-state id="SetLaunchCoordinates">
+ <transition on="submit" to="ConfirmLaunch"/>
+ </view-state>
+
+ <view-state id="ConfirmLaunch">
+ <transition on="submit" to="MissilesLaunched"/>
+ </view-state>
+
+ <end-state id="MissilesLaunched"/>
+
+
+</flow>
\ No newline at end of file
Added: tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/web.xml?rev=732188&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/web.xml (added)
+++ tapestry/tapestry5/trunk/tapestry-webflow/src/test/webapp/WEB-INF/web.xml Tue Jan 6 16:43:59 2009
@@ -0,0 +1,33 @@
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd">
+<!--
+ Copyright 2009 The Apache Software Foundation
+
+ Licensed 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.
+-->
+
+<web-app>
+ <display-name>Spring Web Flow Test App</display-name>
+ <context-param>
+ <param-name>tapestry.app-package</param-name>
+ <param-value>org.apache.tapestry5.webflow.testapp</param-value>
+ </context-param>
+ <filter>
+ <filter-name>app</filter-name>
+ <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>app</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+</web-app>