Author: rich
Date: Tue Aug 24 16:20:52 2004
New Revision: 36828
Added:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/BaseFlowControllerGrammar.java
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/tests/JpfFaces.xml
(contents, props changed)
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ActionGrammar.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ExceptionHandlerGrammar.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/MessageResourcesGrammar.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/SimpleActionGrammar.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ValidationFieldGrammar.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/Handler.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChain.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChainConfig.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorConfig.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorsConfig.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java
incubator/beehive/trunk/netui/test/webapps/jsf/jsfWeb/WEB-INF/web.xml
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/config/testRecorder-tests.xml
Log:
- Added a compile-time check to enforce that there is only one
@Jpf.MessageResource annotation with no "bundleKey" attribute, i.e., that there
is only one which is used as the default.
- Fixed to prevent incorrect warnings about nonexistant .jpf files when
they are referenced with relative URIs in @Jpf.Forward annotations.
- When instantiating a Control member field in a page flow, changed to
include the request scope-ID in the control-ID when the request is a
ScopedRequest. This prevents duplicate-control exceptions for the same
control-type/pageflow-type in two separate ScopedRequests.
- Made the ActionInterceptorChain (and all related classes) serializable,
so they can be stored safely in Servlet objects that may need to
serialize/deserialize.
- Made displayName/displayNameKey mutually exclusive on
@Jpf.ValidatableProperty.
- Enabled a basic JSF/JPF test. In order to run this, you need to point
the JSF_HOME environment variable to the root of an expanded JSF 1.1 Reference
Implementation distribution. Then, do 'ant clean build start&' in
netui/test/webapps/jsf, and hit
http://localhost:8080/jsfWeb/jpfFaces/JpfFacesController.jpf.
DRT: netui (WinXP)
BB: self (linux)
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
Tue Aug 24 16:20:52 2004
@@ -887,7 +887,7 @@
public static TypeDeclaration inferTypeFromPath( String
pathFromWebappRoot, AnnotationProcessorEnvironment env )
{
assert pathFromWebappRoot.startsWith( "/" ) : pathFromWebappRoot;
- String className = removeFileExtension( pathFromWebappRoot.substring(
1 ) );
+ String className = removeFileExtension( pathFromWebappRoot.substring(
1 ) );
return env.getTypeDeclaration( className.replace( '/', '.' ) );
}
}
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
Tue Aug 24 16:20:52 2004
@@ -72,8 +72,8 @@
_exceptionHandlerGrammar =
new ExceptionHandlerGrammar( getEnv(), getDiagnostics(),
getRuntimeVersionChecker(), _fcInfo );
_formBeanChecker = new FormBeanChecker( getEnv(), getDiagnostics() );
- getFlowControllerInfo().setWebappRoot( getWebappRoot() );
+ _fcInfo.setWebappRoot( getWebappRoot() );
_fcInfo.startBuild();
//
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java
Tue Aug 24 16:20:52 2004
@@ -25,6 +25,8 @@
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
+import java.util.Map;
+import java.util.HashMap;
import java.io.File;
import static
org.apache.beehive.netui.compiler.JpfLanguageConstants.GLOBALAPP_FULL_CLASSNAME;
@@ -46,6 +48,7 @@
private File _sourceFile;
private boolean _isBuilding = false;
private String _controllerClassName = null;
+ private Map< String, String > _messageResourcesByKey = new HashMap<
String, String >();
public static class ActionInfo
@@ -271,5 +274,15 @@
public String getControllerClassName()
{
return _controllerClassName;
+ }
+
+ public Map< String, String > getMessageResourcesByKey()
+ {
+ return _messageResourcesByKey;
+ }
+
+ public void addMessageResource( String key, String name )
+ {
+ _messageResourcesByKey.put( key, name );
}
}
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
Tue Aug 24 16:20:52 2004
@@ -246,7 +246,7 @@
public JpfControllerGrammar()
{
super( PageFlowChecker.this.getEnv(),
PageFlowChecker.this.getDiagnostics(),
- PageFlowChecker.this.getRuntimeVersionChecker(),
getFlowControllerInfo() );
+ PageFlowChecker.this.getRuntimeVersionChecker(),
PageFlowChecker.this.getFlowControllerInfo() );
addMemberType( NESTED_ATTR, new AnnotationMemberType( null, this )
);
addMemberType( SINGLETON_ATTR, new SingletonAttrType() );
}
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties
Tue Aug 24 16:20:52 2004
@@ -141,3 +141,6 @@
warning.using-default-display-name = \
This rule uses the default message and does not provide a first argument, and
the parent {0} annotation does not
specify a display name. A default display name will be used.
+
+error.multiple-default-message-resources = \
+There may only be one default message resource bundle. All others must
specify the {0} attribute.
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ActionGrammar.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ActionGrammar.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ActionGrammar.java
Tue Aug 24 16:20:52 2004
@@ -29,7 +29,7 @@
public class ActionGrammar
- extends AnnotationGrammar
+ extends BaseFlowControllerGrammar
{
private static String[][] MUTUALLY_EXCLUSIVE_ATTRS = { {
ROLES_ALLOWED_ATTR, LOGIN_REQUIRED_ATTR } };
@@ -37,7 +37,7 @@
public ActionGrammar( AnnotationProcessorEnvironment env, Diagnostics
diags,
RuntimeVersionChecker rvc, FlowControllerInfo fcInfo
)
{
- super( env, diags, null, rvc );
+ super( env, diags, null, rvc, fcInfo );
addMemberType( LOGIN_REQUIRED_ATTR, new AnnotationMemberType( null,
this ) );
addMemberType( ROLES_ALLOWED_ATTR, new AnnotationMemberType( null,
this ) );
Added:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/BaseFlowControllerGrammar.java
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/BaseFlowControllerGrammar.java
Tue Aug 24 16:20:52 2004
@@ -0,0 +1,44 @@
+/*
+ * B E A S Y S T E M S
+ * Copyright 2002-2004 BEA Systems, Inc.
+ *
+ * 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.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.netui.compiler.grammar;
+
+import org.apache.beehive.netui.compiler.AnnotationGrammar;
+import org.apache.beehive.netui.compiler.Diagnostics;
+import org.apache.beehive.netui.compiler.RuntimeVersionChecker;
+import org.apache.beehive.netui.compiler.FlowControllerInfo;
+import com.sun.mirror.apt.AnnotationProcessorEnvironment;
+
+public class BaseFlowControllerGrammar
+ extends AnnotationGrammar
+{
+ private FlowControllerInfo _flowControllerInfo;
+
+ public BaseFlowControllerGrammar( AnnotationProcessorEnvironment env,
Diagnostics diags,
+ String requiredRuntimeVersion,
RuntimeVersionChecker runtimeVersionChecker,
+ FlowControllerInfo flowControllerInfo )
+ {
+ super( env, diags, requiredRuntimeVersion, runtimeVersionChecker );
+ _flowControllerInfo = flowControllerInfo;
+ }
+
+ protected FlowControllerInfo getFlowControllerInfo()
+ {
+ return _flowControllerInfo;
+ }
+}
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
Tue Aug 24 16:20:52 2004
@@ -42,7 +42,7 @@
public class CatchGrammar
- extends AnnotationGrammar
+ extends BaseFlowControllerGrammar
{
private static String[][] MUTUALLY_EXCLUSIVE_ATTRS = { { PATH_ATTR,
METHOD_ATTR } };
private static String[][] REQUIRED_ATTRS = { { TYPE_ATTR }, { PATH_ATTR,
METHOD_ATTR } };
@@ -54,7 +54,7 @@
RuntimeVersionChecker runtimeVersionChecker, String
annotationRootName,
FlowControllerInfo fcInfo )
{
- super( env, diags, requiredRuntimeVersion, runtimeVersionChecker );
+ super( env, diags, requiredRuntimeVersion, runtimeVersionChecker,
fcInfo );
_annotationRootName = annotationRootName; // the parent of the list
of @Jpf.Catch annotations.
addMemberType( METHOD_ATTR, new CatchTagMethodType() );
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
Tue Aug 24 16:20:52 2004
@@ -18,7 +18,6 @@
*/
package org.apache.beehive.netui.compiler.grammar;
-import org.apache.beehive.netui.compiler.AnnotationGrammar;
import org.apache.beehive.netui.compiler.RuntimeVersionChecker;
import org.apache.beehive.netui.compiler.AnnotationMemberType;
import org.apache.beehive.netui.compiler.FlowControllerInfo;
@@ -31,14 +30,14 @@
public class ControllerGrammar
- extends AnnotationGrammar
+ extends BaseFlowControllerGrammar
{
private static String[][] MUTUALLY_EXCLUSIVE_ATTRS = { {
ROLES_ALLOWED_ATTR, LOGIN_REQUIRED_ATTR } };
public ControllerGrammar( AnnotationProcessorEnvironment env, Diagnostics
diags, RuntimeVersionChecker rvc,
FlowControllerInfo fcInfo )
{
- super( env, diags, null, rvc );
+ super( env, diags, null, rvc, fcInfo );
addMemberType( LOGIN_REQUIRED_ATTR, new AnnotationMemberType( null,
this ) );
addMemberType( ROLES_ALLOWED_ATTR, new AnnotationMemberType( null,
this ) );
@@ -48,7 +47,7 @@
addMemberArrayGrammar( FORWARDS_ATTR, new ForwardGrammar( env, diags,
null, rvc, fcInfo ) );
addMemberArrayGrammar( CATCHES_ATTR, new CatchGrammar( env, diags,
null, rvc, CONTROLLER_TAG_NAME, fcInfo ) );
- addMemberArrayGrammar( MESSAGE_RESOURCES_ATTR, new
MessageResourcesGrammar( env, diags, null, rvc ) );
+ addMemberArrayGrammar( MESSAGE_RESOURCES_ATTR, new
MessageResourcesGrammar( env, diags, null, rvc, fcInfo ) );
addMemberArrayGrammar( VALIDATABLE_BEANS_ATTR, new
ValidationBeanGrammar( env, diags, rvc ) );
addMemberArrayGrammar( SIMPLE_ACTIONS_ATTR, new SimpleActionGrammar(
env, diags, rvc, fcInfo ) );
}
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ExceptionHandlerGrammar.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ExceptionHandlerGrammar.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ExceptionHandlerGrammar.java
Tue Aug 24 16:20:52 2004
@@ -40,12 +40,12 @@
public class ExceptionHandlerGrammar
- extends AnnotationGrammar
+ extends BaseFlowControllerGrammar
{
public ExceptionHandlerGrammar( AnnotationProcessorEnvironment env,
Diagnostics diags,
RuntimeVersionChecker
runtimeVersionChecker, FlowControllerInfo fcInfo )
{
- super( env, diags, null, runtimeVersionChecker );
+ super( env, diags, null, runtimeVersionChecker, fcInfo );
addMemberType( READONLY_ATTR, new AnnotationMemberType(
VERSION_8_SP2_STRING, this ) );
addMemberArrayGrammar( FORWARDS_ATTR, new
ExceptionHandlerForwardGrammar( fcInfo ) );
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
Tue Aug 24 16:20:52 2004
@@ -18,7 +18,6 @@
*/
package org.apache.beehive.netui.compiler.grammar;
-import org.apache.beehive.netui.compiler.AnnotationGrammar;
import org.apache.beehive.netui.compiler.RuntimeVersionChecker;
import org.apache.beehive.netui.compiler.AnnotationMemberType;
import org.apache.beehive.netui.compiler.CompilerUtils;
@@ -43,7 +42,7 @@
public class ForwardGrammar
- extends AnnotationGrammar
+ extends BaseFlowControllerGrammar
{
private static final String[][] NAVIGATE_TO_VALS = new String[][]
{
@@ -77,14 +76,11 @@
{ RESTORE_QUERY_STRING_ATTR, NAVIGATE_TO_ATTR }
};
- private FlowControllerInfo _fcInfo;
-
public ForwardGrammar( AnnotationProcessorEnvironment env, Diagnostics
diags, String requiredRuntimeVersion,
RuntimeVersionChecker runtimeVersionChecker,
FlowControllerInfo fcInfo )
{
- super( env, diags, requiredRuntimeVersion, runtimeVersionChecker );
- _fcInfo = fcInfo;
+ super( env, diags, requiredRuntimeVersion, runtimeVersionChecker,
fcInfo );
addMemberType( NAME_ATTR, getNameType() );
addMemberType( OUTPUT_FORM_BEAN_TYPE_ATTR, new TypeNameType( null,
false, null, this ) );
@@ -166,7 +162,7 @@
String actionName = ( String ) value.getValue();
String formTypeName = formBeanType != null ?
formBeanType.getDeclaration().getQualifiedName() : null;
- _fcInfo.addReturnAction( actionName, formTypeName );
+ getFlowControllerInfo().addReturnAction( actionName, formTypeName
);
}
//
@@ -178,7 +174,7 @@
if ( uri.endsWith( JPF_FILE_EXTENSION_DOT ) && uri.indexOf( ':' )
== -1 )
{
- _fcInfo.addReferencedPageFlowURI( uri );
+ getFlowControllerInfo().addReferencedPageFlowURI( uri );
}
}
}
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/MessageResourcesGrammar.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/MessageResourcesGrammar.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/MessageResourcesGrammar.java
Tue Aug 24 16:20:52 2004
@@ -21,22 +21,30 @@
import org.apache.beehive.netui.compiler.AnnotationGrammar;
import org.apache.beehive.netui.compiler.RuntimeVersionChecker;
import org.apache.beehive.netui.compiler.Diagnostics;
+import org.apache.beehive.netui.compiler.CompilerUtils;
+import org.apache.beehive.netui.compiler.FlowControllerInfo;
import com.sun.mirror.apt.AnnotationProcessorEnvironment;
+import com.sun.mirror.declaration.AnnotationMirror;
+import com.sun.mirror.declaration.MemberDeclaration;
import static org.apache.beehive.netui.compiler.JpfLanguageConstants.NAME_ATTR;
import static
org.apache.beehive.netui.compiler.JpfLanguageConstants.MESSAGE_RESOURCES_ATTR;
import static
org.apache.beehive.netui.compiler.JpfLanguageConstants.BUNDLE_KEY_ATTR;
+import java.util.Map;
+import java.util.List;
+
public class MessageResourcesGrammar
- extends AnnotationGrammar
+ extends BaseFlowControllerGrammar
{
private static String[][] REQUIRED_ATTRS = { { NAME_ATTR } };
public MessageResourcesGrammar( AnnotationProcessorEnvironment env,
Diagnostics diags,
- String requiredRuntimeVersion,
RuntimeVersionChecker runtimeVersionChecker )
+ String requiredRuntimeVersion,
RuntimeVersionChecker runtimeVersionChecker,
+ FlowControllerInfo fcInfo )
{
- super( env, diags, requiredRuntimeVersion, runtimeVersionChecker );
+ super( env, diags, requiredRuntimeVersion, runtimeVersionChecker,
fcInfo );
addMemberType( NAME_ATTR,
new UniqueValueType( MESSAGE_RESOURCES_ATTR, false,
false, null, this ) );
@@ -55,6 +63,32 @@
public String[][] getAttrDependencies()
{
+ return null;
+ }
+
+ protected Object onEndCheck( AnnotationMirror annotation,
AnnotationMirror[] parentAnnotations,
+ MemberDeclaration classMember, Map
checkResults )
+ {
+ String name = CompilerUtils.getString( annotation, NAME_ATTR, false );
+ String bundleKey = CompilerUtils.getString( annotation,
BUNDLE_KEY_ATTR, false );
+
+ if ( bundleKey.length() == 0 )
+ {
+ List< AnnotationMirror > peerAnnotations =
+ CompilerUtils.getAnnotationArray( parentAnnotations[0],
MESSAGE_RESOURCES_ATTR, false );
+
+ for ( AnnotationMirror peerAnnotation : peerAnnotations )
+ {
+ if ( ! CompilerUtils.annotationsAreEqual( annotation,
peerAnnotation )
+ && CompilerUtils.getString( peerAnnotation,
BUNDLE_KEY_ATTR, false ).length() == 0 )
+ {
+ addError( annotation,
"error.multiple-default-message-resources", BUNDLE_KEY_ATTR );
+ }
+ }
+ }
+
+ getFlowControllerInfo().addMessageResource( bundleKey, name );
+
return null;
}
}
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/SimpleActionGrammar.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/SimpleActionGrammar.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/SimpleActionGrammar.java
Tue Aug 24 16:20:52 2004
@@ -34,7 +34,7 @@
public class SimpleActionGrammar
- extends AnnotationGrammar
+ extends BaseFlowControllerGrammar
{
private static String[][] MUTUALLY_EXCLUSIVE_ATTRS = { {
ROLES_ALLOWED_ATTR, LOGIN_REQUIRED_ATTR } };
@@ -44,7 +44,7 @@
public SimpleActionGrammar( AnnotationProcessorEnvironment env,
Diagnostics diags, RuntimeVersionChecker rvc,
FlowControllerInfo fcInfo )
{
- super( env, diags, VERSION_9_0_STRING, rvc );
+ super( env, diags, VERSION_9_0_STRING, rvc, fcInfo );
addMemberType( LOGIN_REQUIRED_ATTR, new AnnotationMemberType( null,
this ) );
addMemberType( ROLES_ALLOWED_ATTR, new AnnotationMemberType( null,
this ) );
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ValidationFieldGrammar.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ValidationFieldGrammar.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ValidationFieldGrammar.java
Tue Aug 24 16:20:52 2004
@@ -29,13 +29,12 @@
import static org.apache.beehive.netui.compiler.JpfLanguageConstants.*;
-import java.util.List;
-
public class ValidationFieldGrammar
extends AnnotationGrammar
{
private static String[][] REQUIRED_ATTRS = { { PROPERTY_NAME_ATTR } };
+ private static String[][] MUTUALLY_EXCLUSIVE_ATTRS = { {
DISPLAY_NAME_ATTR, DISPLAY_NAME_KEY_ATTR } };
public ValidationFieldGrammar( AnnotationProcessorEnvironment env,
Diagnostics diags, RuntimeVersionChecker rvc )
@@ -67,6 +66,11 @@
public String[][] getRequiredAttrs()
{
return REQUIRED_ATTRS;
+ }
+
+ public String[][] getMutuallyExclusiveAttrs()
+ {
+ return MUTUALLY_EXCLUSIVE_ATTRS;
}
protected boolean onBeginCheck( AnnotationMirror annotation,
AnnotationMirror[] parentAnnotations,
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
Tue Aug 24 16:20:52 2004
@@ -140,8 +140,8 @@
if ( stringValue.endsWith( JPF_FILE_EXTENSION_DOT ) )
{
String className = stringValue.substring( 0,
stringValue.length() - JPF_FILE_EXTENSION_DOT.length() );
- className =
classMember.getDeclaringType().getPackage().getQualifiedName()
- + '.' + className.replace( '/', '.' );
+ String pkg =
classMember.getDeclaringType().getPackage().getQualifiedName();
+ className = ( pkg.length() > 0 ? pkg + '.' : "" ) +
className.replace( '/', '.' );
TypeDeclaration type = getEnv().getTypeDeclaration( className
);
fileToCheck = type != null ? CompilerUtils.getOriginalFile(
type ) : null;
if ( fileToCheck == null ) fileExists = false;
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
Tue Aug 24 16:20:52 2004
@@ -18,8 +18,9 @@
*/
package org.apache.beehive.netui.pageflow;
-import org.apache.struts.upload.MultipartRequestWrapper;
import org.apache.beehive.netui.pageflow.internal.JavaControlUtils;
+import org.apache.beehive.netui.pageflow.scoping.ScopedRequest;
+import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
import org.apache.beehive.netui.util.logging.Logger;
import org.apache.beehive.controls.api.context.ControlBeanContext;
import org.apache.beehive.controls.api.properties.PropertyMap;
@@ -133,24 +134,10 @@
*/
private void initJavaControls( HttpServletRequest request,
HttpServletResponse response )
{
- //
- // First, unwrap the request if it's a MultipartRequestWrapper.
MultipartRequestWrapper is a Struts
- // class that does *not* extend HttpServletRequestWrapper, and which
thus causes KNEX pain when it
- // tries to unwrap it.
- //
- if ( request instanceof MultipartRequestWrapper )
- {
- request = ( ( MultipartRequestWrapper ) request ).getRequest();
- }
-
Map controlFields =
JavaControlUtils.getAccessibleControlFieldAnnotations( getClass() );
+ if ( controlFields.isEmpty() ) return;
- if ( controlFields.isEmpty() )
- {
- return;
- }
-
- String className = getClass().getName();
+ request = PageFlowUtils.unwrapMultipart( request );
ControlBeanContext beanContext =
JavaControlUtils.getControlBeanContext( request, response, false );
assert beanContext != null : "ControlBeanContext was not initialized
by PageFlowRequestProcessor";
@@ -160,7 +147,7 @@
Field field = ( Field ) entry.getKey();
//
- // We don't want the field to be transient -- the proxy should not
go away when this
+ // We don't want the field to be transient -- the reference should
not go away when this
// object is serialized/deserialized. The checker should enforce
this.
//
assert ! Modifier.isTransient( field.getModifiers() ) :
field.getName();
@@ -177,8 +164,8 @@
PropertyMap propertyMap = ( PropertyMap ) entry.getValue();
Class fieldType = field.getType();
+ String controlID = getControlID( field, request );
boolean isControlBeanClass = ! fieldType.isInterface();
- String controlID = className + '.' + field.getName();
ControlBean bean = JavaControlUtils.createControl(
fieldType.getName(), isControlBeanClass,
controlID, propertyMap, beanContext );
field.set( this, bean );
@@ -195,6 +182,18 @@
}
}
+ private String getControlID( Field controlField, HttpServletRequest
request )
+ {
+ StringBuilder controlID = new StringBuilder();
+ ScopedRequest scopedRequest = ScopedServletUtils.unwrapRequest(
request );
+
+ // If this is a ScopedRequest, include the request's scope key in the
control ID.
+ if ( scopedRequest != null ) controlID.append(
scopedRequest.getScopeKey() ).append( ':' );
+ controlID.append( getClass().getName() ).append( '.' );
+ controlID.append( controlField.getName() );
+ return controlID.toString();
+ }
+
/**
* Clean up all member variables that are Java Controls.
*/
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/Handler.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/Handler.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/Handler.java
Tue Aug 24 16:20:52 2004
@@ -28,8 +28,15 @@
{
/**
* Initialize.
+ *
* @param servletContext the ServletContext for the webapp that is
creating this object.
*/
public void init( ServletContext servletContext );
+ /**
+ * Reinitialize, normally used to reconsitute transient data that was lost
during serialization.
+ *
+ * @param servletContext the ServletContext for the webapp that is
reinitializing this object.
+ */
+ public void reinit( ServletContext servletContext );
}
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChain.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChain.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChain.java
Tue Aug 24 16:20:52 2004
@@ -27,6 +27,7 @@
import java.util.Map;
import java.util.ArrayList;
import java.util.concurrent.ConcurrentHashMap;
+import java.io.Serializable;
/**
@@ -35,6 +36,7 @@
* @exclude
*/
public class ActionInterceptorChain
+ implements Serializable
{
private ActionInterceptor[] _actionInterceptors;
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChainConfig.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChainConfig.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorChainConfig.java
Tue Aug 24 16:20:52 2004
@@ -18,11 +18,14 @@
*/
package org.apache.beehive.netui.pageflow.interceptor;
+import java.io.Serializable;
+
/**
* @exclude
*/
class ActionInterceptorChainConfig
+ implements Serializable
{
private ActionInterceptorConfig[] _interceptors;
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorConfig.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorConfig.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorConfig.java
Tue Aug 24 16:20:52 2004
@@ -18,11 +18,14 @@
*/
package org.apache.beehive.netui.pageflow.interceptor;
+import java.io.Serializable;
+
/**
* Configuration object used to initialize an [EMAIL PROTECTED]
ActionInterceptor}.
*/
public class ActionInterceptorConfig
+ implements Serializable
{
private String _interceptorClass;
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorsConfig.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorsConfig.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptorsConfig.java
Tue Aug 24 16:20:52 2004
@@ -21,11 +21,14 @@
import org.apache.beehive.netui.util.config.ConfigUtil;
import org.apache.beehive.netui.util.config.bean.PageflowActionInterceptors;
+import java.io.Serializable;
+
/**
* @exclude
*/
class ActionInterceptorsConfig
+ implements Serializable
{
private ActionInterceptorChainConfig _beforeAllActions;
private ActionInterceptorChainConfig _afterAllActions;
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/ContextCache.java
Tue Aug 24 16:20:52 2004
@@ -33,6 +33,8 @@
import javax.servlet.ServletContext;
import java.io.Serializable;
+import java.util.List;
+import java.util.ArrayList;
public class ContextCache implements Serializable, PageFlowConstants
@@ -53,6 +55,7 @@
private LoginHandler _loginHandler = null;
private ReloadableClassHandler _reloadableClassHandler = null;
private ExceptionsHandler _exceptionsHandler = null;
+ private transient ServletContext _servletContext;
public ForwardRedirectHandler getForwardRedirectHandler()
@@ -95,9 +98,19 @@
return init( servletContext );
}
+ cache.reinit( servletContext );
return cache;
}
+ private void reinit( ServletContext servletContext )
+ {
+ _servletContext = servletContext;
+ _exceptionsHandler.reinit( servletContext );
+ _forwardRedirectHandler.reinit( servletContext );
+ _loginHandler.reinit( servletContext );
+ _reloadableClassHandler.reinit( servletContext );
+ }
+
public static ContextCache init( ServletContext servletContext )
{
ContextCache cache = new ContextCache( servletContext );
@@ -107,6 +120,8 @@
private ContextCache( ServletContext servletContext )
{
+ _servletContext = servletContext;
+
String doSecureForwards = servletContext.getInitParameter(
SECURE_FORWARDS_PARAM );
_secureForwards = ( Boolean.TRUE.toString().equals( doSecureForwards )
);
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultHandler.java
Tue Aug 24 16:20:52 2004
@@ -21,15 +21,16 @@
import org.apache.beehive.netui.pageflow.handler.Handler;
import javax.servlet.ServletContext;
+import java.io.Serializable;
/**
* Default implementation of the base Handler interface. Simply stores a
reference to the ServletContext.
*/
public class DefaultHandler
- implements Handler
+ implements Handler, Serializable
{
- private ServletContext _servletContext;
+ private transient ServletContext _servletContext;
/**
@@ -44,6 +45,12 @@
protected final ServletContext getServletContext()
{
+ assert _servletContext != null;
return _servletContext;
+ }
+
+ public void reinit( ServletContext servletContext )
+ {
+ _servletContext = servletContext;
}
}
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultLoginHandler.java
Tue Aug 24 16:20:52 2004
@@ -32,7 +32,8 @@
* Implements default J2EE web-tier login handling.
*/
public class DefaultLoginHandler
- implements LoginHandler, Serializable
+ extends DefaultHandler
+ implements LoginHandler, Serializable
{
public void init( ServletContext servletContext )
{
Modified: incubator/beehive/trunk/netui/test/webapps/jsf/jsfWeb/WEB-INF/web.xml
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/jsf/jsfWeb/WEB-INF/web.xml
(original)
+++ incubator/beehive/trunk/netui/test/webapps/jsf/jsfWeb/WEB-INF/web.xml
Tue Aug 24 16:20:52 2004
@@ -11,12 +11,10 @@
<param-value>true</param-value>
</context-param>
-<!--
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
--->
<context-param>
<param-name>com.sun.faces.validateXml</param-name>
@@ -56,12 +54,10 @@
<filter-class>org.apache.beehive.netui.pageflow.PageFlowJspFilter</filter-class>
</filter>
-<!--
<filter-mapping>
<filter-name>TestRecorderFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
--->
<filter-mapping>
<filter-name>PageFlowJspFilter</filter-name>
Modified:
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/config/testRecorder-tests.xml
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/config/testRecorder-tests.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/config/testRecorder-tests.xml
Tue Aug 24 16:20:52 2004
@@ -71,5 +71,13 @@
<category>drt</category>
</categories>
</test>
+ <test>
+ <name>JpfFaces</name>
+ <description>Test of basic JSF / page flow integration, including
raising actions and passing forms from JSF pages and backing
files.</description>
+ <webapp>jsfWeb</webapp>
+ <categories>
+ <category>drt</category>
+ </categories>
+ </test>
</tests>
</testDefinitions>
Added:
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/tests/JpfFaces.xml
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/jsf/testRecorder/tests/JpfFaces.xml
Tue Aug 24 16:20:52 2004
@@ -0,0 +1,816 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+ <ses:sessionName>JpfFaces</ses:sessionName>
+ <ses:tester>rich</ses:tester>
+ <ses:startDate>23 Aug 2004, 01:32:40.097 PM MDT</ses:startDate>
+ <ses:description>Test of basic JSF / page flow integration, including
raising actions and passing forms from JSF pages and backing
files.</ses:description>
+ <ses:tests>
+ <ses:test>
+ <ses:testNumber>1</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+ <ses:uri>/jsfWeb/jpfFaces/JpfFacesController.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:cookie>
+ </ses:cookies>
+ <ses:headers>
+ <ses:header>
+ <ses:name>accept</ses:name>
+
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-charset</ses:name>
+ <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-encoding</ses:name>
+ <ses:value>gzip,deflate</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-language</ses:name>
+ <ses:value>en-us,en;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>connection</ses:name>
+ <ses:value>keep-alive</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>cookie</ses:name>
+
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><html>
+ <head> <title>Page Flow / JSF</title> </head>
+ <body bgcolor="white">
+ <h3>Page Flow / JSF: page 1</h3>
+
+ <form id="go2form" method="post"
action="/jsfWeb/jpfFaces/page1.faces"
enctype="application/x-www-form-urlencoded">
+
+ <input id="go2form:foo" type="text" name="go2form:foo" />
+ <br/>
+ <a id="go2form:go2button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go2button';
document.forms['go2form'].submit(); return false;">go to page2 (pass a
form)</a>
+ - type "stay" to make the CommandHandler return null
+ <br/>
+ <a id="go2form:go3button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go3button';
document.forms['go2form'].submit(); return false;">go to page3 (no form)</a>
+ <br/>
+ <a id="go2form:go4button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go4button';
document.forms['go2form'].submit(); return false;">go to page4 (no
CommandHandler)</a>
+ <input type="hidden" name="com.sun.faces.VIEW"
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA=="
/>
+ <input type="hidden" name="go2form" value="go2form" /><input
type="hidden" name="go2form:_idcl" /></form>
+
+</HTML></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>2</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+ <ses:uri>/jsfWeb/jpfFaces/page1.faces</ses:uri>
+ <ses:method>POST</ses:method>
+ <ses:parameters>
+ <ses:parameter>
+ <ses:name>com.sun.faces.VIEW</ses:name>
+
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA==</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go2form</ses:name>
+ <ses:value>go2form</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go2form:_idcl</ses:name>
+ <ses:value>go2form:go2button</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go2form:foo</ses:name>
+ <ses:value>stay</ses:value>
+ </ses:parameter>
+ </ses:parameters>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:cookie>
+ </ses:cookies>
+ <ses:headers>
+ <ses:header>
+ <ses:name>accept</ses:name>
+
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-charset</ses:name>
+ <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-encoding</ses:name>
+ <ses:value>gzip,deflate</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-language</ses:name>
+ <ses:value>en-us,en;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>connection</ses:name>
+ <ses:value>keep-alive</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-length</ses:name>
+ <ses:value>3700</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-type</ses:name>
+ <ses:value>application/x-www-form-urlencoded</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>cookie</ses:name>
+
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>referer</ses:name>
+
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/JpfFacesController.jpf</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><html>
+ <head> <title>Page Flow / JSF</title> </head>
+ <body bgcolor="white">
+ <h3>Page Flow / JSF: page 1</h3>
+
+ <form id="go2form" method="post"
action="/jsfWeb/jpfFaces/page1.faces"
enctype="application/x-www-form-urlencoded">
+
+ <input id="go2form:foo" type="text" name="go2form:foo"
value="stay" />
+ <br/>
+ <a id="go2form:go2button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go2button';
document.forms['go2form'].submit(); return false;">go to page2 (pass a
form)</a>
+ - type "stay" to make the CommandHandler return null
+ <br/>
+ <a id="go2form:go3button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go3button';
document.forms['go2form'].submit(); return false;">go to page3 (no form)</a>
+ <br/>
+ <a id="go2form:go4button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go4button';
document.forms['go2form'].submit(); return false;">go to page4 (no
CommandHandler)</a>
+ <input type="hidden" name="com.sun.faces.VIEW"
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA=="
/>
+ <input type="hidden" name="go2form" value="go2form" /><input
type="hidden" name="go2form:_idcl" /></form>
+
+</HTML></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>3</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+ <ses:uri>/jsfWeb/jpfFaces/page1.faces</ses:uri>
+ <ses:method>POST</ses:method>
+ <ses:parameters>
+ <ses:parameter>
+ <ses:name>com.sun.faces.VIEW</ses:name>
+
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA==</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go2form</ses:name>
+ <ses:value>go2form</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go2form:_idcl</ses:name>
+ <ses:value>go2form:go2button</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go2form:foo</ses:name>
+ <ses:value>no stay</ses:value>
+ </ses:parameter>
+ </ses:parameters>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:cookie>
+ </ses:cookies>
+ <ses:headers>
+ <ses:header>
+ <ses:name>accept</ses:name>
+
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-charset</ses:name>
+ <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-encoding</ses:name>
+ <ses:value>gzip,deflate</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-language</ses:name>
+ <ses:value>en-us,en;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>connection</ses:name>
+ <ses:value>keep-alive</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-length</ses:name>
+ <ses:value>3703</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-type</ses:name>
+ <ses:value>application/x-www-form-urlencoded</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>cookie</ses:name>
+
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>referer</ses:name>
+
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/page1.faces</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><html>
+ <head> <title>Page Flow / JSF</title> </head>
+ <body bgcolor="white">
+ <h3>Page Flow / JSF: page 2</h3>
+
+ Message from page flow: <i><span id="msg">got form; bar was 'no
stay'</span></i>
+ <br/>
+
+ <form id="go1form" method="post"
action="/jsfWeb/jpfFaces/page2.faces"
enctype="application/x-www-form-urlencoded">
+
+ <input id="go1form:go1button" type="submit"
name="go1form:go1button" value="back to page 1" />
+ <input type="hidden" name="com.sun.faces.VIEW"
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAJ3BAAAAApzcQB+AABwdAApamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbE91dHB1dFRleHRwdAADbXNnc3EAfgAAc3EAfgAFAAAAAXcEAAAACnNxAH4AAHB0ACxqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sQ29tbWFuZEJ1dHRvbnB0AAlnbzFidXR0b254dAAjamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbEZvcm1wdAAHZ28xZm9ybXh0ACBqYXZheC5mYWNlcy5jb21wb25lbnQuVUlWaWV3Um9vdHBwdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAAAnVxAH4AEgAAAAR1cQB+ABIAAAAIc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAF0ACRqYXZheC5mYWNlcy53ZWJhcHAuQ1VSUkVOVF9WSUVXX1JPT1RxAH4AGHhwcHBzcgARamF2YS5sYW5nLkJvb2xlYW7NIHKA1Zz67gIAAVoABXZhbHVleHABc3EAfgAZAHBwdAAKSFRNTF9CQVNJQ3QAEy9qcGZGYWNlcy9wYWdlMi5qc3BzcgAQamF2YS51dGlsLkxvY2FsZX74EWCcMPnsAgAESQAIaGFzaGNvZGVMAAdjb3VudHJ5cQB+AAJMAAhsYW5ndWFnZXEAfgACTAAHdmFyaWFudHEAfgACeHD/////dAAAdAACZW5xAH4AIHVxAH4AEgAAAAJ1cQB+ABIAAAACdXEAfgASAAAABnVxAH4AEgAAAAN1cQB+ABIAAAAIc3EAfgAWP0AAAAAAAAx3CAAAABAAAAAAeHVxAH4AEgAAAAJ1cgATW0xqYXZhLmxhbmcuU3RyaW5nO63SVufpHXtHAgAAeHAAAAABdAAFdmFsdWV1cQB+ABIAAAABc3IAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5TdGF0ZUhvbGRlclNhdmVyWcqzPZOczU0CAAJMAAljbGFzc05hbWVxAH4AAkwACnNhdmVkU3RhdGV0ABJMamF2YS9sYW5nL09iamVjdDt4cHQAIWNvbS5zdW4uZmFjZXMuZWwuVmFsdWVCaW5kaW5nSW1wbHQAFHJlcXVlc3RTY29wZS5tZXNzYWdldAADbXNncQB+AAlxAH4AGnEAfgAbdAAQamF2YXguZmFjZXMuVGV4dHBwcHEAfgAacQB+ABtwcHB1cQB+ABIAAAAAdXEAfgASAAAAAnVxAH4AEgAAABZ1cQB+ABIAAAAIc3EAfgAWP0AAAAAAAAx3CAAAABAAAAABdAAgamF2YXguZmFjZXMud2ViYXBwLkNPTVBPTkVOVF9JRFNzcQB+AAUAAAABdwQAAAAKcQB+AA54eHB0AAdnbzFmb3JtcQB+ABBxAH4AGnEAfgAbdAAQamF2YXguZmFjZXMuRm9ybXBwcHB0ACFhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRwcHBwcHBwcHBwcHBwcHBwcHVxAH4AEgAAAAF1cQB+ABIAAAACdXEAfgASAAAAHXVxAH4AEgAAAAZ1cQB+ABIAAAAIc3EAfgAWP0AAAAAAAAx3CAAAABAAAAAAeHB0ABFnbzFmb3JtOmdvMWJ1dHRvbnEAfgAOcQB+ABpxAH4AG3QAEmphdmF4LmZhY2VzLkJ1dHRvbnBzcQB+AC10AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ28xcHEAfgAbcQB+ABt0AA5iYWNrIHRvIHBhZ2UgMXBwcHEAfgAbcQB+ABtwcHBwcHBwcHBwcHBwcHBwcQB+ABtxAH4AG3BwcHB0AAZzdWJtaXR1cQB+ABIAAAAA"
/>
+ <input type="hidden" name="go1form" value="go1form" /></form>
+
+</HTML></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>4</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+ <ses:uri>/jsfWeb/jpfFaces/page2.faces</ses:uri>
+ <ses:method>POST</ses:method>
+ <ses:parameters>
+ <ses:parameter>
+ <ses:name>com.sun.faces.VIEW</ses:name>
+
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAJ3BAAAAApzcQB+AABwdAApamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbE91dHB1dFRleHRwdAADbXNnc3EAfgAAc3EAfgAFAAAAAXcEAAAACnNxAH4AAHB0ACxqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sQ29tbWFuZEJ1dHRvbnB0AAlnbzFidXR0b254dAAjamF2YXguZmFjZXMuY29tcG9uZW50Lmh0bWwuSHRtbEZvcm1wdAAHZ28xZm9ybXh0ACBqYXZheC5mYWNlcy5jb21wb25lbnQuVUlWaWV3Um9vdHBwdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAAAnVxAH4AEgAAAAR1cQB+ABIAAAAIc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAF0ACRqYXZheC5mYWNlcy53ZWJhcHAuQ1VSUkVOVF9WSUVXX1JPT1RxAH4AGHhwcHBzcgARamF2YS5sYW5nLkJvb2xlYW7NIHKA1Zz67gIAAVoABXZhbHVleHABc3EAfgAZAHBwdAAKSFRNTF9CQVNJQ3QAEy9qcGZGYWNlcy9wYWdlMi5qc3BzcgAQamF2YS51dGlsLkxvY2FsZX74EWCcMPnsAgAESQAIaGFzaGNvZGVMAAdjb3VudHJ5cQB+AAJMAAhsYW5ndWFnZXEAfgACTAAHdmFyaWFudHEAfgACeHD/////dAAAdAACZW5xAH4AIHVxAH4AEgAAAAJ1cQB+ABIAAAACdXEAfgASAAAABnVxAH4AEgAAAAN1cQB+ABIAAAAIc3EAfgAWP0AAAAAAAAx3CAAAABAAAAAAeHVxAH4AEgAAAAJ1cgATW0xqYXZhLmxhbmcuU3RyaW5nO63SVufpHXtHAgAAeHAAAAABdAAFdmFsdWV1cQB+ABIAAAABc3IAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5TdGF0ZUhvbGRlclNhdmVyWcqzPZOczU0CAAJMAAljbGFzc05hbWVxAH4AAkwACnNhdmVkU3RhdGV0ABJMamF2YS9sYW5nL09iamVjdDt4cHQAIWNvbS5zdW4uZmFjZXMuZWwuVmFsdWVCaW5kaW5nSW1wbHQAFHJlcXVlc3RTY29wZS5tZXNzYWdldAADbXNncQB+AAlxAH4AGnEAfgAbdAAQamF2YXguZmFjZXMuVGV4dHBwcHEAfgAacQB+ABtwcHB1cQB+ABIAAAAAdXEAfgASAAAAAnVxAH4AEgAAABZ1cQB+ABIAAAAIc3EAfgAWP0AAAAAAAAx3CAAAABAAAAABdAAgamF2YXguZmFjZXMud2ViYXBwLkNPTVBPTkVOVF9JRFNzcQB+AAUAAAABdwQAAAAKcQB+AA54eHB0AAdnbzFmb3JtcQB+ABBxAH4AGnEAfgAbdAAQamF2YXguZmFjZXMuRm9ybXBwcHB0ACFhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRwcHBwcHBwcHBwcHBwcHBwcHVxAH4AEgAAAAF1cQB+ABIAAAACdXEAfgASAAAAHXVxAH4AEgAAAAZ1cQB+ABIAAAAIc3EAfgAWP0AAAAAAAAx3CAAAABAAAAAAeHB0ABFnbzFmb3JtOmdvMWJ1dHRvbnEAfgAOcQB+ABpxAH4AG3QAEmphdmF4LmZhY2VzLkJ1dHRvbnBzcQB+AC10AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ28xcHEAfgAbcQB+ABt0AA5iYWNrIHRvIHBhZ2UgMXBwcHEAfgAbcQB+ABtwcHBwcHBwcHBwcHBwcHBwcQB+ABtxAH4AG3BwcHB0AAZzdWJtaXR1cQB+ABIAAAAA</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go1form</ses:name>
+ <ses:value>go1form</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go1form:go1button</ses:name>
+ <ses:value>back to page 1</ses:value>
+ </ses:parameter>
+ </ses:parameters>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:cookie>
+ </ses:cookies>
+ <ses:headers>
+ <ses:header>
+ <ses:name>accept</ses:name>
+
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-charset</ses:name>
+ <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-encoding</ses:name>
+ <ses:value>gzip,deflate</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-language</ses:name>
+ <ses:value>en-us,en;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>connection</ses:name>
+ <ses:value>keep-alive</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-length</ses:name>
+ <ses:value>2384</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-type</ses:name>
+ <ses:value>application/x-www-form-urlencoded</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>cookie</ses:name>
+
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>referer</ses:name>
+
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/page1.faces</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><html>
+ <head> <title>Page Flow / JSF</title> </head>
+ <body bgcolor="white">
+ <h3>Page Flow / JSF: page 1</h3>
+
+ <form id="go2form" method="post"
action="/jsfWeb/jpfFaces/page1.faces"
enctype="application/x-www-form-urlencoded">
+
+ <input id="go2form:foo" type="text" name="go2form:foo" />
+ <br/>
+ <a id="go2form:go2button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go2button';
document.forms['go2form'].submit(); return false;">go to page2 (pass a
form)</a>
+ - type "stay" to make the CommandHandler return null
+ <br/>
+ <a id="go2form:go3button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go3button';
document.forms['go2form'].submit(); return false;">go to page3 (no form)</a>
+ <br/>
+ <a id="go2form:go4button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go4button';
document.forms['go2form'].submit(); return false;">go to page4 (no
CommandHandler)</a>
+ <input type="hidden" name="com.sun.faces.VIEW"
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA=="
/>
+ <input type="hidden" name="go2form" value="go2form" /><input
type="hidden" name="go2form:_idcl" /></form>
+
+</HTML></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>5</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+ <ses:uri>/jsfWeb/jpfFaces/page1.faces</ses:uri>
+ <ses:method>POST</ses:method>
+ <ses:parameters>
+ <ses:parameter>
+ <ses:name>com.sun.faces.VIEW</ses:name>
+
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA==</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go2form</ses:name>
+ <ses:value>go2form</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go2form:_idcl</ses:name>
+ <ses:value>go2form:go3button</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go2form:foo</ses:name>
+ <ses:value/>
+ </ses:parameter>
+ </ses:parameters>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:cookie>
+ </ses:cookies>
+ <ses:headers>
+ <ses:header>
+ <ses:name>accept</ses:name>
+
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-charset</ses:name>
+ <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-encoding</ses:name>
+ <ses:value>gzip,deflate</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-language</ses:name>
+ <ses:value>en-us,en;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>connection</ses:name>
+ <ses:value>keep-alive</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-length</ses:name>
+ <ses:value>3696</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-type</ses:name>
+ <ses:value>application/x-www-form-urlencoded</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>cookie</ses:name>
+
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>referer</ses:name>
+
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/page2.faces</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><html>
+ <head> <title>Page Flow / JSF</title> </head>
+ <body bgcolor="white">
+ <h3>Page Flow / JSF: page 3</h3>
+
+ <form id="go1form" method="post"
action="/jsfWeb/jpfFaces/page3.faces"
enctype="application/x-www-form-urlencoded">
+
+ <input id="go1form:go1button" type="submit"
name="go1form:go1button" value="back to page 1" />
+ <input type="hidden" name="com.sun.faces.VIEW"
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAABdwQAAAAKc3EAfgAAcHQALGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kQnV0dG9ucHQACWdvMWJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzFmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAPAAAABHVxAH4ADwAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAVeHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+ABYAcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UzLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAddXEAfgAPAAAAAXVxAH4ADwAAAAJ1cQB+AA8AAAAWdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAAAXcEAAAACnEAfgALeHhwdAAHZ28xZm9ybXEAfgANcQB+ABdxAH4AGHQAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+AA8AAAABdXEAfgAPAAAAAnVxAH4ADwAAAB11cQB+AA8AAAAGdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28xZm9ybTpnbzFidXR0b25xAH4AC3EAfgAXcQB+ABh0ABJqYXZheC5mYWNlcy5CdXR0b25wc3IAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5TdGF0ZUhvbGRlclNhdmVyWcqzPZOczU0CAAJMAAljbGFzc05hbWVxAH4AAkwACnNhdmVkU3RhdGV0ABJMamF2YS9sYW5nL09iamVjdDt4cHQAKGNvbS5zdW4uZmFjZXMudXRpbC5Db25zdGFudE1ldGhvZEJpbmRpbmd0AANnbzFwcQB+ABhxAH4AGHQADmJhY2sgdG8gcGFnZSAxcHBwcQB+ABhxAH4AGHBwcHBwcHBwcHBwcHBwcHBxAH4AGHEAfgAYcHBwcHQABnN1Ym1pdHVxAH4ADwAAAAA="
/>
+ <input type="hidden" name="go1form" value="go1form" /></form>
+
+</HTML></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>6</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+ <ses:uri>/jsfWeb/jpfFaces/page3.faces</ses:uri>
+ <ses:method>POST</ses:method>
+ <ses:parameters>
+ <ses:parameter>
+ <ses:name>com.sun.faces.VIEW</ses:name>
+
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAABdwQAAAAKc3EAfgAAcHQALGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kQnV0dG9ucHQACWdvMWJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzFmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAPAAAABHVxAH4ADwAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAVeHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+ABYAcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UzLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAddXEAfgAPAAAAAXVxAH4ADwAAAAJ1cQB+AA8AAAAWdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAAAXcEAAAACnEAfgALeHhwdAAHZ28xZm9ybXEAfgANcQB+ABdxAH4AGHQAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+AA8AAAABdXEAfgAPAAAAAnVxAH4ADwAAAB11cQB+AA8AAAAGdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28xZm9ybTpnbzFidXR0b25xAH4AC3EAfgAXcQB+ABh0ABJqYXZheC5mYWNlcy5CdXR0b25wc3IAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5TdGF0ZUhvbGRlclNhdmVyWcqzPZOczU0CAAJMAAljbGFzc05hbWVxAH4AAkwACnNhdmVkU3RhdGV0ABJMamF2YS9sYW5nL09iamVjdDt4cHQAKGNvbS5zdW4uZmFjZXMudXRpbC5Db25zdGFudE1ldGhvZEJpbmRpbmd0AANnbzFwcQB+ABhxAH4AGHQADmJhY2sgdG8gcGFnZSAxcHBwcQB+ABhxAH4AGHBwcHBwcHBwcHBwcHBwcHBxAH4AGHEAfgAYcHBwcHQABnN1Ym1pdHVxAH4ADwAAAAA=</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go1form</ses:name>
+ <ses:value>go1form</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go1form:go1button</ses:name>
+ <ses:value>back to page 1</ses:value>
+ </ses:parameter>
+ </ses:parameters>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:cookie>
+ </ses:cookies>
+ <ses:headers>
+ <ses:header>
+ <ses:name>accept</ses:name>
+
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-charset</ses:name>
+ <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-encoding</ses:name>
+ <ses:value>gzip,deflate</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-language</ses:name>
+ <ses:value>en-us,en;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>connection</ses:name>
+ <ses:value>keep-alive</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-length</ses:name>
+ <ses:value>1938</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-type</ses:name>
+ <ses:value>application/x-www-form-urlencoded</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>cookie</ses:name>
+
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>referer</ses:name>
+
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/page1.faces</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><html>
+ <head> <title>Page Flow / JSF</title> </head>
+ <body bgcolor="white">
+ <h3>Page Flow / JSF: page 1</h3>
+
+ <form id="go2form" method="post"
action="/jsfWeb/jpfFaces/page1.faces"
enctype="application/x-www-form-urlencoded">
+
+ <input id="go2form:foo" type="text" name="go2form:foo" />
+ <br/>
+ <a id="go2form:go2button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go2button';
document.forms['go2form'].submit(); return false;">go to page2 (pass a
form)</a>
+ - type "stay" to make the CommandHandler return null
+ <br/>
+ <a id="go2form:go3button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go3button';
document.forms['go2form'].submit(); return false;">go to page3 (no form)</a>
+ <br/>
+ <a id="go2form:go4button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go4button';
document.forms['go2form'].submit(); return false;">go to page4 (no
CommandHandler)</a>
+ <input type="hidden" name="com.sun.faces.VIEW"
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA=="
/>
+ <input type="hidden" name="go2form" value="go2form" /><input
type="hidden" name="go2form:_idcl" /></form>
+
+</HTML></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>7</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+ <ses:uri>/jsfWeb/jpfFaces/page1.faces</ses:uri>
+ <ses:method>POST</ses:method>
+ <ses:parameters>
+ <ses:parameter>
+ <ses:name>com.sun.faces.VIEW</ses:name>
+
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA==</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go2form</ses:name>
+ <ses:value>go2form</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go2form:_idcl</ses:name>
+ <ses:value>go2form:go4button</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go2form:foo</ses:name>
+ <ses:value/>
+ </ses:parameter>
+ </ses:parameters>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:cookie>
+ </ses:cookies>
+ <ses:headers>
+ <ses:header>
+ <ses:name>accept</ses:name>
+
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-charset</ses:name>
+ <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-encoding</ses:name>
+ <ses:value>gzip,deflate</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-language</ses:name>
+ <ses:value>en-us,en;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>connection</ses:name>
+ <ses:value>keep-alive</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-length</ses:name>
+ <ses:value>3696</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-type</ses:name>
+ <ses:value>application/x-www-form-urlencoded</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>cookie</ses:name>
+
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>referer</ses:name>
+
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/page3.faces</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><html>
+ <head> <title>Page Flow / JSF</title> </head>
+ <body bgcolor="white">
+ <h3>Page Flow / JSF: page 4</h3>
+
+ <form id="go1form" method="post"
action="/jsfWeb/jpfFaces/page4.faces"
enctype="application/x-www-form-urlencoded">
+
+ <input id="go1form:go1button" type="submit"
name="go1form:go1button" value="back to page 1" />
+ <input type="hidden" name="com.sun.faces.VIEW"
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAABdwQAAAAKc3EAfgAAcHQALGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kQnV0dG9ucHQACWdvMWJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzFmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAPAAAABHVxAH4ADwAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAVeHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+ABYAcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2U0LmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAddXEAfgAPAAAAAXVxAH4ADwAAAAJ1cQB+AA8AAAAWdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAAAXcEAAAACnEAfgALeHhwdAAHZ28xZm9ybXEAfgANcQB+ABdxAH4AGHQAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+AA8AAAABdXEAfgAPAAAAAnVxAH4ADwAAAB11cQB+AA8AAAAGdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28xZm9ybTpnbzFidXR0b25xAH4AC3EAfgAXcQB+ABh0ABJqYXZheC5mYWNlcy5CdXR0b25wc3IAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5TdGF0ZUhvbGRlclNhdmVyWcqzPZOczU0CAAJMAAljbGFzc05hbWVxAH4AAkwACnNhdmVkU3RhdGV0ABJMamF2YS9sYW5nL09iamVjdDt4cHQAKGNvbS5zdW4uZmFjZXMudXRpbC5Db25zdGFudE1ldGhvZEJpbmRpbmd0AANnbzFwcQB+ABhxAH4AGHQADmJhY2sgdG8gcGFnZSAxcHBwcQB+ABhxAH4AGHBwcHBwcHBwcHBwcHBwcHBxAH4AGHEAfgAYcHBwcHQABnN1Ym1pdHVxAH4ADwAAAAA="
/>
+ <input type="hidden" name="go1form" value="go1form" /></form>
+
+</HTML></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>8</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+ <ses:uri>/jsfWeb/jpfFaces/page4.faces</ses:uri>
+ <ses:method>POST</ses:method>
+ <ses:parameters>
+ <ses:parameter>
+ <ses:name>com.sun.faces.VIEW</ses:name>
+
<ses:value>rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAABdwQAAAAKc3EAfgAAcHQALGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kQnV0dG9ucHQACWdvMWJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzFmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAPAAAABHVxAH4ADwAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAVeHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+ABYAcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2U0LmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAddXEAfgAPAAAAAXVxAH4ADwAAAAJ1cQB+AA8AAAAWdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAAAXcEAAAACnEAfgALeHhwdAAHZ28xZm9ybXEAfgANcQB+ABdxAH4AGHQAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+AA8AAAABdXEAfgAPAAAAAnVxAH4ADwAAAB11cQB+AA8AAAAGdXEAfgAPAAAACHNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28xZm9ybTpnbzFidXR0b25xAH4AC3EAfgAXcQB+ABh0ABJqYXZheC5mYWNlcy5CdXR0b25wc3IAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5TdGF0ZUhvbGRlclNhdmVyWcqzPZOczU0CAAJMAAljbGFzc05hbWVxAH4AAkwACnNhdmVkU3RhdGV0ABJMamF2YS9sYW5nL09iamVjdDt4cHQAKGNvbS5zdW4uZmFjZXMudXRpbC5Db25zdGFudE1ldGhvZEJpbmRpbmd0AANnbzFwcQB+ABhxAH4AGHQADmJhY2sgdG8gcGFnZSAxcHBwcQB+ABhxAH4AGHBwcHBwcHBwcHBwcHBwcHBxAH4AGHEAfgAYcHBwcHQABnN1Ym1pdHVxAH4ADwAAAAA=</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go1form</ses:name>
+ <ses:value>go1form</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>go1form:go1button</ses:name>
+ <ses:value>back to page 1</ses:value>
+ </ses:parameter>
+ </ses:parameters>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:cookie>
+ </ses:cookies>
+ <ses:headers>
+ <ses:header>
+ <ses:name>accept</ses:name>
+
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-charset</ses:name>
+ <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-encoding</ses:name>
+ <ses:value>gzip,deflate</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-language</ses:name>
+ <ses:value>en-us,en;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>connection</ses:name>
+ <ses:value>keep-alive</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-length</ses:name>
+ <ses:value>1938</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>content-type</ses:name>
+ <ses:value>application/x-www-form-urlencoded</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>cookie</ses:name>
+
<ses:value>JSESSIONID=50F16FFC5F3E9F9E0095E598F7FAD65C</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>referer</ses:name>
+
<ses:value>http://localhost:8080/jsfWeb/jpfFaces/page1.faces</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><html>
+ <head> <title>Page Flow / JSF</title> </head>
+ <body bgcolor="white">
+ <h3>Page Flow / JSF: page 1</h3>
+
+ <form id="go2form" method="post"
action="/jsfWeb/jpfFaces/page1.faces"
enctype="application/x-www-form-urlencoded">
+
+ <input id="go2form:foo" type="text" name="go2form:foo" />
+ <br/>
+ <a id="go2form:go2button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go2button';
document.forms['go2form'].submit(); return false;">go to page2 (pass a
form)</a>
+ - type "stay" to make the CommandHandler return null
+ <br/>
+ <a id="go2form:go3button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go3button';
document.forms['go2form'].submit(); return false;">go to page3 (no form)</a>
+ <br/>
+ <a id="go2form:go4button" href="#"
onclick="document.forms['go2form']['go2form:_idcl'].value='go2form:go4button';
document.forms['go2form'].submit(); return false;">go to page4 (no
CommandHandler)</a>
+ <input type="hidden" name="com.sun.faces.VIEW"
value="rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAAEdwQAAAAKc3EAfgAAcHQAKGphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxJbnB1dFRleHRwdAADZm9vc3EAfgAAcHQAKmphdmF4LmZhY2VzLmNvbXBvbmVudC5odG1sLkh0bWxDb21tYW5kTGlua3B0AAlnbzJidXR0b25zcQB+AABwcQB+AA1wdAAJZ28zYnV0dG9uc3EAfgAAcHEAfgANcHQACWdvNGJ1dHRvbnh0ACNqYXZheC5mYWNlcy5jb21wb25lbnQuaHRtbC5IdG1sRm9ybXB0AAdnbzJmb3JteHQAIGphdmF4LmZhY2VzLmNvbXBvbmVudC5VSVZpZXdSb290cHB1cgATW0xqYXZhLmxhbmcuT2JqZWN0O5DOWJ8QcylsAgAAeHAAAAACdXEAfgAWAAAABHVxAH4AFgAAAAhzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQAJGphdmF4LmZhY2VzLndlYmFwcC5DVVJSRU5UX1ZJRVdfUk9PVHEAfgAceHBwcHNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAFzcQB+AB0AcHB0AApIVE1MX0JBU0lDdAATL2pwZkZhY2VzL3BhZ2UxLmpzcHNyABBqYXZhLnV0aWwuTG9jYWxlfvgRYJww+ewCAARJAAhoYXNoY29kZUwAB2NvdW50cnlxAH4AAkwACGxhbmd1YWdlcQB+AAJMAAd2YXJpYW50cQB+AAJ4cP////90AAB0AAJlbnEAfgAkdXEAfgAWAAAAAXVxAH4AFgAAAAJ1cQB+ABYAAAAWdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAXQAIGphdmF4LmZhY2VzLndlYmFwcC5DT01QT05FTlRfSURTc3EAfgAFAAAABHcEAAAACnEAfgALcQB+AA5xAH4AEHEAfgASeHhwdAAHZ28yZm9ybXEAfgAUcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLkZvcm1wcHBwdAAhYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAEdXEAfgAWAAAAAnVxAH4AFgAAAB91cQB+ABYAAAAKdXEAfgAWAAAAA3VxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4dXEAfgAWAAAAAnVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAV2YWx1ZXVxAH4AFgAAAAFzcgAmamF2YXguZmFjZXMuY29tcG9uZW50LlN0YXRlSG9sZGVyU2F2ZXJZyrM9k5zNTQIAAkwACWNsYXNzTmFtZXEAfgACTAAKc2F2ZWRTdGF0ZXQAEkxqYXZhL2xhbmcvT2JqZWN0O3hwdAAhY29tLnN1bi5mYWNlcy5lbC5WYWx1ZUJpbmRpbmdJbXBsdAALYmFja2luZy5mb290AAtnbzJmb3JtOmZvb3EAfgALcQB+AB5xAH4AH3QAEGphdmF4LmZhY2VzLlRleHRwcHBxAH4AH3EAfgAfcQB+AB9xAH4AHnEAfgAfcQB+AB9wcHBwcHBxAH4AH3EAfgAfcHNyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHCAAAAAcQB+AB9wcHBwcHBwcHBwcHBwcHEAfgAfcQB+AB9zcQB+AEOAAAAAcQB+AB9wcHBwdXEAfgAWAAAAAHVxAH4AFgAAAAJ1cQB+ABYAAAAcdXEAfgAWAAAABnVxAH4AFgAAAAhzcQB+ABo/QAAAAAAADHcIAAAAEAAAAAB4cHQAEWdvMmZvcm06Z28yYnV0dG9ucQB+AA5xAH4AHnEAfgAfdAAQamF2YXguZmFjZXMuTGlua3BzcQB+ADx0AEFvcmcuYXBhY2hlLmJlZWhpdmUubmV0dWkucGFnZWZsb3cuZmFjZXMuQmFja2luZ0NsYXNzTWV0aG9kQmluZGluZ3VxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjJwc3EAfgA8dAAiY29tLnN1bi5mYWNlcy5lbC5NZXRob2RCaW5kaW5nSW1wbHVxAH4AFgAAAAR0AA9jb21tYW5kSGFuZGxlcjJzcQB+ADxxAH4AP3QAB2JhY2tpbmdwdAAaI3tiYWNraW5nLmNvbW1hbmRIYW5kbGVyMn1wcQB+AB9xAH4AH3QAGWdvIHRvIHBhZ2UyIChwYXNzIGEgZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzNidXR0b25xAH4AEHEAfgAecQB+AB9xAH4ATnBzcQB+ADxxAH4AUHVxAH4AFgAAAAN0AA9jb21tYW5kSGFuZGxlcjNwc3EAfgA8cQB+AFR1cQB+ABYAAAAEdAAPY29tbWFuZEhhbmRsZXIzc3EAfgA8cQB+AD90AAdiYWNraW5ncHQAGiN7YmFja2luZy5jb21tYW5kSGFuZGxlcjN9cHEAfgAfcQB+AB90ABVnbyB0byBwYWdlMyAobm8gZm9ybSlwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB1cQB+ABYAAAAAdXEAfgAWAAAAAnVxAH4AFgAAABx1cQB+ABYAAAAGdXEAfgAWAAAACHNxAH4AGj9AAAAAAAAMdwgAAAAQAAAAAHhwdAARZ28yZm9ybTpnbzRidXR0b25xAH4AEnEAfgAecQB+AB9xAH4ATnBzcQB+ADx0AChjb20uc3VuLmZhY2VzLnV0aWwuQ29uc3RhbnRNZXRob2RCaW5kaW5ndAADZ280cHEAfgAfcQB+AB90AB9nbyB0byBwYWdlNCAobm8gQ29tbWFuZEhhbmRsZXIpcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdXEAfgAWAAAAAA=="
/>
+ <input type="hidden" name="go2form" value="go2form" /><input
type="hidden" name="go2form:_idcl" /></form>
+
+</HTML></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ </ses:tests>
+ <ses:endDate>23 Aug 2004, 01:33:12.353 PM MDT</ses:endDate>
+ <ses:testCount>8</ses:testCount>
+</ses:recorderSession>